<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>GitHub Dockerfile Monthly Trending</title>
    <description>Monthly Trending of Dockerfile in GitHub</description>
    <pubDate>Sat, 14 Mar 2026 01:53:05 GMT</pubDate>
    <link>http://mshibanami.github.io/GitHubTrendingRSS</link>
    
    <item>
      <title>oxsecurity/megalinter</title>
      <link>https://github.com/oxsecurity/megalinter</link>
      <description>&lt;p&gt;🦙 MegaLinter analyzes 50 languages, 22 formats, 21 tooling formats, excessive copy-pastes, spelling mistakes and security issues in your repository sources with a GitHub Action, other CI tools or locally.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://megalinter.io&quot; target=&quot;blank&quot; title=&quot;Visit MegaLinter Web Site&quot;&gt; &lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/megalinter-banner.png&quot; alt=&quot;MegaLinter&quot; min-height=&quot;200px&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;!-- header-logo-end --&gt; 
&lt;!-- mega-linter-title-start --&gt; 
&lt;h1&gt;MegaLinter, by &lt;a href=&quot;https://www.ox.security/?ref=megalinter&quot;&gt;&lt;img src=&quot;https://www.ox.security/wp-content/uploads/2022/06/logo.svg?ref=megalinter_readme&quot; alt=&quot;OX Security&quot; /&gt;&lt;/a&gt;&lt;/h1&gt; 
&lt;!-- mega-linter-title-end --&gt; 
&lt;!-- mega-linter-badges-start --&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/oxsecurity/megalinter?sort=semver&quot; alt=&quot;GitHub release&quot; /&gt; &lt;a href=&quot;https://megalinter.io/flavors/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docker%20pulls-5.5M-blue&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://npmjs.org/package/mega-linter-runner&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/dw/mega-linter-runner.svg?sanitize=true&quot; alt=&quot;Downloads/week&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/stargazers/&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/oxsecurity/megalinter?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/actions?query=workflow%3AMegaLinter+branch%3Amain&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/workflows/MegaLinter/badge.svg?branch=main&quot; alt=&quot;MegaLinter&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://codecov.io/gh/oxsecurity/megalinter&quot;&gt;&lt;img src=&quot;https://codecov.io/gh/oxsecurity/megalinter/branch/main/graph/badge.svg?sanitize=true&quot; alt=&quot;codecov&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;!-- gh-dependents-info-used-by-start --&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/raw/main/./docs/used-by-stats.md&quot;&gt;&lt;img src=&quot;https://img.shields.io/static/v1?label=Used%20by&amp;amp;message=5494&amp;amp;color=informational&amp;amp;logo=slickpic&quot; alt=&quot;Generated by github-dependents-info&quot; /&gt;&lt;/a&gt;
 &lt;!-- gh-dependents-info-used-by-end --&gt; &lt;a href=&quot;https://github.com/aquasecurity/trivy&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Trivy-secured-green?logo=docker&quot; alt=&quot;Secured with Trivy&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/graphs/contributors/&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/contributors/oxsecurity/megalinter.svg?sanitize=true&quot; alt=&quot;GitHub contributors&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/sponsors/nvuillam&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/sponsors/nvuillam&quot; alt=&quot;GitHub Sponsors&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/raw/main/.github/CONTRIBUTING.md&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square&quot; alt=&quot;PRs Welcome&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://twitter.com/intent/tweet?text=Check+MegaLinter+to+say+goodbye+to+dirty+code+in+your+projects+%3A%29+100%25+free+and+open+source+for+all+uses&amp;amp;url=https://megalinter.io/&amp;amp;via=NicolasVuillamy&amp;amp;hashtags=linters,code,quality,ci,python,java,golang,c,dotnet,kotlin,rust,scala,salesforce,terraform&quot;&gt;&lt;img src=&quot;https://img.shields.io/twitter/url/http/shields.io.svg?style=social&quot; alt=&quot;Tweet&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;!-- mega-linter-badges-end --&gt; 
&lt;!-- welcome-phrase-start --&gt; 
&lt;p&gt;MegaLinter is an &lt;strong&gt;open-source&lt;/strong&gt; tool for &lt;strong&gt;CI/CD workflows&lt;/strong&gt; that analyzes the &lt;strong&gt;consistency of your code&lt;/strong&gt;, &lt;strong&gt;IaC&lt;/strong&gt;, &lt;strong&gt;configuration&lt;/strong&gt;, and &lt;strong&gt;scripts&lt;/strong&gt; in your repository to &lt;strong&gt;ensure all your project sources are clean and formatted&lt;/strong&gt;, no matter which IDE or toolbox is used by your developers. Powered by &lt;a href=&quot;https://www.ox.security/?ref=megalinter&quot;&gt;&lt;strong&gt;OX Security&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Supports &lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#languages&quot;&gt;&lt;strong&gt;69&lt;/strong&gt; languages&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#formats&quot;&gt;&lt;strong&gt;23&lt;/strong&gt; formats&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#tooling-formats&quot;&gt;&lt;strong&gt;21&lt;/strong&gt; tooling formats&lt;/a&gt;, and is &lt;strong&gt;ready to use out of the box&lt;/strong&gt; as a GitHub Action or with any CI system. It is &lt;strong&gt;highly configurable&lt;/strong&gt; and &lt;strong&gt;free for all uses&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;MegaLinter has &lt;strong&gt;native integrations&lt;/strong&gt; with many major CI/CD tools.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/GitHubCommentReporter.md&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/integrations/github.png?raw=true%3E&quot; alt=&quot;GitHub&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/GitlabCommentReporter.md&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/integrations/gitlab.png?raw=true%3E&quot; alt=&quot;GitLab&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/AzureCommentReporter.md&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/integrations/azure.png?raw=true%3E&quot; alt=&quot;Azure&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/BitbucketCommentReporter.md&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/integrations/bitbucket.png?raw=true%3E&quot; alt=&quot;Bitbucket&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/install-jenkins.md&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/integrations/jenkins.png?raw=true%3E&quot; alt=&quot;Jenkins&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/install-drone.md&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/integrations/drone.png?raw=true%3E&quot; alt=&quot;Drone&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/install-concourse.md&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/integrations/concourse.png?raw=true%3E&quot; alt=&quot;Concourse&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/install-docker.md&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/integrations/docker.png?raw=true%3E&quot; alt=&quot;Docker&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/SarifReporter.md&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/integrations/sarif.png?raw=true%3E&quot; alt=&quot;SARIF&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/ApiReporter.md&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/integrations/grafana.png?raw=true%3E&quot; alt=&quot;Grafana&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;!-- welcome-phrase-end --&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/MegaLinter-banner-Medium.gif?raw=true&quot; alt=&quot;MegaLinter Presentation GIF&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/issues/6192&quot;&gt;&lt;strong&gt;Upgrade to MegaLinter v9 :)&lt;/strong&gt;&lt;/a&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Use the new &lt;a href=&quot;https://megalinter.io/latest/llm-advisor/&quot;&gt;LLM Advisor&lt;/a&gt; that will tell you how to fix linters issues&lt;/li&gt; 
 &lt;li&gt;Create your own &lt;a href=&quot;https://megalinter.io/latest/custom-flavors/&quot;&gt;MegaLinter Custom Flavors&lt;/a&gt; to improve performance&lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- online-doc-start --&gt; 
&lt;p&gt;Before you go further, see the &lt;a href=&quot;https://megalinter.io/&quot;&gt;&lt;strong&gt;online documentation website, which offers much easier navigation than this README&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;!-- online-doc-end --&gt; 
&lt;!-- table-of-contents-start --&gt; 
&lt;h2&gt;Table of Contents&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#why-megalinter&quot;&gt;Why MegaLinter&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#quick-start&quot;&gt;Quick Start&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#supported-linters&quot;&gt;Supported Linters&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#languages&quot;&gt;Languages&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#formats&quot;&gt;Formats&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#tooling-formats&quot;&gt;Tooling formats&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#other&quot;&gt;Other&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#installation&quot;&gt;Installation&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#assisted-installation&quot;&gt;Assisted installation&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#which-version-to-use-&quot;&gt;Which version to use ?&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#github-action&quot;&gt;GitHub Action&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#gitlab-ci&quot;&gt;GitLab CI&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#azure-pipelines&quot;&gt;Azure Pipelines&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#single-repository&quot;&gt;Single Repository&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#central-repository&quot;&gt;Central Repository&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#pull-request-comments&quot;&gt;Pull Request Comments&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#detailed-tutorial&quot;&gt;Detailed Tutorial&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#bitbucket-pipelines&quot;&gt;Bitbucket Pipelines&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#jenkins&quot;&gt;Jenkins&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#concourse&quot;&gt;Concourse&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#pipeline-step&quot;&gt;Pipeline step&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#use-it-as-a-reusable-task&quot;&gt;Use it as a reusable task&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#drone-ci&quot;&gt;Drone CI&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#optional-adjusting-trigger-rules&quot;&gt;(Optional) Adjusting trigger rules&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#docker-container&quot;&gt;Docker container&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#run-megalinter-locally&quot;&gt;Run MegaLinter locally&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#configuration&quot;&gt;Configuration&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#mega-linteryml-file&quot;&gt;.mega-linter.yml file&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#common-variables&quot;&gt;Common variables&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#activation-and-deactivation&quot;&gt;Activation and deactivation&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#filter-linted-files&quot;&gt;Filter linted files&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#apply-fixes&quot;&gt;Apply fixes&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#apply-fixes-issues&quot;&gt;Apply fixes issues&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#notes&quot;&gt;Notes&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#linter-specific-variables&quot;&gt;Linter specific variables&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#pre-commands&quot;&gt;Pre-commands&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#post-commands&quot;&gt;Post-commands&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#environment-variables-security&quot;&gt;Environment variables security&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#secured-env-variables&quot;&gt;Secured env variables&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#secured-configuration-examples&quot;&gt;Secured configuration examples&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#default-secured-variables&quot;&gt;Default secured variables&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#unhide-variables-for-linters&quot;&gt;Unhide variables for linters&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#cli-lint-mode&quot;&gt;CLI lint mode&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#reporters&quot;&gt;Reporters&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#flavors&quot;&gt;Flavors&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#badge&quot;&gt;Badge&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#markdown&quot;&gt;Markdown&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#restructuredtext&quot;&gt;reStructuredText&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#plugins&quot;&gt;Plugins&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#external-plugins-catalog&quot;&gt;External Plugins Catalog&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#use-external-plugins&quot;&gt;Use external plugins&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#example&quot;&gt;Example&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#create-your-own-plugin&quot;&gt;Create your own plugin&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#limitations&quot;&gt;Limitations&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#they-talk-about-megalinter&quot;&gt;They talk about MegaLinter&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#english-articles&quot;&gt;English articles&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#french-articles&quot;&gt;French articles&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#videos&quot;&gt;Videos&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#web-sites&quot;&gt;Web Sites&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#linters&quot;&gt;Linters&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#frequently-asked-questions&quot;&gt;Frequently Asked Questions&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#how-to-contribute&quot;&gt;How to contribute&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#special-thanks&quot;&gt;Special thanks&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#maintainers&quot;&gt;Maintainers&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#contributors&quot;&gt;Contributors&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#open-source-teams&quot;&gt;Open-source teams&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#super-linter-team&quot;&gt;Super-Linter team&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#license&quot;&gt;License&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#megalinter-vs-super-linter&quot;&gt;MegaLinter vs Super-Linter&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#security&quot;&gt;Security&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#performance&quot;&gt;Performance&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#more-languages-and-formats-linted&quot;&gt;More languages and formats linted&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#automatically-apply-formatting-and-fixes&quot;&gt;Automatically apply formatting and fixes&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#run-locally&quot;&gt;Run locally&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#reports&quot;&gt;Reports&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#capabilities&quot;&gt;Capabilities&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#additional-reporters&quot;&gt;Additional Reporters&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#enhanced-configuration&quot;&gt;Enhanced configuration&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#enhanced-documentation&quot;&gt;Enhanced documentation&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#plugin-management&quot;&gt;Plugin management&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#simplify-architecture-and-evolutionary-maintenance&quot;&gt;Simplify architecture and evolutionary maintenance&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#improve-robustness--stability&quot;&gt;Improve robustness &amp;amp; stability&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- table-of-contents-end --&gt; 
&lt;h2&gt;Why MegaLinter&lt;/h2&gt; 
&lt;p&gt;Projects need to contain clean code in order to &lt;strong&gt;avoid technical debt&lt;/strong&gt;, which makes &lt;strong&gt;ongoing maintenance harder and more time-consuming&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;By using &lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#supported-linters&quot;&gt;&lt;strong&gt;code formatters and code linters&lt;/strong&gt;&lt;/a&gt;, you ensure that your &lt;strong&gt;codebase is easier to read&lt;/strong&gt; and &lt;strong&gt;follows best practices&lt;/strong&gt;, from kickoff through each step of the project lifecycle.&lt;/p&gt; 
&lt;p&gt;Not all developers use linters in their IDEs, which makes code reviews harder and longer to process.&lt;/p&gt; 
&lt;p&gt;By using &lt;strong&gt;MegaLinter&lt;/strong&gt;, you&#39;ll enjoy the following benefits for your team:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;At &lt;strong&gt;each pull request&lt;/strong&gt;, it &lt;strong&gt;automatically analyzes all updated code across all languages&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;By reading error logs, &lt;strong&gt;developers learn best practices&lt;/strong&gt; for the languages they use.&lt;/li&gt; 
 &lt;li&gt;The &lt;a href=&quot;https://megalinter.io/&quot;&gt;&lt;strong&gt;MegaLinter documentation&lt;/strong&gt;&lt;/a&gt; provides a &lt;strong&gt;list of IDE plugins for each linter&lt;/strong&gt;, so developers know which linter and plugins to install.&lt;/li&gt; 
 &lt;li&gt;MegaLinter &lt;strong&gt;works out of the box&lt;/strong&gt; after a &lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#quick-start&quot;&gt;&lt;strong&gt;quick setup&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Formatting and fixes&lt;/strong&gt; can be automatically &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-apply-fixes.md&quot;&gt;&lt;strong&gt;applied directly to the Git branch&lt;/strong&gt;&lt;/a&gt; or &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/UpdatedSourcesReporter.md&quot;&gt;&lt;strong&gt;provided in reports&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;This tool is &lt;strong&gt;100% open source&lt;/strong&gt; and &lt;strong&gt;free for all uses&lt;/strong&gt; (personal, professional, public, and private repositories).&lt;/li&gt; 
 &lt;li&gt;MegaLinter can run on &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/install-assisted.md&quot;&gt;&lt;strong&gt;any CI tool&lt;/strong&gt;&lt;/a&gt; and be &lt;a href=&quot;https://megalinter.io/mega-linter-runner/&quot;&gt;&lt;strong&gt;run locally&lt;/strong&gt;&lt;/a&gt;: &lt;strong&gt;no need to authorize an external application&lt;/strong&gt;, and &lt;strong&gt;your codebase never leaves your tooling ecosystem&lt;/strong&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- quick-start-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Quick Start with MegaLinter
description: Setup MegaLinter in 5 minutes thanks to its assisted installation tool
---
--&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Run &lt;code&gt;npx mega-linter-runner --install&lt;/code&gt; to generate configuration files (you need &lt;a href=&quot;https://nodejs.org/en/&quot;&gt;Node.js&lt;/a&gt; installed).&lt;/li&gt; 
 &lt;li&gt;Commit, push, and create a pull request.&lt;/li&gt; 
 &lt;li&gt;Watch!&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/mega-linter-runner-generator.gif?raw=true&quot; alt=&quot;Runner Install&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;:&lt;/p&gt; 
&lt;!-- # MAJOR-RELEASE-IMPACTED --&gt; 
&lt;ul&gt; 
 &lt;li&gt;This repo is a hard fork of &lt;a href=&quot;https://github.com/super-linter/super-linter&quot;&gt;GitHub Super-Linter&lt;/a&gt;, rewritten in Python to add &lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#mega-linter-vs-super-linter&quot;&gt;many additional features&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;If you are a Super-Linter user, you can transparently &lt;strong&gt;switch to MegaLinter and keep the same configuration&lt;/strong&gt; (just replace &lt;code&gt;super-linter/super-linter@v3&lt;/code&gt; with &lt;code&gt;oxsecurity/megalinter@v9&lt;/code&gt; in your GitHub Action YAML file, &lt;a href=&quot;https://github.com/nvuillam/npm-groovy-lint/pull/109&quot;&gt;like on this PR&lt;/a&gt;).&lt;/li&gt; 
 &lt;li&gt;If you want to use MegaLinter&#39;s extra features (recommended), please take 5 minutes to use the &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/install-assisted.md&quot;&gt;assisted installation&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;For a beginner-friendly example of getting started with MegaLinter, check out &lt;a href=&quot;https://ayyjohn.com/posts/linting-a-jekyll-blog-with-mega-linter&quot;&gt;this blog post&lt;/a&gt; by Alec Johnson.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- quick-start-section-end --&gt; 
&lt;!-- supported-linters-section-start --&gt; 
&lt;!-- markdown-headers
---
title: List of the 100+ supported linters embedded in MegaLinter
description: Full list of all linters for all languages and formats that are available in MegaLinter
---
--&gt; 
&lt;h2&gt;Supported Linters&lt;/h2&gt; 
&lt;p&gt;All linters are integrated into the &lt;a href=&quot;https://hub.docker.com/r/oxsecurity/megalinter&quot;&gt;MegaLinter Docker image&lt;/a&gt;, which is frequently updated with their latest versions.&lt;/p&gt; 
&lt;!-- languages-section-start--&gt; 
&lt;!-- linters-table-start --&gt; 
&lt;h3&gt;Languages&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th align=&quot;center&quot;&gt;
    &lt;!-- --&gt;&lt;/th&gt; 
   &lt;th&gt;Language&lt;/th&gt; 
   &lt;th&gt;Linter&lt;/th&gt; 
   &lt;th align=&quot;center&quot;&gt;Additional&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/bash.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash.md&quot;&gt;&lt;strong&gt;BASH&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash_bash_exec.md&quot;&gt;&lt;strong&gt;bash-exec&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash_bash_exec.md&quot;&gt;&lt;em&gt;BASH_EXEC&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/bash.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash.md&quot;&gt;&lt;strong&gt;BASH&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash_shellcheck.md&quot;&gt;&lt;strong&gt;shellcheck&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash_shellcheck.md&quot;&gt;&lt;em&gt;BASH_SHELLCHECK&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/koalaman/shellcheck&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/koalaman/shellcheck?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/bash.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash.md&quot;&gt;&lt;strong&gt;BASH&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash_shfmt.md&quot;&gt;&lt;strong&gt;shfmt&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash_shfmt.md&quot;&gt;&lt;em&gt;BASH_SHFMT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/mvdan/sh&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/mvdan/sh?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/c.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c.md&quot;&gt;&lt;strong&gt;C&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c_cppcheck.md&quot;&gt;&lt;strong&gt;cppcheck&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c_cppcheck.md&quot;&gt;&lt;em&gt;C_CPPCHECK&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/c.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c.md&quot;&gt;&lt;strong&gt;C&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c_cpplint.md&quot;&gt;&lt;strong&gt;cpplint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c_cpplint.md&quot;&gt;&lt;em&gt;C_CPPLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/cpplint/cpplint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/cpplint/cpplint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/c.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c.md&quot;&gt;&lt;strong&gt;C&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c_clang_format.md&quot;&gt;&lt;strong&gt;clang-format&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c_clang_format.md&quot;&gt;&lt;em&gt;C_CLANG_FORMAT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/llvm/llvm-project&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/llvm/llvm-project?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/clojure.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/clojure.md&quot;&gt;&lt;strong&gt;CLOJURE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/clojure_clj_kondo.md&quot;&gt;&lt;strong&gt;clj-kondo&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/clojure_clj_kondo.md&quot;&gt;&lt;em&gt;CLOJURE_CLJ_KONDO&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/borkdude/clj-kondo&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/borkdude/clj-kondo?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/clojure.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/clojure.md&quot;&gt;&lt;strong&gt;CLOJURE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/clojure_cljstyle.md&quot;&gt;&lt;strong&gt;cljstyle&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/clojure_cljstyle.md&quot;&gt;&lt;em&gt;CLOJURE_CLJSTYLE&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/greglook/cljstyle&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/greglook/cljstyle?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/coffee.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/coffee.md&quot;&gt;&lt;strong&gt;COFFEE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/coffee_coffeelint.md&quot;&gt;&lt;strong&gt;coffeelint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/coffee_coffeelint.md&quot;&gt;&lt;em&gt;COFFEE_COFFEELINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/clutchski/coffeelint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/clutchski/coffeelint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/cpp.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp.md&quot;&gt;&lt;strong&gt;C++&lt;/strong&gt; (CPP)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp_cppcheck.md&quot;&gt;&lt;strong&gt;cppcheck&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp_cppcheck.md&quot;&gt;&lt;em&gt;CPP_CPPCHECK&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/cpp.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp.md&quot;&gt;&lt;strong&gt;C++&lt;/strong&gt; (CPP)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp_cpplint.md&quot;&gt;&lt;strong&gt;cpplint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp_cpplint.md&quot;&gt;&lt;em&gt;CPP_CPPLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/cpplint/cpplint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/cpplint/cpplint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/cpp.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp.md&quot;&gt;&lt;strong&gt;C++&lt;/strong&gt; (CPP)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp_clang_format.md&quot;&gt;&lt;strong&gt;clang-format&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp_clang_format.md&quot;&gt;&lt;em&gt;CPP_CLANG_FORMAT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/llvm/llvm-project&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/llvm/llvm-project?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/csharp.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp.md&quot;&gt;&lt;strong&gt;C#&lt;/strong&gt; (CSHARP)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp_dotnet_format.md&quot;&gt;&lt;strong&gt;dotnet-format&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp_dotnet_format.md&quot;&gt;&lt;em&gt;CSHARP_DOTNET_FORMAT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/dotnet/sdk&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/dotnet/sdk?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/csharp.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp.md&quot;&gt;&lt;strong&gt;C#&lt;/strong&gt; (CSHARP)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp_csharpier.md&quot;&gt;&lt;strong&gt;csharpier&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp_csharpier.md&quot;&gt;&lt;em&gt;CSHARP_CSHARPIER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/belav/csharpier&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/belav/csharpier?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/csharp.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp.md&quot;&gt;&lt;strong&gt;C#&lt;/strong&gt; (CSHARP)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp_roslynator.md&quot;&gt;&lt;strong&gt;roslynator&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp_roslynator.md&quot;&gt;&lt;em&gt;CSHARP_ROSLYNATOR&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/dotnet/Roslynator&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/dotnet/Roslynator?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/dart.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/dart.md&quot;&gt;&lt;strong&gt;DART&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/dart_dartanalyzer.md&quot;&gt;&lt;strong&gt;dartanalyzer&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/dart_dartanalyzer.md&quot;&gt;&lt;em&gt;DART_DARTANALYZER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/dart-lang/sdk&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/dart-lang/sdk?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/go.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/go.md&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/go_golangci_lint.md&quot;&gt;&lt;strong&gt;golangci-lint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/go_golangci_lint.md&quot;&gt;&lt;em&gt;GO_GOLANGCI_LINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/golangci/golangci-lint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/golangci/golangci-lint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/go.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/go.md&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/go_revive.md&quot;&gt;&lt;strong&gt;revive&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/go_revive.md&quot;&gt;&lt;em&gt;GO_REVIVE&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/mgechev/revive&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/mgechev/revive?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/groovy.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/groovy.md&quot;&gt;&lt;strong&gt;GROOVY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/groovy_npm_groovy_lint.md&quot;&gt;&lt;strong&gt;npm-groovy-lint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/groovy_npm_groovy_lint.md&quot;&gt;&lt;em&gt;GROOVY_NPM_GROOVY_LINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/nvuillam/npm-groovy-lint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/nvuillam/npm-groovy-lint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/java.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/java.md&quot;&gt;&lt;strong&gt;JAVA&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/java_checkstyle.md&quot;&gt;&lt;strong&gt;checkstyle&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/java_checkstyle.md&quot;&gt;&lt;em&gt;JAVA_CHECKSTYLE&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/checkstyle/checkstyle&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/checkstyle/checkstyle?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/java.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/java.md&quot;&gt;&lt;strong&gt;JAVA&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/java_pmd.md&quot;&gt;&lt;strong&gt;pmd&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/java_pmd.md&quot;&gt;&lt;em&gt;JAVA_PMD&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/pmd/pmd&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/pmd/pmd?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/javascript.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript.md&quot;&gt;&lt;strong&gt;JAVASCRIPT&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript_eslint.md&quot;&gt;&lt;strong&gt;eslint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript_eslint.md&quot;&gt;&lt;em&gt;JAVASCRIPT_ES&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/eslint/eslint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/eslint/eslint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/javascript.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript.md&quot;&gt;&lt;strong&gt;JAVASCRIPT&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript_standard.md&quot;&gt;&lt;strong&gt;standard&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript_standard.md&quot;&gt;&lt;em&gt;JAVASCRIPT_STANDARD&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/standard/standard&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/standard/standard?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/javascript.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript.md&quot;&gt;&lt;strong&gt;JAVASCRIPT&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript_prettier.md&quot;&gt;&lt;strong&gt;prettier&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript_prettier.md&quot;&gt;&lt;em&gt;JAVASCRIPT_PRETTIER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/prettier/prettier&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/prettier/prettier?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/jsx.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/jsx.md&quot;&gt;&lt;strong&gt;JSX&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/jsx_eslint.md&quot;&gt;&lt;strong&gt;eslint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/jsx_eslint.md&quot;&gt;&lt;em&gt;JSX_ESLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/yannickcr/eslint-plugin-react&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/yannickcr/eslint-plugin-react?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/kotlin.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kotlin.md&quot;&gt;&lt;strong&gt;KOTLIN&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kotlin_ktlint.md&quot;&gt;&lt;strong&gt;ktlint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kotlin_ktlint.md&quot;&gt;&lt;em&gt;KOTLIN_KTLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/pinterest/ktlint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/pinterest/ktlint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/kotlin.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kotlin.md&quot;&gt;&lt;strong&gt;KOTLIN&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kotlin_detekt.md&quot;&gt;&lt;strong&gt;detekt&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kotlin_detekt.md&quot;&gt;&lt;em&gt;KOTLIN_DETEKT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/detekt/detekt&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/detekt/detekt?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/lua.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua.md&quot;&gt;&lt;strong&gt;LUA&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua_luacheck.md&quot;&gt;&lt;strong&gt;luacheck&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua_luacheck.md&quot;&gt;&lt;em&gt;LUA_LUACHECK&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/lunarmodules/luacheck&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/lunarmodules/luacheck?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/lua.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua.md&quot;&gt;&lt;strong&gt;LUA&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua_selene.md&quot;&gt;&lt;strong&gt;selene&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua_selene.md&quot;&gt;&lt;em&gt;LUA_SELENE&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-disabled-orange&quot; alt=&quot;disabled&quot; /&gt; &lt;a href=&quot;https://github.com/Kampfkarren/selene&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/Kampfkarren/selene?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/lua.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua.md&quot;&gt;&lt;strong&gt;LUA&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua_stylua.md&quot;&gt;&lt;strong&gt;stylua&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua_stylua.md&quot;&gt;&lt;em&gt;LUA_STYLUA&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/JohnnyMorganz/StyLua&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/JohnnyMorganz/StyLua?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/makefile.md&quot;&gt;&lt;strong&gt;MAKEFILE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/makefile_checkmake.md&quot;&gt;&lt;strong&gt;checkmake&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/makefile_checkmake.md&quot;&gt;&lt;em&gt;MAKEFILE_CHECKMAKE&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-disabled-orange&quot; alt=&quot;disabled&quot; /&gt; &lt;a href=&quot;https://github.com/checkmake/checkmake&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/checkmake/checkmake?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/perl.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/perl.md&quot;&gt;&lt;strong&gt;PERL&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/perl_perlcritic.md&quot;&gt;&lt;strong&gt;perlcritic&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/perl_perlcritic.md&quot;&gt;&lt;em&gt;PERL_PERLCRITIC&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/Perl-Critic/Perl-Critic&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/Perl-Critic/Perl-Critic?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/php.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php.md&quot;&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_phpcs.md&quot;&gt;&lt;strong&gt;phpcs&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_phpcs.md&quot;&gt;&lt;em&gt;PHP_PHPCS&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/PHPCSStandards/PHP_CodeSniffer&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/PHPCSStandards/PHP_CodeSniffer?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/php.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php.md&quot;&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_phpstan.md&quot;&gt;&lt;strong&gt;phpstan&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_phpstan.md&quot;&gt;&lt;em&gt;PHP_PHPSTAN&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/phpstan/phpstan&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/phpstan/phpstan?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/php.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php.md&quot;&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_psalm.md&quot;&gt;&lt;strong&gt;psalm&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_psalm.md&quot;&gt;&lt;em&gt;PHP_PSALM&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/vimeo/psalm&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/vimeo/psalm?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/php.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php.md&quot;&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_phplint.md&quot;&gt;&lt;strong&gt;phplint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_phplint.md&quot;&gt;&lt;em&gt;PHP_PHPLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/overtrue/phplint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/overtrue/phplint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/php.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php.md&quot;&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_php_cs_fixer.md&quot;&gt;&lt;strong&gt;php-cs-fixer&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_php_cs_fixer.md&quot;&gt;&lt;em&gt;PHP_PHPCSFIXER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/PHP-CS-Fixer/PHP-CS-Fixer&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/PHP-CS-Fixer/PHP-CS-Fixer?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/powershell.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/powershell.md&quot;&gt;&lt;strong&gt;POWERSHELL&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/powershell_powershell.md&quot;&gt;&lt;strong&gt;powershell&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/powershell_powershell.md&quot;&gt;&lt;em&gt;POWERSHELL_POWERSHELL&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/PowerShell/PSScriptAnalyzer&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/PowerShell/PSScriptAnalyzer?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/powershell.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/powershell.md&quot;&gt;&lt;strong&gt;POWERSHELL&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/powershell_powershell_formatter.md&quot;&gt;&lt;strong&gt;powershell_formatter&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/powershell_powershell_formatter.md&quot;&gt;&lt;em&gt;POWERSHELL_POWERSHELL_FORMATTER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/PowerShell/PSScriptAnalyzer&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/PowerShell/PSScriptAnalyzer?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md&quot;&gt;&lt;strong&gt;PYTHON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_pylint.md&quot;&gt;&lt;strong&gt;pylint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_pylint.md&quot;&gt;&lt;em&gt;PYTHON_PYLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/pylint-dev/pylint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/pylint-dev/pylint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md&quot;&gt;&lt;strong&gt;PYTHON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_black.md&quot;&gt;&lt;strong&gt;black&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_black.md&quot;&gt;&lt;em&gt;PYTHON_BLACK&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/psf/black&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/psf/black?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md&quot;&gt;&lt;strong&gt;PYTHON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_flake8.md&quot;&gt;&lt;strong&gt;flake8&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_flake8.md&quot;&gt;&lt;em&gt;PYTHON_FLAKE8&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/PyCQA/flake8&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/PyCQA/flake8?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md&quot;&gt;&lt;strong&gt;PYTHON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_isort.md&quot;&gt;&lt;strong&gt;isort&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_isort.md&quot;&gt;&lt;em&gt;PYTHON_ISORT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/PyCQA/isort&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/PyCQA/isort?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md&quot;&gt;&lt;strong&gt;PYTHON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_bandit.md&quot;&gt;&lt;strong&gt;bandit&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_bandit.md&quot;&gt;&lt;em&gt;PYTHON_BANDIT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/PyCQA/bandit&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/PyCQA/bandit?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md&quot;&gt;&lt;strong&gt;PYTHON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_mypy.md&quot;&gt;&lt;strong&gt;mypy&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_mypy.md&quot;&gt;&lt;em&gt;PYTHON_MYPY&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/python/mypy&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/python/mypy?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md&quot;&gt;&lt;strong&gt;PYTHON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_nbqa.md&quot;&gt;&lt;strong&gt;nbqa&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_nbqa.md&quot;&gt;&lt;em&gt;PYTHON_NBQA_MYPY&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/nbQA-dev/nbQA&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/nbQA-dev/nbQA?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md&quot;&gt;&lt;strong&gt;PYTHON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_pyright.md&quot;&gt;&lt;strong&gt;pyright&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_pyright.md&quot;&gt;&lt;em&gt;PYTHON_PYRIGHT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/microsoft/pyright&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/microsoft/pyright?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md&quot;&gt;&lt;strong&gt;PYTHON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_ruff.md&quot;&gt;&lt;strong&gt;ruff&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_ruff.md&quot;&gt;&lt;em&gt;PYTHON_RUFF&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/astral-sh/ruff&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/astral-sh/ruff?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md&quot;&gt;&lt;strong&gt;PYTHON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_ruff_format.md&quot;&gt;&lt;strong&gt;ruff-format&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_ruff_format.md&quot;&gt;&lt;em&gt;PYTHON_RUFF_FORMAT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/astral-sh/ruff&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/astral-sh/ruff?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/r.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/r.md&quot;&gt;&lt;strong&gt;R&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/r_lintr.md&quot;&gt;&lt;strong&gt;lintr&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/r_lintr.md&quot;&gt;&lt;em&gt;R_LINTR&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/r-lib/lintr&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/r-lib/lintr?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/raku.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/raku.md&quot;&gt;&lt;strong&gt;RAKU&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/raku_raku.md&quot;&gt;&lt;strong&gt;raku&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/raku_raku.md&quot;&gt;&lt;em&gt;RAKU_RAKU&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/rakudo/rakudo&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/rakudo/rakudo?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/ruby.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/ruby.md&quot;&gt;&lt;strong&gt;RUBY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/ruby_rubocop.md&quot;&gt;&lt;strong&gt;rubocop&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/ruby_rubocop.md&quot;&gt;&lt;em&gt;RUBY_RUBOCOP&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/rubocop-hq/rubocop&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/rubocop-hq/rubocop?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/rust.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/rust.md&quot;&gt;&lt;strong&gt;RUST&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/rust_clippy.md&quot;&gt;&lt;strong&gt;clippy&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/rust_clippy.md&quot;&gt;&lt;em&gt;RUST_CLIPPY&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/rust-lang/rust-clippy&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/rust-lang/rust-clippy?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/salesforce.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce.md&quot;&gt;&lt;strong&gt;SALESFORCE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_code_analyzer_apex.md&quot;&gt;&lt;strong&gt;code-analyzer-apex&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_code_analyzer_apex.md&quot;&gt;&lt;em&gt;SALESFORCE_CODE_ANALYZER_APEX&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/forcedotcom/code-analyzer&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/forcedotcom/code-analyzer?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/salesforce.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce.md&quot;&gt;&lt;strong&gt;SALESFORCE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_code_analyzer_aura.md&quot;&gt;&lt;strong&gt;code-analyzer-aura&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_code_analyzer_aura.md&quot;&gt;&lt;em&gt;SALESFORCE_CODE_ANALYZER_AURA&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/forcedotcom/code-analyzer&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/forcedotcom/code-analyzer?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/salesforce.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce.md&quot;&gt;&lt;strong&gt;SALESFORCE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_code_analyzer_lwc.md&quot;&gt;&lt;strong&gt;code-analyzer-lwc&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_code_analyzer_lwc.md&quot;&gt;&lt;em&gt;SALESFORCE_CODE_ANALYZER_LWC&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/forcedotcom/code-analyzer&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/forcedotcom/code-analyzer?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/salesforce.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce.md&quot;&gt;&lt;strong&gt;SALESFORCE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_sfdx_scanner_apex.md&quot;&gt;&lt;strong&gt;sfdx-scanner-apex&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_sfdx_scanner_apex.md&quot;&gt;&lt;em&gt;SALESFORCE_SFDX_SCANNER_APEX&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-deprecated-red&quot; alt=&quot;deprecated&quot; /&gt; &lt;a href=&quot;https://github.com/forcedotcom/code-analyzer&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/forcedotcom/code-analyzer?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/salesforce.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce.md&quot;&gt;&lt;strong&gt;SALESFORCE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_sfdx_scanner_aura.md&quot;&gt;&lt;strong&gt;sfdx-scanner-aura&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_sfdx_scanner_aura.md&quot;&gt;&lt;em&gt;SALESFORCE_SFDX_SCANNER_AURA&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-deprecated-red&quot; alt=&quot;deprecated&quot; /&gt; &lt;a href=&quot;https://github.com/forcedotcom/code-analyzer&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/forcedotcom/code-analyzer?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/salesforce.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce.md&quot;&gt;&lt;strong&gt;SALESFORCE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_sfdx_scanner_lwc.md&quot;&gt;&lt;strong&gt;sfdx-scanner-lwc&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_sfdx_scanner_lwc.md&quot;&gt;&lt;em&gt;SALESFORCE_SFDX_SCANNER_LWC&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-deprecated-red&quot; alt=&quot;deprecated&quot; /&gt; &lt;a href=&quot;https://github.com/forcedotcom/code-analyzer&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/forcedotcom/code-analyzer?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/salesforce.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce.md&quot;&gt;&lt;strong&gt;SALESFORCE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_lightning_flow_scanner.md&quot;&gt;&lt;strong&gt;lightning-flow-scanner&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/salesforce_lightning_flow_scanner.md&quot;&gt;&lt;em&gt;SALESFORCE_LIGHTNING_FLOW_SCANNER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-disabled-orange&quot; alt=&quot;disabled&quot; /&gt; &lt;a href=&quot;https://github.com/Flow-Scanner/lightning-flow-scanner-cli&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/Flow-Scanner/lightning-flow-scanner-cli?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/scala.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/scala.md&quot;&gt;&lt;strong&gt;SCALA&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/scala_scalafix.md&quot;&gt;&lt;strong&gt;scalafix&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/scala_scalafix.md&quot;&gt;&lt;em&gt;SCALA_SCALAFIX&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/scalacenter/scalafix&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/scalacenter/scalafix?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/sql.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/sql.md&quot;&gt;&lt;strong&gt;SQL&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/sql_sqlfluff.md&quot;&gt;&lt;strong&gt;sqlfluff&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/sql_sqlfluff.md&quot;&gt;&lt;em&gt;SQL_SQLFLUFF&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/sqlfluff/sqlfluff&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/sqlfluff/sqlfluff?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/sql.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/sql.md&quot;&gt;&lt;strong&gt;SQL&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/sql_tsqllint.md&quot;&gt;&lt;strong&gt;tsqllint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/sql_tsqllint.md&quot;&gt;&lt;em&gt;SQL_TSQLLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/tsqllint/tsqllint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/tsqllint/tsqllint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/swift.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/swift.md&quot;&gt;&lt;strong&gt;SWIFT&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/swift_swiftlint.md&quot;&gt;&lt;strong&gt;swiftlint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/swift_swiftlint.md&quot;&gt;&lt;em&gt;SWIFT_SWIFTLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/realm/SwiftLint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/realm/SwiftLint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/tsx.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/tsx.md&quot;&gt;&lt;strong&gt;TSX&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/tsx_eslint.md&quot;&gt;&lt;strong&gt;eslint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/tsx_eslint.md&quot;&gt;&lt;em&gt;TSX_ESLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/jsx-eslint/eslint-plugin-react&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/jsx-eslint/eslint-plugin-react?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/typescript.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/typescript.md&quot;&gt;&lt;strong&gt;TYPESCRIPT&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/typescript_eslint.md&quot;&gt;&lt;strong&gt;eslint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/typescript_eslint.md&quot;&gt;&lt;em&gt;TYPESCRIPT_ES&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/typescript-eslint/typescript-eslint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/typescript-eslint/typescript-eslint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/typescript.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/typescript.md&quot;&gt;&lt;strong&gt;TYPESCRIPT&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/typescript_ts_standard.md&quot;&gt;&lt;strong&gt;ts-standard&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/typescript_ts_standard.md&quot;&gt;&lt;em&gt;TYPESCRIPT_STANDARD&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/standard/ts-standard&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/standard/ts-standard?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/typescript.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/typescript.md&quot;&gt;&lt;strong&gt;TYPESCRIPT&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/typescript_prettier.md&quot;&gt;&lt;strong&gt;prettier&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/typescript_prettier.md&quot;&gt;&lt;em&gt;TYPESCRIPT_PRETTIER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/prettier/prettier&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/prettier/prettier?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/vbdotnet.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/vbdotnet.md&quot;&gt;&lt;strong&gt;Visual Basic .NET&lt;/strong&gt; (VBDOTNET)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/vbdotnet_dotnet_format.md&quot;&gt;&lt;strong&gt;dotnet-format&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/vbdotnet_dotnet_format.md&quot;&gt;&lt;em&gt;VBDOTNET_DOTNET_FORMAT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/dotnet/sdk&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/dotnet/sdk?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Formats&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th align=&quot;center&quot;&gt;
    &lt;!-- --&gt;&lt;/th&gt; 
   &lt;th&gt;Format&lt;/th&gt; 
   &lt;th&gt;Linter&lt;/th&gt; 
   &lt;th align=&quot;center&quot;&gt;Additional&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/css.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/css.md&quot;&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/css_stylelint.md&quot;&gt;&lt;strong&gt;stylelint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/css_stylelint.md&quot;&gt;&lt;em&gt;CSS_STYLELINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/stylelint/stylelint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/stylelint/stylelint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/env.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/env.md&quot;&gt;&lt;strong&gt;ENV&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/env_dotenv_linter.md&quot;&gt;&lt;strong&gt;dotenv-linter&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/env_dotenv_linter.md&quot;&gt;&lt;em&gt;ENV_DOTENV_LINTER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/dotenv-linter/dotenv-linter&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/dotenv-linter/dotenv-linter?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/graphql.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/graphql.md&quot;&gt;&lt;strong&gt;GRAPHQL&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/graphql_graphql_schema_linter.md&quot;&gt;&lt;strong&gt;graphql-schema-linter&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/graphql_graphql_schema_linter.md&quot;&gt;&lt;em&gt;GRAPHQL_GRAPHQL_SCHEMA_LINTER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/cjoudrey/graphql-schema-linter&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/cjoudrey/graphql-schema-linter?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/html.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/html.md&quot;&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/html_djlint.md&quot;&gt;&lt;strong&gt;djlint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/html_djlint.md&quot;&gt;&lt;em&gt;HTML_DJLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/Riverside-Healthcare/djlint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/Riverside-Healthcare/djlint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/html.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/html.md&quot;&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/html_htmlhint.md&quot;&gt;&lt;strong&gt;htmlhint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/html_htmlhint.md&quot;&gt;&lt;em&gt;HTML_HTMLHINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/htmlhint/HTMLHint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/htmlhint/HTMLHint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/json.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json.md&quot;&gt;&lt;strong&gt;JSON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json_jsonlint.md&quot;&gt;&lt;strong&gt;jsonlint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json_jsonlint.md&quot;&gt;&lt;em&gt;JSON_JSONLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/prantlf/jsonlint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/prantlf/jsonlint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/json.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json.md&quot;&gt;&lt;strong&gt;JSON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json_eslint_plugin_jsonc.md&quot;&gt;&lt;strong&gt;eslint-plugin-jsonc&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json_eslint_plugin_jsonc.md&quot;&gt;&lt;em&gt;JSON_ESLINT_PLUGIN_JSONC&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-disabled-orange&quot; alt=&quot;disabled&quot; /&gt; &lt;a href=&quot;https://github.com/ota-meshi/eslint-plugin-jsonc&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/ota-meshi/eslint-plugin-jsonc?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/json.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json.md&quot;&gt;&lt;strong&gt;JSON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json_v8r.md&quot;&gt;&lt;strong&gt;v8r&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json_v8r.md&quot;&gt;&lt;em&gt;JSON_V8R&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/chris48s/v8r&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/chris48s/v8r?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/json.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json.md&quot;&gt;&lt;strong&gt;JSON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json_prettier.md&quot;&gt;&lt;strong&gt;prettier&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json_prettier.md&quot;&gt;&lt;em&gt;JSON_PRETTIER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/prettier/prettier&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/prettier/prettier?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/json.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json.md&quot;&gt;&lt;strong&gt;JSON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json_npm_package_json_lint.md&quot;&gt;&lt;strong&gt;npm-package-json-lint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/json_npm_package_json_lint.md&quot;&gt;&lt;em&gt;JSON_NPM_PACKAGE_JSON_LINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/tclindner/npm-package-json-lint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/tclindner/npm-package-json-lint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/latex.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/latex.md&quot;&gt;&lt;strong&gt;LATEX&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/latex_chktex.md&quot;&gt;&lt;strong&gt;chktex&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/latex_chktex.md&quot;&gt;&lt;em&gt;LATEX_CHKTEX&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/markdown.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/markdown.md&quot;&gt;&lt;strong&gt;MARKDOWN&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/markdown_markdownlint.md&quot;&gt;&lt;strong&gt;markdownlint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/markdown_markdownlint.md&quot;&gt;&lt;em&gt;MARKDOWN_MARKDOWNLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/DavidAnson/markdownlint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/DavidAnson/markdownlint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/markdown.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/markdown.md&quot;&gt;&lt;strong&gt;MARKDOWN&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/markdown_remark_lint.md&quot;&gt;&lt;strong&gt;remark-lint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/markdown_remark_lint.md&quot;&gt;&lt;em&gt;MARKDOWN_REMARK_LINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-disabled-orange&quot; alt=&quot;disabled&quot; /&gt; &lt;a href=&quot;https://github.com/remarkjs/remark-lint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/remarkjs/remark-lint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/markdown.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/markdown.md&quot;&gt;&lt;strong&gt;MARKDOWN&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/markdown_markdown_table_formatter.md&quot;&gt;&lt;strong&gt;markdown-table-formatter&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/markdown_markdown_table_formatter.md&quot;&gt;&lt;em&gt;MARKDOWN_MARKDOWN_TABLE_FORMATTER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/nvuillam/markdown-table-formatter&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/nvuillam/markdown-table-formatter?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/markdown.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/markdown.md&quot;&gt;&lt;strong&gt;MARKDOWN&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/markdown_rumdl.md&quot;&gt;&lt;strong&gt;rumdl&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/markdown_rumdl.md&quot;&gt;&lt;em&gt;MARKDOWN_RUMDL&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/rvben/rumdl&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/rvben/rumdl?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/protobuf.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/protobuf.md&quot;&gt;&lt;strong&gt;PROTOBUF&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/protobuf_protolint.md&quot;&gt;&lt;strong&gt;protolint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/protobuf_protolint.md&quot;&gt;&lt;em&gt;PROTOBUF_PROTOLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/yoheimuta/protolint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/yoheimuta/protolint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/rst.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/rst.md&quot;&gt;&lt;strong&gt;RST&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/rst_rst_lint.md&quot;&gt;&lt;strong&gt;rst-lint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/rst_rst_lint.md&quot;&gt;&lt;em&gt;RST_RST_LINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/twolfson/restructuredtext-lint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/twolfson/restructuredtext-lint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/rst.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/rst.md&quot;&gt;&lt;strong&gt;RST&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/rst_rstcheck.md&quot;&gt;&lt;strong&gt;rstcheck&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/rst_rstcheck.md&quot;&gt;&lt;em&gt;RST_RSTCHECK&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/myint/rstcheck&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/myint/rstcheck?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/rst.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/rst.md&quot;&gt;&lt;strong&gt;RST&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/rst_rstfmt.md&quot;&gt;&lt;strong&gt;rstfmt&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/rst_rstfmt.md&quot;&gt;&lt;em&gt;RST_RSTFMT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/xml.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/xml.md&quot;&gt;&lt;strong&gt;XML&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/xml_xmllint.md&quot;&gt;&lt;strong&gt;xmllint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/xml_xmllint.md&quot;&gt;&lt;em&gt;XML_XMLLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/yaml.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/yaml.md&quot;&gt;&lt;strong&gt;YAML&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/yaml_prettier.md&quot;&gt;&lt;strong&gt;prettier&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/yaml_prettier.md&quot;&gt;&lt;em&gt;YAML_PRETTIER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/prettier/prettier&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/prettier/prettier?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/yaml.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/yaml.md&quot;&gt;&lt;strong&gt;YAML&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/yaml_yamllint.md&quot;&gt;&lt;strong&gt;yamllint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/yaml_yamllint.md&quot;&gt;&lt;em&gt;YAML_YAMLLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/adrienverge/yamllint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/adrienverge/yamllint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/yaml.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/yaml.md&quot;&gt;&lt;strong&gt;YAML&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/yaml_v8r.md&quot;&gt;&lt;strong&gt;v8r&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/yaml_v8r.md&quot;&gt;&lt;em&gt;YAML_V8R&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/chris48s/v8r&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/chris48s/v8r?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Tooling formats&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th align=&quot;center&quot;&gt;
    &lt;!-- --&gt;&lt;/th&gt; 
   &lt;th&gt;Tooling format&lt;/th&gt; 
   &lt;th&gt;Linter&lt;/th&gt; 
   &lt;th align=&quot;center&quot;&gt;Additional&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/action.md&quot;&gt;&lt;strong&gt;ACTION&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/action_actionlint.md&quot;&gt;&lt;strong&gt;actionlint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/action_actionlint.md&quot;&gt;&lt;em&gt;ACTION_ACTIONLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/rhysd/actionlint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/rhysd/actionlint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/ansible.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/ansible.md&quot;&gt;&lt;strong&gt;ANSIBLE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/ansible_ansible_lint.md&quot;&gt;&lt;strong&gt;ansible-lint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/ansible_ansible_lint.md&quot;&gt;&lt;em&gt;ANSIBLE_ANSIBLE_LINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/ansible/ansible-lint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/ansible/ansible-lint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/api.md&quot;&gt;&lt;strong&gt;API&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/api_spectral.md&quot;&gt;&lt;strong&gt;spectral&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/api_spectral.md&quot;&gt;&lt;em&gt;API_SPECTRAL&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/stoplightio/spectral&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/stoplightio/spectral?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/arm.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/arm.md&quot;&gt;&lt;strong&gt;ARM&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/arm_arm_ttk.md&quot;&gt;&lt;strong&gt;arm-ttk&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/arm_arm_ttk.md&quot;&gt;&lt;em&gt;ARM_ARM_TTK&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/Azure/arm-ttk&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/Azure/arm-ttk?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bicep.md&quot;&gt;&lt;strong&gt;BICEP&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bicep_bicep_linter.md&quot;&gt;&lt;strong&gt;bicep_linter&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bicep_bicep_linter.md&quot;&gt;&lt;em&gt;BICEP_BICEP_LINTER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/Azure/bicep&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/Azure/bicep?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/cloudformation.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cloudformation.md&quot;&gt;&lt;strong&gt;CLOUDFORMATION&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cloudformation_cfn_lint.md&quot;&gt;&lt;strong&gt;cfn-lint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cloudformation_cfn_lint.md&quot;&gt;&lt;em&gt;CLOUDFORMATION_CFN_LINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/aws-cloudformation/cfn-lint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/aws-cloudformation/cfn-lint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/dockerfile.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/dockerfile.md&quot;&gt;&lt;strong&gt;DOCKERFILE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/dockerfile_hadolint.md&quot;&gt;&lt;strong&gt;hadolint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/dockerfile_hadolint.md&quot;&gt;&lt;em&gt;DOCKERFILE_HADOLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/hadolint/hadolint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/hadolint/hadolint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/editorconfig.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/editorconfig.md&quot;&gt;&lt;strong&gt;EDITORCONFIG&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/editorconfig_editorconfig_checker.md&quot;&gt;&lt;strong&gt;editorconfig-checker&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/editorconfig_editorconfig_checker.md&quot;&gt;&lt;em&gt;EDITORCONFIG_EDITORCONFIG_CHECKER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/editorconfig-checker/editorconfig-checker&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/editorconfig-checker/editorconfig-checker?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/gherkin.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/gherkin.md&quot;&gt;&lt;strong&gt;GHERKIN&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/gherkin_gherkin_lint.md&quot;&gt;&lt;strong&gt;gherkin-lint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/gherkin_gherkin_lint.md&quot;&gt;&lt;em&gt;GHERKIN_GHERKIN_LINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/gherkin-lint/gherkin-lint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/gherkin-lint/gherkin-lint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/kubernetes.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kubernetes.md&quot;&gt;&lt;strong&gt;KUBERNETES&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kubernetes_kubeconform.md&quot;&gt;&lt;strong&gt;kubeconform&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kubernetes_kubeconform.md&quot;&gt;&lt;em&gt;KUBERNETES_KUBECONFORM&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/yannh/kubeconform&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/yannh/kubeconform?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/kubernetes.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kubernetes.md&quot;&gt;&lt;strong&gt;KUBERNETES&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kubernetes_helm.md&quot;&gt;&lt;strong&gt;helm&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kubernetes_helm.md&quot;&gt;&lt;em&gt;KUBERNETES_HELM&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/helm/helm&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/helm/helm?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/kubernetes.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kubernetes.md&quot;&gt;&lt;strong&gt;KUBERNETES&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kubernetes_kubescape.md&quot;&gt;&lt;strong&gt;kubescape&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kubernetes_kubescape.md&quot;&gt;&lt;em&gt;KUBERNETES_KUBESCAPE&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/kubescape/kubescape&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/kubescape/kubescape?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/puppet.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/puppet.md&quot;&gt;&lt;strong&gt;PUPPET&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/puppet_puppet_lint.md&quot;&gt;&lt;strong&gt;puppet-lint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/puppet_puppet_lint.md&quot;&gt;&lt;em&gt;PUPPET_PUPPET_LINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-disabled-orange&quot; alt=&quot;disabled&quot; /&gt; &lt;a href=&quot;https://github.com/puppetlabs/puppet-lint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/puppetlabs/puppet-lint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/robotframework.md&quot;&gt;&lt;strong&gt;ROBOTFRAMEWORK&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/robotframework_robocop.md&quot;&gt;&lt;strong&gt;robocop&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/robotframework_robocop.md&quot;&gt;&lt;em&gt;ROBOTFRAMEWORK_ROBOCOP&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/MarketSquare/robotframework-robocop&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/MarketSquare/robotframework-robocop?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/snakemake.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/snakemake.md&quot;&gt;&lt;strong&gt;SNAKEMAKE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/snakemake_snakemake.md&quot;&gt;&lt;strong&gt;snakemake&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/snakemake_snakemake.md&quot;&gt;&lt;em&gt;SNAKEMAKE_LINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/snakemake/snakemake&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/snakemake/snakemake?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/snakemake.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/snakemake.md&quot;&gt;&lt;strong&gt;SNAKEMAKE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/snakemake_snakefmt.md&quot;&gt;&lt;strong&gt;snakefmt&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/snakemake_snakefmt.md&quot;&gt;&lt;em&gt;SNAKEMAKE_SNAKEFMT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/snakemake/snakefmt&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/snakemake/snakefmt?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/tekton.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/tekton.md&quot;&gt;&lt;strong&gt;TEKTON&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/tekton_tekton_lint.md&quot;&gt;&lt;strong&gt;tekton-lint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/tekton_tekton_lint.md&quot;&gt;&lt;em&gt;TEKTON_TEKTON_LINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/IBM/tekton-lint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/IBM/tekton-lint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/terraform.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/terraform.md&quot;&gt;&lt;strong&gt;TERRAFORM&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/terraform_tflint.md&quot;&gt;&lt;strong&gt;tflint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/terraform_tflint.md&quot;&gt;&lt;em&gt;TERRAFORM_TFLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/terraform-linters/tflint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/terraform-linters/tflint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/terraform.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/terraform.md&quot;&gt;&lt;strong&gt;TERRAFORM&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/terraform_terrascan.md&quot;&gt;&lt;strong&gt;terrascan&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/terraform_terrascan.md&quot;&gt;&lt;em&gt;TERRAFORM_TERRASCAN&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-deprecated-red&quot; alt=&quot;deprecated&quot; /&gt; &lt;img src=&quot;https://shields.io/badge/-downgraded%20version-orange&quot; alt=&quot;downgraded version&quot; /&gt; &lt;a href=&quot;https://github.com/tenable/terrascan&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/tenable/terrascan?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/terraform.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/terraform.md&quot;&gt;&lt;strong&gt;TERRAFORM&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/terraform_terragrunt.md&quot;&gt;&lt;strong&gt;terragrunt&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/terraform_terragrunt.md&quot;&gt;&lt;em&gt;TERRAFORM_TERRAGRUNT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/gruntwork-io/terragrunt&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/gruntwork-io/terragrunt?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/terraform.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/terraform.md&quot;&gt;&lt;strong&gt;TERRAFORM&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/terraform_terraform_fmt.md&quot;&gt;&lt;strong&gt;terraform-fmt&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/terraform_terraform_fmt.md&quot;&gt;&lt;em&gt;TERRAFORM_TERRAFORM_FMT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/hashicorp/terraform&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/hashicorp/terraform?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-format-yellow&quot; alt=&quot;formatter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Other&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th align=&quot;center&quot;&gt;
    &lt;!-- --&gt;&lt;/th&gt; 
   &lt;th&gt;Code quality checker&lt;/th&gt; 
   &lt;th&gt;Linter&lt;/th&gt; 
   &lt;th align=&quot;center&quot;&gt;Additional&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/copypaste.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/copypaste.md&quot;&gt;&lt;strong&gt;COPYPASTE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/copypaste_jscpd.md&quot;&gt;&lt;strong&gt;jscpd&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/copypaste_jscpd.md&quot;&gt;&lt;em&gt;COPYPASTE_JSCPD&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/kucherenko/jscpd&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/kucherenko/jscpd?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_checkov.md&quot;&gt;&lt;strong&gt;checkov&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_checkov.md&quot;&gt;&lt;em&gt;REPOSITORY_CHECKOV&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/bridgecrewio/checkov&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/bridgecrewio/checkov?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_devskim.md&quot;&gt;&lt;strong&gt;devskim&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_devskim.md&quot;&gt;&lt;em&gt;REPOSITORY_DEVSKIM&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/microsoft/DevSkim&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/microsoft/DevSkim?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_dustilock.md&quot;&gt;&lt;strong&gt;dustilock&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_dustilock.md&quot;&gt;&lt;em&gt;REPOSITORY_DUSTILOCK&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/Checkmarx/dustilock&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/Checkmarx/dustilock?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_git_diff.md&quot;&gt;&lt;strong&gt;git_diff&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_git_diff.md&quot;&gt;&lt;em&gt;REPOSITORY_GIT_DIFF&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/git/git&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/git/git?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_gitleaks.md&quot;&gt;&lt;strong&gt;gitleaks&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_gitleaks.md&quot;&gt;&lt;em&gt;REPOSITORY_GITLEAKS&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/gitleaks/gitleaks&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/gitleaks/gitleaks?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_grype.md&quot;&gt;&lt;strong&gt;grype&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_grype.md&quot;&gt;&lt;em&gt;REPOSITORY_GRYPE&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://shields.io/badge/-downgraded%20version-orange&quot; alt=&quot;downgraded version&quot; /&gt; &lt;a href=&quot;https://github.com/anchore/grype&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/anchore/grype?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_kics.md&quot;&gt;&lt;strong&gt;kics&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_kics.md&quot;&gt;&lt;em&gt;REPOSITORY_KICS&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/checkmarx/kics&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/checkmarx/kics?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_ls_lint.md&quot;&gt;&lt;strong&gt;ls-lint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_ls_lint.md&quot;&gt;&lt;em&gt;REPOSITORY_LS_LINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/loeffel-io/ls-lint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/loeffel-io/ls-lint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_secretlint.md&quot;&gt;&lt;strong&gt;secretlint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_secretlint.md&quot;&gt;&lt;em&gt;REPOSITORY_SECRETLINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/secretlint/secretlint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/secretlint/secretlint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_semgrep.md&quot;&gt;&lt;strong&gt;semgrep&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_semgrep.md&quot;&gt;&lt;em&gt;REPOSITORY_SEMGREP&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/returntocorp/semgrep&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/returntocorp/semgrep?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_syft.md&quot;&gt;&lt;strong&gt;syft&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_syft.md&quot;&gt;&lt;em&gt;REPOSITORY_SYFT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/anchore/syft&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/anchore/syft?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_trivy.md&quot;&gt;&lt;strong&gt;trivy&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_trivy.md&quot;&gt;&lt;em&gt;REPOSITORY_TRIVY&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/aquasecurity/trivy&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/aquasecurity/trivy?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_trivy_sbom.md&quot;&gt;&lt;strong&gt;trivy-sbom&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_trivy_sbom.md&quot;&gt;&lt;em&gt;REPOSITORY_TRIVY_SBOM&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/aquasecurity/trivy&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/aquasecurity/trivy?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_trufflehog.md&quot;&gt;&lt;strong&gt;trufflehog&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_trufflehog.md&quot;&gt;&lt;em&gt;REPOSITORY_TRUFFLEHOG&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/trufflesecurity/trufflehog&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/trufflesecurity/trufflehog?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository.md&quot;&gt;&lt;strong&gt;REPOSITORY&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_kingfisher.md&quot;&gt;&lt;strong&gt;kingfisher&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/repository_kingfisher.md&quot;&gt;&lt;em&gt;REPOSITORY_KINGFISHER&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/mongodb/kingfisher&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/mongodb/kingfisher?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-SARIF-orange&quot; alt=&quot;sarif&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/spell.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell.md&quot;&gt;&lt;strong&gt;SPELL&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell_cspell.md&quot;&gt;&lt;strong&gt;cspell&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell_cspell.md&quot;&gt;&lt;em&gt;SPELL_CSPELL&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/streetsidesoftware/cspell&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/streetsidesoftware/cspell?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/spell.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell.md&quot;&gt;&lt;strong&gt;SPELL&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell_proselint.md&quot;&gt;&lt;strong&gt;proselint&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell_proselint.md&quot;&gt;&lt;em&gt;SPELL_PROSELINT&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/amperser/proselint&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/amperser/proselint?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/spell.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell.md&quot;&gt;&lt;strong&gt;SPELL&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell_vale.md&quot;&gt;&lt;strong&gt;vale&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell_vale.md&quot;&gt;&lt;em&gt;SPELL_VALE&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/errata-ai/vale&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/errata-ai/vale?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/spell.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell.md&quot;&gt;&lt;strong&gt;SPELL&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell_lychee.md&quot;&gt;&lt;strong&gt;lychee&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell_lychee.md&quot;&gt;&lt;em&gt;SPELL_LYCHEE&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/lycheeverse/lychee&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/lycheeverse/lychee?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/spell.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt; 
    &lt;!-- linter-icon --&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell.md&quot;&gt;&lt;strong&gt;SPELL&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell_codespell.md&quot;&gt;&lt;strong&gt;codespell&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/spell_codespell.md&quot;&gt;&lt;em&gt;SPELL_CODESPELL&lt;/em&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/codespell-project/codespell&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/codespell-project/codespell?cacheSeconds=3600&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://shields.io/badge/-autofix-green&quot; alt=&quot;autofix&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;!-- linters-table-end --&gt; 
&lt;!-- supported-linters-section-end --&gt; 
&lt;!-- installation-section-start --&gt; 
&lt;!-- markdown-headers
---
title: MegaLinter Installation Guide
description: How to install MegaLinter on Github Actions, Gitlab CI, Azure Pipelines, Jenkins, Concourse, Drone CI or to run locally
---
--&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;!-- install-assisted-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Install mega-linter with automated setup
description: Setup MegaLinter in 5 minutes thanks to its assisted installation tool
---
--&gt; 
&lt;h3&gt;Assisted installation&lt;/h3&gt; 
&lt;p&gt;Just run &lt;code&gt;npx mega-linter-runner --install&lt;/code&gt; at the root of your repository and answer questions, it will generate ready to use configuration files for MegaLinter :)&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/mega-linter-runner-generator.gif?raw=true&quot; alt=&quot;Runner Install&quot; /&gt;&lt;/p&gt; 
&lt;!-- install-assisted-section-end --&gt; 
&lt;!-- install-version-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Selecting a MegaLinter version to use
description: You can use latest release or beta version of MegaLinter, know the differences !
---
--&gt; 
&lt;h3&gt;Which version to use ?&lt;/h3&gt; 
&lt;!-- # MAJOR-RELEASE-IMPACTED --&gt; 
&lt;p&gt;The following instructions examples are using latest MegaLinter stable version (&lt;strong&gt;v9&lt;/strong&gt; , always corresponding to the &lt;a href=&quot;https://github.com/oxsecurity/megalinter/releases&quot;&gt;latest release&lt;/a&gt;)&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Docker image: &lt;code&gt;oxsecurity/megalinter:v9&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;GitHub Action: &lt;code&gt;oxsecurity/megalinter@v9&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;You can also use &lt;strong&gt;beta&lt;/strong&gt; version (corresponding to the content of main branch)&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Docker image: &lt;code&gt;oxsecurity/megalinter:beta&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;GitHub Action: &lt;code&gt;oxsecurity/megalinter@beta&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- install-version-section-end --&gt; 
&lt;!-- install-github-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Install MegaLinter on GitHub Actions
description: Manual instructions to setup MegaLinter in a GitHub Action Workflow 
---
--&gt; 
&lt;h3&gt;GitHub Action&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Create a new file in your repository called &lt;code&gt;.github/workflows/mega-linter.yml&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Copy the &lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/TEMPLATES/mega-linter.yml&quot;&gt;example workflow from below&lt;/a&gt; into that new file, no extra configuration required&lt;/li&gt; 
 &lt;li&gt;Commit that file to a new branch&lt;/li&gt; 
 &lt;li&gt;Open up a pull request and observe the action working&lt;/li&gt; 
 &lt;li&gt;Enjoy your more &lt;em&gt;stable&lt;/em&gt;, and &lt;em&gt;cleaner&lt;/em&gt; code base&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;NOTES:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;If you pass the &lt;em&gt;Environment&lt;/em&gt; variable &lt;code&gt;GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}&lt;/code&gt; in your workflow, then the &lt;strong&gt;MegaLinter&lt;/strong&gt; will mark the status of each individual linter run in the Checks section of a pull request. Without this you will only see the overall status of the full run. There is no need to set the &lt;strong&gt;GitHub&lt;/strong&gt; Secret as it&#39;s automatically set by GitHub, it only needs to be passed to the action.&lt;/li&gt; 
 &lt;li&gt;You can also &lt;strong&gt;use it outside of GitHub Actions&lt;/strong&gt; (CircleCI, Azure Pipelines, Jenkins, GitLab, or even locally with a docker run) , and have status on Github Pull Request if &lt;code&gt;GITHUB_TARGET_URL&lt;/code&gt; environment variable exists.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;In your repository you should have a &lt;code&gt;.github/workflows&lt;/code&gt; folder with &lt;strong&gt;GitHub&lt;/strong&gt; Action similar to below:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;.github/workflows/mega-linter.yml&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;details&gt; 
 &lt;summary&gt;This file should have this code&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;---
# MegaLinter GitHub Action configuration file
# More info at https://megalinter.io
name: MegaLinter

on:
  # Trigger mega-linter at every push. Action will also be visible from Pull Requests to main
  push: # Comment this line to trigger action only on pull-requests (not recommended if you don&#39;t pay for GH Actions)
  pull_request:
    branches: [master, main]

env: # Comment env block if you don&#39;t want to apply fixes
  # Apply linter fixes configuration
  APPLY_FIXES: all # When active, APPLY_FIXES must also be defined as environment variable (in github/workflows/mega-linter.yml or other CI tool)
  APPLY_FIXES_EVENT: pull_request # Decide which event triggers application of fixes in a commit or a PR (pull_request, push, all)
  APPLY_FIXES_MODE: commit # If APPLY_FIXES is used, defines if the fixes are directly committed (commit) or posted in a PR (pull_request)

concurrency:
  group: ${{ github.ref }}-${{ github.workflow }}
  cancel-in-progress: true

jobs:
  megalinter:
    name: MegaLinter
    runs-on: ubuntu-latest
    permissions:
      # Give the default GITHUB_TOKEN write permission to commit and push, comment issues &amp;amp; post new PR
      # Remove the ones you do not need
      contents: write
      issues: write
      pull-requests: write
    steps:
      # Git Checkout
      - name: Checkout Code
        uses: actions/checkout@v6
        with:
          token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
          fetch-depth: 0 # If you use VALIDATE_ALL_CODEBASE = true, you can remove this line to improve performances

      # MegaLinter
      - name: MegaLinter
        id: ml
        # You can override MegaLinter flavor used to have faster performances
        # More info at https://megalinter.io/flavors/
        # MAJOR-RELEASE-IMPACTED
        uses: oxsecurity/megalinter@v9
        env:
          # All available variables are described in documentation
          # https://megalinter.io/configuration/
          VALIDATE_ALL_CODEBASE: ${{ github.event_name == &#39;push&#39; &amp;amp;&amp;amp; github.ref == &#39;refs/heads/main&#39; }} # Validates all source when push on main, else just the git diff with main. Override with true if you always want to lint all sources
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          # ADD YOUR CUSTOM ENV VARIABLES HERE OR DEFINE THEM IN A FILE .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY
          # DISABLE: COPYPASTE,SPELL # Uncomment to disable copy-paste and spell checks

      # Upload MegaLinter artifacts
      - name: Archive production artifacts
        if: success() || failure()
        uses: actions/upload-artifact@v7
        with:
          name: MegaLinter reports
          include-hidden-files: &quot;true&quot;
          path: |
            megalinter-reports
            mega-linter.log

      # Create pull request if applicable (for now works only on PR from same repository, not from forks)
      - name: Create Pull Request with applied fixes
        id: cpr
        if: steps.ml.outputs.has_updated_sources == 1 &amp;amp;&amp;amp; (env.APPLY_FIXES_EVENT == &#39;all&#39; || env.APPLY_FIXES_EVENT == github.event_name) &amp;amp;&amp;amp; env.APPLY_FIXES_MODE == &#39;pull_request&#39; &amp;amp;&amp;amp; (github.event_name == &#39;push&#39; || github.event.pull_request.head.repo.full_name == github.repository) &amp;amp;&amp;amp; !contains(github.event.head_commit.message, &#39;skip fix&#39;)
        uses: peter-evans/create-pull-request@v7
        with:
          token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
          commit-message: &quot;[MegaLinter] Apply linters automatic fixes&quot;
          title: &quot;[MegaLinter] Apply linters automatic fixes&quot;
          labels: bot
      - name: Create PR output
        if: steps.ml.outputs.has_updated_sources == 1 &amp;amp;&amp;amp; (env.APPLY_FIXES_EVENT == &#39;all&#39; || env.APPLY_FIXES_EVENT == github.event_name) &amp;amp;&amp;amp; env.APPLY_FIXES_MODE == &#39;pull_request&#39; &amp;amp;&amp;amp; (github.event_name == &#39;push&#39; || github.event.pull_request.head.repo.full_name == github.repository) &amp;amp;&amp;amp; !contains(github.event.head_commit.message, &#39;skip fix&#39;)
        run: |
          echo &quot;Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}&quot;
          echo &quot;Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}&quot;

      # Push new commit if applicable (for now works only on PR from same repository, not from forks)
      - name: Prepare commit
        if: steps.ml.outputs.has_updated_sources == 1 &amp;amp;&amp;amp; (env.APPLY_FIXES_EVENT == &#39;all&#39; || env.APPLY_FIXES_EVENT == github.event_name) &amp;amp;&amp;amp; env.APPLY_FIXES_MODE == &#39;commit&#39; &amp;amp;&amp;amp; github.ref != &#39;refs/heads/main&#39; &amp;amp;&amp;amp; (github.event_name == &#39;push&#39; || github.event.pull_request.head.repo.full_name == github.repository) &amp;amp;&amp;amp; !contains(github.event.head_commit.message, &#39;skip fix&#39;)
        run: sudo chown -Rc $UID .git/
      - name: Commit and push applied linter fixes
        if: steps.ml.outputs.has_updated_sources == 1 &amp;amp;&amp;amp; (env.APPLY_FIXES_EVENT == &#39;all&#39; || env.APPLY_FIXES_EVENT == github.event_name) &amp;amp;&amp;amp; env.APPLY_FIXES_MODE == &#39;commit&#39; &amp;amp;&amp;amp; github.ref != &#39;refs/heads/main&#39; &amp;amp;&amp;amp; (github.event_name == &#39;push&#39; || github.event.pull_request.head.repo.full_name == github.repository) &amp;amp;&amp;amp; !contains(github.event.head_commit.message, &#39;skip fix&#39;)
        uses: stefanzweifel/git-auto-commit-action@v7
        with:
          branch: ${{ github.event.pull_request.head.ref || github.head_ref || github.ref }}
          commit_message: &quot;[MegaLinter] Apply linters fixes&quot;
          commit_user_name: megalinter-bot
          commit_user_email: 129584137+megalinter-bot@users.noreply.github.com
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;!-- install-github-section-end --&gt; 
&lt;!-- install-gitlab-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Install MegaLinter on Gitlab CI
description: Manual instructions to setup MegaLinter as a Gitlab Pipeline job
---
--&gt; 
&lt;h3&gt;GitLab CI&lt;/h3&gt; 
&lt;p&gt;Create or update &lt;code&gt;.gitlab-ci.yml&lt;/code&gt; file at the root of your repository&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;# MegaLinter GitLab CI job configuration file
# More info at https://megalinter.io/

mega-linter:
  stage: test
  # You can override MegaLinter flavor used to have faster performances
  # More info at https://megalinter.io/flavors/
  image: oxsecurity/megalinter:v9
  script: [ &quot;true&quot; ] # if script: [&quot;true&quot;] doesn&#39;t work, you may try -&amp;gt;  script: [ &quot;/bin/bash /entrypoint.sh&quot; ]
  variables:
    # All available variables are described in documentation
    # https://megalinter.io/configuration/
    DEFAULT_WORKSPACE: $CI_PROJECT_DIR
    # ADD YOUR CUSTOM ENV VARIABLES HERE TO OVERRIDE VALUES OF .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY
  artifacts:
    when: always
    paths:
      - megalinter-reports
    expire_in: 1 week
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Create a Gitlab access token and define it in a variable &lt;strong&gt;GITLAB_ACCESS_TOKEN_MEGALINTER&lt;/strong&gt; in the project CI/CD masked variables. Make sure your token (e.g. if a project token) as the appropriate &lt;a href=&quot;https://docs.gitlab.com/ee/user/permissions.html&quot;&gt;role&lt;/a&gt; for commenting a merge request (at least developer).&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/17500430/151674446-1bcb1420-d9aa-4ae1-aaae-dcf51afb36ab.gif&quot; alt=&quot;config-gitlab-access-token&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/TextReporter_gitlab_1.jpg?raw=true&quot; alt=&quot;Screenshot&quot; /&gt;&lt;/p&gt; 
&lt;!-- install-gitlab-section-end --&gt; 
&lt;!-- install-azure-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Install MegaLinter on Azure Pipelines
description: Manual instructions to setup MegaLinter as an Azure Pipelines job
---
--&gt; 
&lt;h3&gt;Azure Pipelines&lt;/h3&gt; 
&lt;p&gt;Use the following Azure Pipelines &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema&quot;&gt;YAML template&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;You can configure a &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/devops/repos/git/branch-policies?view=azure-devops&amp;amp;tabs=browser#build-validation&quot;&gt;build validation&lt;/a&gt; branch policy against a single repository or across all repositories. If you configure across all repositories then your pipeline is stored in a central repository.&lt;/p&gt; 
&lt;h4&gt;Single Repository&lt;/h4&gt; 
&lt;p&gt;Add the following to an &lt;code&gt;azure-pipelines.yaml&lt;/code&gt; file within your code repository:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;  # Run MegaLinter to detect linting and security issues
  - job: MegaLinter
    pool:
      vmImage: ubuntu-latest
    steps:
      # Checkout repo
      - checkout: self

      # Pull MegaLinter docker image
      - script: docker pull oxsecurity/megalinter:v9
        displayName: Pull MegaLinter

      # Run MegaLinter
      - script: |
          docker run -v $(System.DefaultWorkingDirectory):/tmp/lint \
            --env-file &amp;lt;(env | grep -e SYSTEM_ -e BUILD_ -e TF_ -e AGENT_) \
            -e SYSTEM_ACCESSTOKEN=$(System.AccessToken) \
            -e GIT_AUTHORIZATION_BEARER=$(System.AccessToken) \
            oxsecurity/megalinter:v9
        displayName: Run MegaLinter

      # Upload MegaLinter reports
      - task: PublishPipelineArtifact@1
        condition: succeededOrFailed()
        displayName: Upload MegaLinter reports
        inputs:
          targetPath: &quot;$(System.DefaultWorkingDirectory)/megalinter-reports/&quot;
          artifactName: MegaLinterReport
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Central Repository&lt;/h4&gt; 
&lt;p&gt;Add the following to an &lt;code&gt;azure-pipelines.yaml&lt;/code&gt; file within a separate repository, for example a &#39;MegaLinter&#39; repository:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;# Run MegaLinter to detect linting and security issues

trigger: none

pool:
  vmImage: ubuntu-latest

variables:
  repoName: $[ replace(split(variables[&#39;System.PullRequest.SourceRepositoryURI&#39;], &#39;/&#39;)[6], &#39;%20&#39;, &#39; &#39;) ]

steps:
  # Checkout triggering repo
  - checkout: git://$(System.TeamProject)/$(repoName)@$(System.PullRequest.SourceBranch)
    displayName: Checkout Triggering Repository

  # Pull MegaLinter docker image
  - script: docker pull oxsecurity/megalinter:v9
    displayName: Pull MegaLinter

  # Run MegaLinter
  - script: |
      docker run -v $(System.DefaultWorkingDirectory):/tmp/lint \
        --env-file &amp;lt;(env | grep -e SYSTEM_ -e BUILD_ -e TF_ -e AGENT_) \
        -e SYSTEM_ACCESSTOKEN=$(System.AccessToken) \
        -e GIT_AUTHORIZATION_BEARER=$(System.AccessToken) \
        oxsecurity/megalinter:v9
    displayName: Run MegaLinter

  # Upload MegaLinter reports
  - task: PublishPipelineArtifact@1
    condition: succeededOrFailed()
    displayName: MegaLinter Report
    inputs:
      targetPath: $(System.DefaultWorkingDirectory)/megalinter-reports/
      artifactName: MegaLinterReport
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Pull Request Comments&lt;/h4&gt; 
&lt;p&gt;To enable Pull Request comments, follow the &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/AzureCommentReporter.md&quot;&gt;configuration instructions&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Note: If your pipelines run on Azure DevOps but your source code is hosted on GitHub, and you want status reports to appear on GitHub, you must provide additional repository information to the pipeline. See this &lt;a href=&quot;https://github.com/firedigger/megalinter-azure-pipelines-with-github-repository&quot;&gt;example&lt;/a&gt; for guidance.&lt;/p&gt; 
&lt;h4&gt;Detailed Tutorial&lt;/h4&gt; 
&lt;p&gt;You can also follow this &lt;a href=&quot;https://github.com/DonKoning/megaLinter&quot;&gt;detailed tutorial&lt;/a&gt; by &lt;a href=&quot;https://github.com/DonKoning&quot;&gt;DonKoning&lt;/a&gt;.&lt;/p&gt; 
&lt;!-- install-azure-section-end --&gt; 
&lt;!-- install-bitbucket-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Install MegaLinter on Bitbucket Pipelines
description: Manual instructions to setup MegaLinter as a Bitbucket Pipelines job
---
--&gt; 
&lt;h3&gt;Bitbucket Pipelines&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Create a &lt;code&gt;bitbucket-pipelines.yml&lt;/code&gt; file at the root of your repository.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Copy and paste the following template or add the step to your existing pipeline.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;image: atlassian/default-image:3
pipelines:
  default:
    - parallel:
      - step:
          name: Run MegaLinter
          image: oxsecurity/megalinter:v9
          script:
            - export DEFAULT_WORKSPACE=$BITBUCKET_CLONE_DIR &amp;amp;&amp;amp; bash /entrypoint.sh
          artifacts:
            -  megalinter-reports/**
&lt;/code&gt;&lt;/pre&gt; 
&lt;!-- install-bitbucket-section-end --&gt; 
&lt;!-- install-jenkins-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Install MegaLinter on Jenkins
description: Manual instructions to setup MegaLinter as a Jenkins job
---
--&gt; 
&lt;h3&gt;Jenkins&lt;/h3&gt; 
&lt;p&gt;Add the following stage to your Jenkinsfile.&lt;/p&gt; 
&lt;p&gt;You may activate the &lt;a href=&quot;https://megalinter.io/reporters/FileIoReporter/&quot;&gt;File.io reporter&lt;/a&gt; or &lt;a href=&quot;https://megalinter.io/reporters/EmailReporter/&quot;&gt;Email reporter&lt;/a&gt; to access detailed logs and fixed sources.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-groovy&quot;&gt;// Lint with MegaLinter: https://megalinter.io/
stage(&#39;MegaLinter&#39;) {
    agent {
        docker {
            image &#39;oxsecurity/megalinter:v9&#39;
            args &quot;-u root -e VALIDATE_ALL_CODEBASE=true -v ${WORKSPACE}:/tmp/lint --entrypoint=&#39;&#39;&quot;
            reuseNode true
        }
    }
    steps {
        sh &#39;/entrypoint.sh&#39;
    }
    post {
        always {
            archiveArtifacts allowEmptyArchive: true, artifacts: &#39;mega-linter.log,megalinter-reports/**/*&#39;, defaultExcludes: false, followSymlinks: false
        }
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;CloudBees has a helpful tutorial about how to use MegaLinter with Jenkins!&lt;/p&gt; 
&lt;div style=&quot;text-align:center&quot;&gt;
 &amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/KhkNf2tQ3hM&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&lt;/div&gt; 
&lt;!-- install-jenkins-section-end --&gt; 
&lt;!-- install-concourse-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Install MegaLinter on Concourse
description: Manual instructions to setup MegaLinter as a Concourse job
---
--&gt; 
&lt;h3&gt;Concourse&lt;/h3&gt; 
&lt;h4&gt;Pipeline step&lt;/h4&gt; 
&lt;p&gt;Use the following job step in your pipeline template.&lt;/p&gt; 
&lt;p&gt;Note: Make sure you have a &lt;code&gt;job.plan.get&lt;/code&gt; step that retrieves the &lt;code&gt;repo&lt;/code&gt; containing your repository, as shown in the example.&lt;/p&gt; 
&lt;!-- # MAJOR-RELEASE-IMPACTED --&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;---

  - name: linting
    plan:
      - get: repo
      - task: linting
        config:
          platform: linux
          image_resource:
            type: docker-image
            source:
              repository: oxsecurity/megalinter
              tag: v9
          inputs:
            - name: repo
          run:
            path: bash
            args:
            - -cxe
            - |
              cd repo
              export DEFAULT_WORKSPACE=$(pwd)
              bash -ex /entrypoint.sh
              ## doing this because concourse doesn&#39;t work as other CI systems
          # params:
            # PARALLEL: true
            # DISABLE: SPELL
            # APPLY_FIXES: all
            # DISABLE_ERRORS: true
            # VALIDATE_ALL_CODEBASE: true
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;OR&lt;/p&gt; 
&lt;h4&gt;Use it as a reusable task&lt;/h4&gt; 
&lt;p&gt;Create a reusable Concourse task that can be used with multiple pipelines.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Create task file &lt;code&gt;task-linting.yaml&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;!-- # MAJOR-RELEASE-IMPACTED --&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;---
platform: linux
image_resource:
  type: docker-image
  source:
    repository: oxsecurity/megalinter
    tag: v9

inputs:
- name: repo

## uncomment this if you want reports as task output
# output:
# - name: reports
#   path: repo/megalinter-reports

run:
  path: bash
  args:
  - -cxe
  - |
    cd repo
    export DEFAULT_WORKSPACE=$(pwd)
    bash -ex /entrypoint.sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Use that &lt;code&gt;task-linting.yaml&lt;/code&gt; task in your pipeline.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Note:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Make sure &lt;code&gt;task-linting.yaml&lt;/code&gt; is available in the &lt;code&gt;repo&lt;/code&gt; input at the repository root.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Task &lt;code&gt;output&lt;/code&gt; is &lt;strong&gt;not&lt;/strong&gt; shown here.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;resources:

  - name: linting
    plan:
      - get: repo
      - task: linting
        file: repo/task-linting.yaml
        # params:
        #   PARALLEL: true
        #   DISABLE: SPELL
        #   APPLY_FIXES: all
        #   DISABLE_ERRORS: true
        #   VALIDATE_ALL_CODEBASE: true
&lt;/code&gt;&lt;/pre&gt; 
&lt;!-- install-concourse-section-end --&gt; 
&lt;!-- install-drone-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Install MegaLinter on Drone CI
description: Manual instructions to setup MegaLinter as a Drone CI job
---
--&gt; 
&lt;h3&gt;Drone CI&lt;/h3&gt; 
&lt;p&gt;Warning: Drone CI support is experimental and is undergoing significant modifications (see issue &lt;a href=&quot;https://github.com/oxsecurity/megalinter/issues/2047&quot;&gt;#2047&lt;/a&gt;).&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Create a &lt;code&gt;.drone.yml&lt;/code&gt; file on the root directory of your repository&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Copy and paste the following template:&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;kind: pipeline
type: docker
name: MegaLinter

workspace:
  path: /tmp/lint

steps:

- name: megalinter
  image: oxsecurity/megalinter:v9
  environment:
    DEFAULT_WORKSPACE: /tmp/lint
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This uses the &lt;a href=&quot;https://docs.drone.io/pipeline/docker/overview/&quot;&gt;Drone CI Docker runner&lt;/a&gt;, so you need to install and configure it beforehand on your Drone CI server.&lt;/p&gt; 
&lt;h4&gt;(Optional) Adjusting trigger rules&lt;/h4&gt; 
&lt;p&gt;The Drone CI workflow should trigger automatically for most scenarios (push, pull request, sync…). However, you can optionally change this behavior by modifying the trigger. For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;kind: pipeline
type: docker
name: MegaLinter

workspace:
  path: /tmp/lint

steps:

- name: megalinter
  image: oxsecurity/megalinter:v9
  environment:
    DEFAULT_WORKSPACE: /tmp/lint

trigger:
  event:
  - push
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The workflow above triggers only on push, and not in other situations. For more information about configuring Drone CI trigger rules, see the &lt;a href=&quot;https://docs.drone.io/pipeline/triggers/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;!-- install-drone-section-end --&gt; 
&lt;!-- install-docker-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Run MegaLinter as a Docker image
description: Manual instructions to run MegaLinter as a docker image
---
--&gt; 
&lt;h3&gt;Docker container&lt;/h3&gt; 
&lt;p&gt;You can also run MegaLinter with its Docker container. Execute this command:&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:rw -v $(pwd):/tmp/lint:rw oxsecurity/megalinter:v9&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;No extra arguments are needed; however, MegaLinter will lint all files inside the &lt;code&gt;/tmp/lint&lt;/code&gt; folder. You may need to configure your tool of choice to use &lt;code&gt;/tmp/lint&lt;/code&gt; as its workspace. This can be changed:&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:rw -v $(pwd):/example/folder:rw oxsecurity/megalinter:v9&lt;/code&gt;&lt;/p&gt; 
&lt;!-- install-docker-section-end --&gt; 
&lt;!-- install-locally-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Run MegaLinter locally on your computer
description: Manual instructions to run MegaLinter locally on your computer
---
--&gt; 
&lt;h3&gt;Run MegaLinter locally&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://npmjs.org/package/mega-linter-runner&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/mega-linter-runner.svg?sanitize=true&quot; alt=&quot;Version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://npmjs.org/package/mega-linter-runner&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/dw/mega-linter-runner.svg?sanitize=true&quot; alt=&quot;Downloads/week&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://npmjs.org/package/mega-linter-runner&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/dt/mega-linter-runner.svg?sanitize=true&quot; alt=&quot;Downloads/total&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Use &lt;a href=&quot;https://megalinter.io/mega-linter-runner/&quot;&gt;mega-linter-runner&lt;/a&gt; to run MegaLinter locally with the same configuration defined in your &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-file.md&quot;&gt;.mega-linter.yml&lt;/a&gt; file.&lt;/p&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://megalinter.io/mega-linter-runner/#installation&quot;&gt;mega-linter-runner installation instructions&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;npx mega-linter-runner --flavor salesforce -e &quot;&#39;ENABLE=DOCKERFILE,MARKDOWN,YAML&#39;&quot; -e &#39;SHOW_ELAPSED_TIME=true&#39;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note: You can also use this command line in your custom CI/CD pipelines.&lt;/p&gt; 
&lt;!-- install-locally-section-end --&gt; 
&lt;!-- installation-section-end --&gt; 
&lt;!-- configuration-section-start --&gt; 
&lt;!-- markdown-headers
---
title: MegaLinter configuration Guide
description: List of all configuration variables that can be used to customize the use of MegaLinter (activation, filtering, auto-update, pre-post commands…)
---
--&gt; 
&lt;h2&gt;Configuration&lt;/h2&gt; 
&lt;!-- config-file-section-start --&gt; 
&lt;!-- markdown-headers
---
title: MegaLinter configuration file
description: Use config file with auto-completion to customize MegaLinter behaviour
---
--&gt; 
&lt;h3&gt;.mega-linter.yml file&lt;/h3&gt; 
&lt;p&gt;MegaLinter configuration variables are defined in a &lt;strong&gt;.mega-linter.yml&lt;/strong&gt; file at the root of the repository or with &lt;strong&gt;environment variables&lt;/strong&gt;. You can see an example config file in this repo: &lt;a href=&quot;https://github.com/oxsecurity/megalinter/raw/main/.mega-linter.yml&quot;&gt;&lt;strong&gt;.mega-linter.yml&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Configuration is assisted with autocompletion and validation in most commonly used IDEs, thanks to the &lt;a href=&quot;https://megalinter.io/json-schemas/configuration.html&quot;&gt;JSON schema&lt;/a&gt; stored on &lt;a href=&quot;https://www.schemastore.org/&quot;&gt;schemastore.org&lt;/a&gt;.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;VS Code: You need an extension like &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml&quot;&gt;Red Hat YAML&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;IntelliJ IDEA family: Autocompletion is supported natively.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;You can also define variables as environment variables.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;If a variable exists in both ENV and the &lt;code&gt;.mega-linter.yml&lt;/code&gt; file, priority is given to the ENV variable.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/assisted-configuration.gif&quot; alt=&quot;Assisted configuration&quot; /&gt;&lt;/p&gt; 
&lt;!-- config-file-section-end --&gt; 
&lt;!-- config-variables-section-start --&gt; 
&lt;!-- markdown-headers
---
title: All Megalinter configuration common variables
description: List of common variables that you can use to customize MegaLinter behaviour
---
--&gt; 
&lt;h3&gt;Common variables&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;&lt;strong&gt;ENV VAR&lt;/strong&gt;&lt;/th&gt; 
   &lt;th&gt;&lt;strong&gt;Default Value&lt;/strong&gt;&lt;/th&gt; 
   &lt;th&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;ADDITIONAL_EXCLUDED_DIRECTORIES&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;[]&lt;/td&gt; 
   &lt;td&gt;List of additional excluded directory basenames. They&#39;re excluded at any nested level.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-apply-fixes.md&quot;&gt;&lt;strong&gt;APPLY_FIXES&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;none&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Activates formatting and autofix &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-apply-fixes.md&quot;&gt;(more info)&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;CLEAR_REPORT_FOLDER&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Flag to clear files from report folder (usually megalinter-reports) before starting the linting process&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;CONFIG_PROPERTIES_TO_APPEND&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;[]&lt;/td&gt; 
   &lt;td&gt;List of configuration properties to append their values (instead of replacing them) in case of using EXTENDS.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;DEFAULT_BRANCH&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;HEAD&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;The name of the repository&#39;s default branch, useful if you use VALIDATE_ALL_CODEBASE=false&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;DEFAULT_WORKSPACE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/tmp/lint&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;The location containing files to lint if you are running locally.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;DISABLE_ERRORS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Flag to have the linter complete with exit code 0 even if errors were detected.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-activation.md&quot;&gt;&lt;strong&gt;DISABLE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;
    &lt;!-- --&gt;&lt;/td&gt; 
   &lt;td&gt;List of disabled descriptors keys &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-activation.md&quot;&gt;(more info)&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-activation.md&quot;&gt;&lt;strong&gt;DISABLE_LINTERS&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;
    &lt;!-- --&gt;&lt;/td&gt; 
   &lt;td&gt;List of disabled linters keys &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-activation.md&quot;&gt;(more info)&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-activation.md&quot;&gt;&lt;strong&gt;DISABLE_ERRORS_LINTERS&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;
    &lt;!-- --&gt;&lt;/td&gt; 
   &lt;td&gt;List of enabled but not blocking linters keys. All linters not in this list will be not blocking &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-activation.md&quot;&gt;(more info)&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-activation.md&quot;&gt;&lt;strong&gt;ENABLE_ERRORS_LINTERS&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;
    &lt;!-- --&gt;&lt;/td&gt; 
   &lt;td&gt;List of enabled and blocking linters keys &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-activation.md&quot;&gt;(more info)&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-activation.md&quot;&gt;&lt;strong&gt;ENABLE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;
    &lt;!-- --&gt;&lt;/td&gt; 
   &lt;td&gt;List of enabled descriptors keys &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-activation.md&quot;&gt;(more info)&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-activation.md&quot;&gt;&lt;strong&gt;ENABLE_LINTERS&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;
    &lt;!-- --&gt;&lt;/td&gt; 
   &lt;td&gt;List of enabled linters keys &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-activation.md&quot;&gt;(more info)&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;EXCLUDED_DIRECTORIES&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;[…many values…]&lt;/td&gt; 
   &lt;td&gt;List of excluded directory basenames. They&#39;re excluded at any nested level.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;EXTENDS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;
    &lt;!-- --&gt;&lt;/td&gt; 
   &lt;td&gt;Base &lt;code&gt;mega-linter.yml&lt;/code&gt; config file(s) to extend local configuration from. Can be a single URL or a list of &lt;code&gt;.mega-linter.yml&lt;/code&gt; config files URLs. Later files take precedence.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;FAIL_IF_MISSING_LINTER_IN_FLAVOR&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;If set to &lt;code&gt;true&lt;/code&gt;, MegaLinter fails if a linter is missing in the selected flavor&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;FAIL_IF_UPDATED_SOURCES&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;If set to &lt;code&gt;true&lt;/code&gt;, MegaLinter fails if a linter or formatter has autofixed sources, even if there are no errors&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-filtering.md&quot;&gt;&lt;strong&gt;FILTER_REGEX_EXCLUDE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;none&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Regular expression defining which files will be excluded from linting &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-filtering.md&quot;&gt;(more info)&lt;/a&gt; .ex: &lt;code&gt;.*src/test.*&lt;/code&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-filtering.md&quot;&gt;&lt;strong&gt;FILTER_REGEX_INCLUDE&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;all&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Regular expression defining which files will be processed by linters &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-filtering.md&quot;&gt;(more info)&lt;/a&gt; .ex: &lt;code&gt;.*src/.*&lt;/code&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;FLAVOR_SUGGESTIONS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Provides suggestions about different MegaLinter flavors to use to improve runtime performances&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;FORMATTERS_DISABLE_ERRORS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Formatter errors will be reported as errors (not warnings) if this variable is set to &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;GIT_AUTHORIZATION_BEARER&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;
    &lt;!-- --&gt;&lt;/td&gt; 
   &lt;td&gt;If set, calls git with &lt;strong&gt;&lt;code&gt;Authorization: Bearer&lt;/code&gt;+value&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;GITHUB_WORKSPACE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;
    &lt;!-- --&gt;&lt;/td&gt; 
   &lt;td&gt;Base directory for &lt;code&gt;REPORT_OUTPUT_FOLDER&lt;/code&gt;, for user-defined linter rules location, for location of linted files if &lt;code&gt;DEFAULT_WORKSPACE&lt;/code&gt; isn&#39;t set&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;IGNORE_GENERATED_FILES&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;If set to &lt;code&gt;true&lt;/code&gt;, MegaLinter will skip files containing &lt;code&gt;@generated&lt;/code&gt; marker but without &lt;code&gt;@not-generated&lt;/code&gt; marker (more info at &lt;a href=&quot;https://generated.at/&quot;&gt;https://generated.at&lt;/a&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;IGNORE_GITIGNORED_FILES&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;If set to &lt;code&gt;true&lt;/code&gt;, MegaLinter will skip files ignored by Git using the &lt;code&gt;.gitignore&lt;/code&gt; file.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;JAVASCRIPT_DEFAULT_STYLE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;standard&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Javascript default style to check/apply. &lt;code&gt;standard&lt;/code&gt;,&lt;code&gt;prettier&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;LINTER_RULES_PATH&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;.github/linters&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Directory for all linter configuration rules.&lt;br /&gt; Can be a local folder or a remote URL (e.g., &lt;code&gt;https://raw.githubusercontent.com/some_org/some_repo/mega-linter-rules&lt;/code&gt;).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;LOG_FILE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;mega-linter.log&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;The file name for outputting logs. All output is sent to the log file regardless of &lt;code&gt;LOG_LEVEL&lt;/code&gt;. Use &lt;code&gt;none&lt;/code&gt; to not generate this file.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;LOG_LEVEL&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;INFO&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;How much output the script will generate to the console. One of &lt;code&gt;INFO&lt;/code&gt;, &lt;code&gt;DEBUG&lt;/code&gt;, &lt;code&gt;WARNING&lt;/code&gt; or &lt;code&gt;ERROR&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;MARKDOWN_DEFAULT_STYLE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;markdownlint&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Markdown default style to check/apply. &lt;code&gt;markdownlint&lt;/code&gt;, &lt;code&gt;remark-lint&lt;/code&gt;, &lt;code&gt;rumdl&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;MEGALINTER_CONFIG&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;.mega-linter.yml&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Name of MegaLinter configuration file. Can be defined remotely, in that case set this environment variable with the remote URL of &lt;code&gt;.mega-linter.yml&lt;/code&gt; config file&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;MEGALINTER_FILES_TO_LINT&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;[]&lt;/td&gt; 
   &lt;td&gt;Comma-separated list of files to analyze. Using this variable will bypass other file listing methods&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;PARALLEL&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Process linters in parallel to improve overall MegaLinter performance. If true, linters of same language or formats are grouped in the same parallel process to avoid lock issues if fixing the same files&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;PARALLEL_PROCESS_NUMBER&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;
    &lt;!-- --&gt;&lt;/td&gt; 
   &lt;td&gt;All available cores are used by default. If there are too many, decrease the number of used cores to enhance performance (example: &lt;code&gt;4&lt;/code&gt;).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#plugins&quot;&gt;&lt;strong&gt;PLUGINS&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;[]&lt;/td&gt; 
   &lt;td&gt;List of plugin urls to install and run during MegaLinter run&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-postcommands.md&quot;&gt;&lt;strong&gt;POST_COMMANDS&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;[]&lt;/td&gt; 
   &lt;td&gt;Custom bash commands to run after linters&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-precommands.md&quot;&gt;&lt;strong&gt;PRE_COMMANDS&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;[]&lt;/td&gt; 
   &lt;td&gt;Custom bash commands to run before linters&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;PRINT_ALPACA&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Enable printing alpaca image to console&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;PRINT_ALL_FILES&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Display all files analyzed by the linter instead of only the number.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;PYTHON_DEFAULT_STYLE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;black&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Python default style to check/apply. &lt;code&gt;black&lt;/code&gt;,&lt;code&gt;ruff&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;REPORT_OUTPUT_FOLDER&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;${GITHUB_WORKSPACE}/megalinter-reports&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Directory for generating report files. Set to &lt;code&gt;none&lt;/code&gt; to skip generating reports.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-variables-security.md&quot;&gt;&lt;strong&gt;SECURED_ENV_VARIABLES&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;[]&lt;/td&gt; 
   &lt;td&gt;Additional list of secured environment variables to hide when calling linters.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-variables-security.md&quot;&gt;&lt;strong&gt;SECURED_ENV_VARIABLES_DEFAULT&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;MegaLinter &amp;amp; CI platforms sensitive variables&lt;/td&gt; 
   &lt;td&gt;List of secured environment variables to hide when calling linters. &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-variables-security.md&quot;&gt;Default list&lt;/a&gt;. This is not recommended to override this variable, use SECURED_ENV_VARIABLES&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;SHOW_ELAPSED_TIME&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Displays elapsed time in reports&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;SHOW_SKIPPED_LINTERS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Displays all disabled linters MegaLinter could have run.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;SKIP_CLI_LINT_MODES&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;[]&lt;/td&gt; 
   &lt;td&gt;Comma-separated list of cli_lint_modes. To use if you want to skip linters with some CLI lint modes (ex: &lt;code&gt;file,project&lt;/code&gt;). Available values: &lt;code&gt;file&lt;/code&gt;,&lt;code&gt;cli_lint_mode&lt;/code&gt;,&lt;code&gt;project&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;SKIP_LINTER_OUTPUT_SANITIZATION&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;By default, MegaLinter sanitizes the output of every external command using Gitleaks public rules.&lt;br /&gt;If you are on a private and secured repo, you can improve performances by setting this variable to &lt;code&gt;true&lt;/code&gt;, but it will mean that if a linter output contains a secret, it will be visible in log files&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;TYPESCRIPT_DEFAULT_STYLE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;standard&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Typescript default style to check/apply. &lt;code&gt;standard&lt;/code&gt;,&lt;code&gt;prettier&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;VALIDATE_ALL_CODEBASE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Will parse the entire repository and find all files to validate across all types. &lt;strong&gt;NOTE:&lt;/strong&gt; When set to &lt;code&gt;false&lt;/code&gt;, only &lt;strong&gt;new&lt;/strong&gt; or &lt;strong&gt;edited&lt;/strong&gt; files will be parsed for validation.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;!-- config-variables-section-end --&gt; 
&lt;!-- config-activation-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Configure activation and deactivation of linters within MegaLinter
description: You can enable, disable, make not blocking, allow a minimum number of errors...
---
--&gt; 
&lt;h3&gt;Activation and deactivation&lt;/h3&gt; 
&lt;p&gt;MegaLinter has all linters enabled by default, but allows enabling or disabling specific ones.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;If &lt;code&gt;ENABLE&lt;/code&gt; isn&#39;t set, all descriptors are activated by default. If set, all linters of listed descriptors are activated by default.&lt;/li&gt; 
 &lt;li&gt;If &lt;code&gt;ENABLE_LINTERS&lt;/code&gt; is set, only the listed linters are processed.&lt;/li&gt; 
 &lt;li&gt;If &lt;code&gt;DISABLE&lt;/code&gt; is set, the linters in the listed descriptors are skipped.&lt;/li&gt; 
 &lt;li&gt;If &lt;code&gt;DISABLE_LINTERS&lt;/code&gt; is set, the listed linters are skipped.&lt;/li&gt; 
 &lt;li&gt;If &lt;code&gt;DISABLE_ERRORS_LINTERS&lt;/code&gt; is set, the listed linters will run, but if errors are found, they will be considered non-blocking.&lt;/li&gt; 
 &lt;li&gt;If &lt;code&gt;ENABLE_ERRORS_LINTERS&lt;/code&gt; is set, only the linters in this list will be considered blocking.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Examples:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Run all javascript and groovy linters except STANDARD javascript linter. DevSkim errors will be non-blocking&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;ENABLE: JAVASCRIPT,GROOVY
DISABLE_LINTERS: JAVASCRIPT_STANDARD
DISABLE_ERRORS_LINTERS: REPOSITORY_DEVSKIM
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Run all matching linters but only trivy is blocking&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;ENABLE_ERRORS_LINTERS: REPOSITORY_TRIVY
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Run all linters except PHP linters (PHP_BUILTIN, PHP_PHPCS, PHP_PHPSTAN, PHP_PSALM)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;DISABLE: PHP
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Run all linters except PHP_PHPSTAN and PHP_PSALM linters&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;DISABLE_LINTERS:
  - PHP_PHPSTAN
  - PHP_PSALM
&lt;/code&gt;&lt;/pre&gt; 
&lt;!-- config-activation-section-end --&gt; 
&lt;!-- config-filtering-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Configure filtering of files analyzed by MegaLinter
description: Exclude files from linting
---
--&gt; 
&lt;h3&gt;Filter linted files&lt;/h3&gt; 
&lt;p&gt;If you need to lint only a folder or exclude some files from linting, you can use the optional environment parameters &lt;code&gt;FILTER_REGEX_INCLUDE&lt;/code&gt; and &lt;code&gt;FILTER_REGEX_EXCLUDE&lt;/code&gt;. You can apply filters to a single linter by defining the variables &lt;code&gt;&amp;lt;LINTER_KEY&amp;gt;_FILTER_REGEX_INCLUDE&lt;/code&gt; and &lt;code&gt;&amp;lt;LINTER_KEY&amp;gt;_FILTER_REGEX_EXCLUDE&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Examples:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Lint only src folder: &lt;code&gt;FILTER_REGEX_INCLUDE: (src/)&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Don&#39;t lint files inside test and example folders: &lt;code&gt;FILTER_REGEX_EXCLUDE: (test/|examples/)&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Don&#39;t lint javascript files inside test folder: &lt;code&gt;FILTER_REGEX_EXCLUDE: (test/.*\.js)&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Warning: Not applicable with linters using CLI lint mode &lt;code&gt;project&lt;/code&gt; (&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-cli-lint-mode.md&quot;&gt;see details&lt;/a&gt;).&lt;/p&gt; 
&lt;p&gt;You can also use variable &lt;strong&gt;ADDITIONAL_EXCLUDED_DIRECTORIES&lt;/strong&gt; to add more excluded directories&lt;/p&gt; 
&lt;p&gt;Example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;ADDITIONAL_EXCLUDED_DIRECTORIES:
  - .wireit
  - dist
  - build
  - vendor
&lt;/code&gt;&lt;/pre&gt; 
&lt;!-- config-filtering-section-end --&gt; 
&lt;!-- config-apply-fixes-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Configure auto-fixing of issues by MegaLinter
description: Use MegaLinter to auto apply corrections on your repository files
---
--&gt; 
&lt;h3&gt;Apply fixes&lt;/h3&gt; 
&lt;p&gt;MegaLinter can apply fixes provided by linters. To use this capability, you need three environment variables defined at the top level.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;APPLY_FIXES&lt;/strong&gt;: &lt;code&gt;all&lt;/code&gt; to apply fixes of all linters, or a list of linter keys (ex: &lt;code&gt;JAVASCRIPT_ES&lt;/code&gt;,&lt;code&gt;MARKDOWN_MARKDOWNLINT&lt;/code&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Only for the GitHub Actions workflow file, if you use it:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;APPLY_FIXES_EVENT&lt;/strong&gt;: &lt;code&gt;all&lt;/code&gt;, &lt;code&gt;push&lt;/code&gt;, &lt;code&gt;pull_request&lt;/code&gt;, &lt;code&gt;none&lt;/code&gt; &lt;em&gt;(use none in case of use of &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/UpdatedSourcesReporter.md&quot;&gt;Updated sources reporter&lt;/a&gt;)&lt;/em&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;APPLY_FIXES_MODE&lt;/strong&gt;: &lt;code&gt;commit&lt;/code&gt; to create a new commit and push it on the same branch, or &lt;code&gt;pull_request&lt;/code&gt; to create a new PR targeting the branch.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Apply fixes issues&lt;/h4&gt; 
&lt;p&gt;You may see GitHub permission errors, or workflows not running on the new commit.&lt;/p&gt; 
&lt;p&gt;To solve these issues, apply one of the following solutions.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Method 1: The most secured 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-fine-grained-personal-access-token&quot;&gt;Create a Fine-Grained Personal Access Token&lt;/a&gt;, scoped only to your repository and with &lt;strong&gt;Contents: Read/Write&lt;/strong&gt;, then copy the PAT value&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-an-environment&quot;&gt;Define environment secret variable&lt;/a&gt; named &lt;strong&gt;PAT&lt;/strong&gt; on your repository, and paste the PAT value&lt;/li&gt; 
   &lt;li&gt;Update your GitHub Actions workflow to add the environment name&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;-- Method 2: Easier, but any contributor with write access can see your Personal Access Token, so use it only on private repositories.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token#creating-a-token&quot;&gt;Create a Classic Personal Access Token&lt;/a&gt;, then copy the PAT value&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository&quot;&gt;Define secret variable&lt;/a&gt; named &lt;strong&gt;PAT&lt;/strong&gt; on your repository, and paste the PAT value&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Notes&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;You can use the &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/UpdatedSourcesReporter.md&quot;&gt;Updated sources reporter&lt;/a&gt; if you don&#39;t want fixes to be automatically applied on the Git branch. Instead, download them in a ZIP file and manually extract them into your project.&lt;/li&gt; 
 &lt;li&gt;If used, &lt;code&gt;APPLY_FIXES_EVENT&lt;/code&gt; and &lt;code&gt;APPLY_FIXES_MODE&lt;/code&gt; cannot be defined in the &lt;code&gt;.mega-linter.yml&lt;/code&gt; config file; they must be set as environment variables.&lt;/li&gt; 
 &lt;li&gt;If you use &lt;code&gt;APPLY_FIXES&lt;/code&gt;, add the following line to your &lt;code&gt;.gitignore&lt;/code&gt; file:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;megalinter-reports/
&lt;/code&gt;&lt;/pre&gt; 
&lt;!-- config-apply-fixes-section-end --&gt; 
&lt;!-- config-linters-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Linter scoped variables
description: Every linters has its own variables that can be customized
---
--&gt; 
&lt;h3&gt;Linter specific variables&lt;/h3&gt; 
&lt;p&gt;See variables related to a single linter behavior in &lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#supported-linters&quot;&gt;linters documentations&lt;/a&gt;&lt;/p&gt; 
&lt;!-- config-linters-section-end --&gt; 
&lt;!-- config-precommands-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Configure custom commands to run before linters
description: Customize your MegaLinter run by installing linters extensions with npm, pip, or even raw bash before linters are run
---
--&gt; 
&lt;h3&gt;Pre-commands&lt;/h3&gt; 
&lt;p&gt;MegaLinter can run custom commands before running linters (for example, installing a plugin required by one of the linters you use).&lt;/p&gt; 
&lt;p&gt;Example in &lt;code&gt;.mega-linter.yml&lt;/code&gt; config file&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;PRE_COMMANDS:
  - command: npm install eslint-plugin-whatever
    cwd: root        # Will be run at the root of the MegaLinter Docker image
    secured_env: true  # True by default. If set to false, no global variables will be hidden (for example, if you need GITHUB_TOKEN)
    run_before_linters: True # Will be run before the execution of the linters themselves; required for npm/pip commands that cannot be run in parallel
  - command: echo &quot;pre-test command has been called&quot;
    cwd: workspace   # Will be run at the root of the workspace (usually your repository root)
    continue_if_failed: False  # Will stop the process if the command fails (return code &amp;gt; 0)
  - command: pip install flake8-cognitive-complexity
    venv: flake8 # Will be run within the flake8 Python virtualenv. There is one virtualenv per Python-based linter, with the same name
  - command: export MY_OUTPUT_VAR=&quot;my output var&quot; &amp;amp;&amp;amp; export MY_OUTPUT_VAR2=&quot;my output var2&quot;
    output_variables: [&quot;MY_OUTPUT_VAR&quot;,&quot;MY_OUTPUT_VAR2&quot;] # Will collect the values of output variables and update MegaLinter&#39;s own ENV context
  - command: echo &quot;Some command called before loading MegaLinter plugins&quot;
    cwd: workspace   # Will be run at the root of the workspace (usually your repository root)
    continue_if_failed: False  # Will stop the process if the command fails (return code &amp;gt; 0)
    tag: before_plugins # Tag indicating that the command will be run before loading plugins
  - command: echo &quot;Some command called after running MegaLinter linters&quot;
    run_after_linters: True # Will be run after the execution of the linters themselves
&lt;/code&gt;&lt;/pre&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Property&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
   &lt;th&gt;Default value&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;command&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Command line to run&lt;/td&gt; 
   &lt;td&gt;Mandatory&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;cwd&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Directory where to run the command (&lt;code&gt;workspace&lt;/code&gt; or &lt;code&gt;root&lt;/code&gt;)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;workspace&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;run_before_linters&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;If set to &lt;code&gt;true&lt;/code&gt;, runs the command before the execution of the linters themselves, required for npm/pip commands that cannot be run in parallel&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;run_after_linters&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;If set to &lt;code&gt;true&lt;/code&gt;, runs the command after the execution of the linters themselves&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;secured_env&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Apply filtering of secured environment variables before calling the command (default true).&lt;br /&gt;Be careful if you disable it!&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;continue_if_failed&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;If set to &lt;code&gt;false&lt;/code&gt;, stop the MegaLinter process in case of command failure&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;venv&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;If set, runs the command in the related Python venv&lt;/td&gt; 
   &lt;td&gt;
    &lt;!-- --&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;output_variables&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;ENV variables to read from output after running the commands, and store in MegaLinter&#39;s ENV context so they can be reused in subsequent commands&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;tag&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Tag defining at which command entry point the command will be run (available tags: &lt;code&gt;before_plugins&lt;/code&gt;)&lt;/td&gt; 
   &lt;td&gt;
    &lt;!-- --&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;!-- config-precommands-section-end --&gt; 
&lt;!-- config-postcommands-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Configure custom commands to run after linters
description: Customize your MegaLinter run by running commands after linters are run
---
--&gt; 
&lt;h3&gt;Post-commands&lt;/h3&gt; 
&lt;p&gt;MegaLinter can run custom commands after running linters (for example, running additional tests).&lt;/p&gt; 
&lt;p&gt;Example in &lt;code&gt;.mega-linter.yml&lt;/code&gt; config file&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;POST_COMMANDS:
  - command: npm run test
    cwd: &quot;workspace&quot;   # Will be run at the root of the workspace (usually your repository root)
    continue_if_failed: False  # Will stop the process if the command fails (return code &amp;gt; 0)
&lt;/code&gt;&lt;/pre&gt; 
&lt;!-- config-postcommands-section-end --&gt; 
&lt;!-- config-variables-security-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Configure environment variables security with MegaLinter
description: Hide from linter executables the environment variables that can contain secrets
---
--&gt; 
&lt;h3&gt;Environment variables security&lt;/h3&gt; 
&lt;h4&gt;Secured env variables&lt;/h4&gt; 
&lt;p&gt;MegaLinter runs in a Docker image and calls the linters via the command line to gather their results.&lt;/p&gt; 
&lt;p&gt;If you run it from your &lt;strong&gt;CI/CD pipelines&lt;/strong&gt;, the Docker image may have &lt;strong&gt;access to your environment variables, which can contain secrets&lt;/strong&gt; defined in CI/CD variables.&lt;/p&gt; 
&lt;p&gt;As it can be complicated to fully trust the authors of all open-source linters, &lt;strong&gt;MegaLinter removes variables from the environment used to call linters&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;Thanks to this feature, you only need to &lt;a href=&quot;https://github.com/oxsecurity/megalinter/raw/main/pyproject.toml&quot;&gt;trust MegaLinter and its internal Python dependencies&lt;/a&gt;; there is no need to trust all the linters that are used.&lt;/p&gt; 
&lt;p&gt;You can add secured variables to the default list using the configuration property &lt;code&gt;SECURED_ENV_VARIABLES&lt;/code&gt; in &lt;code&gt;.mega-linter.yml&lt;/code&gt; or as an environment variable (priority is given to ENV variables over the &lt;code&gt;.mega-linter.yml&lt;/code&gt; property).&lt;/p&gt; 
&lt;p&gt;Values can be:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;String (ex: &lt;code&gt;MY_SECRET_VAR&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;Regular Expression (ex: &lt;code&gt;(MY.*VAR)&lt;/code&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Environment variables are secured for each command line called (linters, plugins, SARIF formatter, etc.) except for &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-precommands.md&quot;&gt;PRE_COMMANDS&lt;/a&gt;, and only if you define &lt;code&gt;secured_env: false&lt;/code&gt; in the command.&lt;/p&gt; 
&lt;h4&gt;Secured configuration examples&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Example of adding extra secured variables in &lt;code&gt;.mega-linter.yml&lt;/code&gt;:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;SECURED_ENV_VARIABLES:
  - MY_SECRET_TOKEN
  - ANOTHER_VAR_CONTAINING_SENSITIVE_DATA
  - OX_API_KEY
  - (MY.*VAR)  # Regex format
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Example of adding extra secured variables in CI variables, so they cannot be overridden in &lt;code&gt;.mega-linter.yml&lt;/code&gt;:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;SECURED_ENV_VARIABLES=MY_SECRET_TOKEN,ANOTHER_VAR_CONTAINING_SENSITIVE_DATA,OX_API_KEY
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Default secured variables&lt;/h4&gt; 
&lt;p&gt;If you override &lt;code&gt;SECURED_ENV_VARIABLES_DEFAULT&lt;/code&gt;, it replaces the default list, so it&#39;s better to only define &lt;code&gt;SECURED_ENV_VARIABLES&lt;/code&gt; to add items to the default list.&lt;/p&gt; 
&lt;p&gt;SECURED_ENV_VARIABLES_DEFAULT contains exact names and (regular expressions) matching patterns for commonly used sensitive environment variables:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;PAT&lt;/li&gt; 
 &lt;li&gt;GIT_AUTHORIZATION_BEARER&lt;/li&gt; 
 &lt;li&gt;GITLAB_CUSTOM_CERTIFICATE&lt;/li&gt; 
 &lt;li&gt;(USERNAME)&lt;/li&gt; 
 &lt;li&gt;(PASSWORD)&lt;/li&gt; 
 &lt;li&gt;(TOKEN)&lt;/li&gt; 
 &lt;li&gt;(SFDX_CLIENT_ID_.*)&lt;/li&gt; 
 &lt;li&gt;(SFDX_CLIENT_KEY_.*)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Unhide variables for linters&lt;/h4&gt; 
&lt;p&gt;You can configure exceptions for a specific linter by defining &lt;code&gt;(linter-key)_UNSECURED_ENV_VARIABLES&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Variable names in this list won&#39;t be hidden from the linter commands.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;TERRAFORM_TFLINT_UNSECURED_ENV_VARIABLES:
  - GITHUB_TOKEN # Can contain string only, not regex
&lt;/code&gt;&lt;/pre&gt; 
&lt;!-- config-variables-security-section-end --&gt; 
&lt;!-- config-cli-lint-mode-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Override the way linters are called by MegaLinter
description: Cli lint mode can be list_of_files, project or files
---
--&gt; 
&lt;h3&gt;CLI lint mode&lt;/h3&gt; 
&lt;p&gt;Each linter is preconfigured to use a default lint mode, which is visible in the MegaLinter documentation (&lt;a href=&quot;https://megalinter.io/latest/descriptors/repository_trivy/#how-the-linting-is-performed&quot;&gt;example&lt;/a&gt;). The possible values are:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;list_of_files&lt;/code&gt;: The linter is called only once, and passed a list of all the files to be processed&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;project&lt;/code&gt;: The linter is called only once, from the root folder of the repository, and it scans for the files to process, as no file names are provided to it&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;file&lt;/code&gt;: The linter is called once per file, which hurts performance&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;You can override the CLI_LINT_MODE by using a configuration variable for each linter (see the &lt;a href=&quot;https://megalinter.io/supported-linters/&quot;&gt;linters documentation&lt;/a&gt;).&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Linters that default to the &lt;code&gt;file&lt;/code&gt; lint mode cannot be overridden to use the &lt;code&gt;list_of_files&lt;/code&gt; lint mode.&lt;/li&gt; 
 &lt;li&gt;Linters that default to the &lt;code&gt;project&lt;/code&gt; lint mode cannot be overridden to use either the &lt;code&gt;list_of_files&lt;/code&gt; or &lt;code&gt;file&lt;/code&gt; lint modes.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Allowing &lt;code&gt;file&lt;/code&gt; or &lt;code&gt;list_of_files&lt;/code&gt; to be overridden to &lt;code&gt;project&lt;/code&gt; is mostly for workarounds. For example, some linters have a problem finding their config file when the current folder isn&#39;t the repository root.&lt;/p&gt; 
&lt;p&gt;Special considerations:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Linters that are configured to use the &lt;code&gt;project&lt;/code&gt; lint mode ignore variables like &lt;code&gt;FILTER_REGEX_INCLUDE&lt;/code&gt; and &lt;code&gt;FILTER_REGEX_EXCLUDE&lt;/code&gt;, as they are not passed a list of files to lint. For those linters, you must check their documentation to see if a linter can be configured to ignore specific files. For example, the &lt;a href=&quot;https://megalinter.io/latest/descriptors/repository_secretlint/&quot;&gt;Secretlint&lt;/a&gt; linter ignores files listed in &lt;code&gt;~/.secretlintignore&lt;/code&gt; by default, or it can be configured to instead ignore files listed in &lt;code&gt;~/.gitignore&lt;/code&gt; by setting &lt;code&gt;REPOSITORY_SECRETLINT_ARGUMENTS&lt;/code&gt; to &lt;code&gt;--secretlintignore .gitignore.&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- config-cli-lint-mode-section-end --&gt; 
&lt;!-- configuration-section-end --&gt; 
&lt;!-- reporters-section-start --&gt; 
&lt;!-- markdown-headers
---
title: MegaLinter Reporters Guide
description: &quot;List of all available reporters: Text, SARIF, TAP, GitHub, Gitlab, Azure, IDE, File.io, Email, JSON…&quot;
---
--&gt; 
&lt;h2&gt;Reporters&lt;/h2&gt; 
&lt;p&gt;MegaLinter can generate various reports that you can activate or deactivate and customize.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Reporter&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
   &lt;th&gt;Default&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/TextReporter.md&quot;&gt;Text files&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Generates &lt;strong&gt;One log file by linter&lt;/strong&gt; + suggestions for fixes that can not be automated&lt;/td&gt; 
   &lt;td&gt;Active&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/SarifReporter.md&quot;&gt;SARIF (beta)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Generates an aggregated SARIF output file&lt;/td&gt; 
   &lt;td&gt;Inactive&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/GitHubCommentReporter.md&quot;&gt;GitHub Pull Request comments&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;MegaLinter posts a comment on the PR with a summary of lint results, and links to detailed logs&lt;/td&gt; 
   &lt;td&gt;Active if GitHub Action&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/GitlabCommentReporter.md&quot;&gt;Gitlab Merge Request comments&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Mega-Linter posts a comment on the MR with a summary of lint results, and links to detailed logs&lt;/td&gt; 
   &lt;td&gt;Active if in Gitlab CI&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/AzureCommentReporter.md&quot;&gt;Azure Pipelines Pull Request comments&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Mega-Linter posts a comment on the PR with a summary of lint results, and links to detailed logs&lt;/td&gt; 
   &lt;td&gt;Active if in Azure Pipelines&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/BitbucketCommentReporter.md&quot;&gt;Bitbucket Pull Request comments&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Mega-Linter posts a comment on the PR with a summary of lint results, and links to detailed logs&lt;/td&gt; 
   &lt;td&gt;Active if in Bitbucket CI&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/ApiReporter.md&quot;&gt;API (Grafana)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Sends logs and metrics to Grafana endpoint (Loki / Prometheus)&lt;/td&gt; 
   &lt;td&gt;Inactive&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/UpdatedSourcesReporter.md&quot;&gt;Updated sources&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Zip containing &lt;strong&gt;all formatted and autofixed sources&lt;/strong&gt; so you can extract them in your repository&lt;/td&gt; 
   &lt;td&gt;Active&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/ConfigReporter.md&quot;&gt;IDE Configuration&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Apply MegaLinter configuration in your local IDE with linter config files and IDE extensions&lt;/td&gt; 
   &lt;td&gt;Active&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/GitHubStatusReporter.md&quot;&gt;GitHub Status&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;One GitHub status by linter on the PR, with links to detailed logs&lt;/td&gt; 
   &lt;td&gt;Active if GitHub Action&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/FileIoReporter.md&quot;&gt;File.io&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Send reports on file.io&lt;/strong&gt; so you can access them with a simple hyperlink provided at the end of console log&lt;/td&gt; 
   &lt;td&gt;Inactive&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/JsonReporter.md&quot;&gt;JSON&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Generates a JSON output report file&lt;/td&gt; 
   &lt;td&gt;Inactive&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/EmailReporter.md&quot;&gt;Email&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Receive &lt;strong&gt;all reports on your e-mail&lt;/strong&gt;, if you can not use artifacts&lt;/td&gt; 
   &lt;td&gt;Active&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/TapReporter.md&quot;&gt;TAP files&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;One file by linter following &lt;a href=&quot;https://testanything.org/&quot;&gt;&lt;strong&gt;Test Anything Protocol&lt;/strong&gt;&lt;/a&gt; format&lt;/td&gt; 
   &lt;td&gt;Active&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/ConsoleReporter.md&quot;&gt;Console&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Execution logs&lt;/strong&gt; visible in &lt;strong&gt;console&lt;/strong&gt; with &lt;strong&gt;summary table&lt;/strong&gt; and &lt;strong&gt;links to other reports&lt;/strong&gt; at the end&lt;/td&gt; 
   &lt;td&gt;Active&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/MarkdownSummaryReporter.md&quot;&gt;Markdown Summary&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Generates a Markdown summary report file&lt;/td&gt; 
   &lt;td&gt;Inactive&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;!-- reporters-section-end --&gt; 
&lt;!-- flavors-section-start --&gt; 
&lt;!-- markdown-headers
---
title: MegaLinter Flavors for better performances
description: Use one of the numerous MegaLinter flavors to run MegaLinter even faster with only the linters you need
---
--&gt; 
&lt;h2&gt;Flavors&lt;/h2&gt; 
&lt;p&gt;To improve run performance, we provide &lt;strong&gt;flavored MegaLinter images&lt;/strong&gt; containing only the linters related to a project type.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;When using the default MegaLinter, if a MegaLinter flavor would cover all your project requirements, a message is added in the logs.&lt;/li&gt; 
 &lt;li&gt;If your project uses a MegaLinter flavor that doesn&#39;t cover linter requirements, an error message will be thrown with instructions on how to solve the issue.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;em&gt;The following table doesn&#39;t display docker pulls from &lt;a href=&quot;https://hub.docker.com/r/nvuillam/mega-linter&quot;&gt;MegaLinter v4 &amp;amp; v5 images&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt; 
&lt;!-- flavors-table-start --&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th align=&quot;center&quot;&gt;
    &lt;!-- --&gt;&lt;/th&gt; 
   &lt;th align=&quot;left&quot;&gt;Flavor&lt;/th&gt; 
   &lt;th align=&quot;left&quot;&gt;Description&lt;/th&gt; 
   &lt;th align=&quot;center&quot;&gt;Embedded linters&lt;/th&gt; 
   &lt;th align=&quot;right&quot;&gt;Info&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/mega-linter-square.png&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://megalinter.io/beta/supported-linters/&quot;&gt;all&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Default MegaLinter Flavor&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;134&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/c_cpp.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/c_cpp.md&quot;&gt;c_cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for pure C/C++ projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;58&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/ci_light.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/ci_light.md&quot;&gt;ci_light&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;22&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/cupcake.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/cupcake.md&quot;&gt;cupcake&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;MegaLinter for the most commonly used languages&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;91&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/documentation.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/documentation.md&quot;&gt;documentation&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;MegaLinter for documentation projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;51&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/dotnet.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/dotnet.md&quot;&gt;dotnet&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for C, C++, C# or VB based projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;66&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/dotnetweb.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/dotnetweb.md&quot;&gt;dotnetweb&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for C, C++, C# or VB based projects with JS/TS&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;75&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/formatters.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/formatters.md&quot;&gt;formatters&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Contains only formatters&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;19&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-formatters/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-formatters&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/go.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/go.md&quot;&gt;go&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for GO based projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;53&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-go&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/java.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/java.md&quot;&gt;java&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for JAVA based projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;56&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-java&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/javascript.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/javascript.md&quot;&gt;javascript&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for JAVASCRIPT or TYPESCRIPT based projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;61&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/php.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/php.md&quot;&gt;php&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for PHP based projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;56&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-php&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/python.md&quot;&gt;python&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for PYTHON based projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;68&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-python&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/ruby.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/ruby.md&quot;&gt;ruby&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for RUBY based projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;52&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/rust.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/rust.md&quot;&gt;rust&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for RUST based projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;52&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/salesforce.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/salesforce.md&quot;&gt;salesforce&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for Salesforce based projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;58&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/security.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/security.md&quot;&gt;security&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for security&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;25&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-security/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-security&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/swift.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/swift.md&quot;&gt;swift&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for SWIFT based projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;52&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/terraform.ico&quot; alt=&quot;&quot; height=&quot;32px&quot; class=&quot;megalinter-icon&quot; /&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/flavors/terraform.md&quot;&gt;terraform&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Optimized for TERRAFORM based projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;56&lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/beta&quot; alt=&quot;Docker Image Size (tag)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;!-- flavors-table-end --&gt; 
&lt;p&gt;If you need a new flavor, &lt;a href=&quot;https://github.com/oxsecurity/megalinter/issues&quot;&gt;post an issue&lt;/a&gt; &lt;span&gt;😉&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;You can also generate your own &lt;a href=&quot;https://megalinter.io/beta/custom-flavors/&quot;&gt;custom flavors&lt;/a&gt; to include exactly the linters you need in your MegaLinter Docker image.&lt;/p&gt; 
&lt;!-- flavors-section-end --&gt; 
&lt;!-- badge-section-start --&gt; 
&lt;!-- markdown-headers
---
title: MegaLinter Badges
description: Show that your repositories are cleaned and secured with MegaLinter with a badge
---
--&gt; 
&lt;h2&gt;Badge&lt;/h2&gt; 
&lt;p&gt;You can show the MegaLinter status with a badge in your repository README.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/actions?query=workflow%3AMegaLinter+branch%3Amain&quot;&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/workflows/MegaLinter/badge.svg?branch=main&quot; alt=&quot;MegaLinter&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;If your main branch is named &lt;code&gt;master&lt;/code&gt;, replace &lt;code&gt;main&lt;/code&gt; with &lt;code&gt;master&lt;/code&gt; in the URLs.&lt;/p&gt; 
&lt;h3&gt;Markdown&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Format&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;[![MegaLinter](https://github.com/&amp;lt;OWNER&amp;gt;/&amp;lt;REPOSITORY&amp;gt;/workflows/MegaLinter/badge.svg?branch=main)](https://github.com/&amp;lt;OWNER&amp;gt;/&amp;lt;REPOSITORY&amp;gt;/actions?query=workflow%3AMegaLinter+branch%3Amain)
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Example&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;[![MegaLinter](https://github.com/nvuillam/npm-groovy-lint/workflows/MegaLinter/badge.svg?branch=main)](https://github.com/nvuillam/npm-groovy-lint/actions?query=workflow%3AMegaLinter+branch%3Amain)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;reStructuredText&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Format&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;.. |MegaLinter yes| image:: https://github.com/&amp;lt;OWNER&amp;gt;/&amp;lt;REPOSITORY&amp;gt;/workflows/MegaLinter/badge.svg?branch=main
   :target: https://github.com/&amp;lt;OWNER&amp;gt;/&amp;lt;REPOSITORY&amp;gt;/actions?query=workflow%3AMegaLinter+branch%3Amain
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Example&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;.. |MegaLinter yes| image:: https://github.com/nvuillam/npm-groovy-lint/workflows/MegaLinter/badge.svg?branch=main
   :target: https://github.com/nvuillam/npm-groovy-lint/actions?query=workflow%3AMegaLinter+branch%3Amain
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; IF you did not use &lt;code&gt;MegaLinter&lt;/code&gt; as GitHub Action name, please read &lt;a href=&quot;https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/adding-a-workflow-status-badge&quot;&gt;GitHub Actions Badges documentation&lt;/a&gt;{target=_blank}&lt;/p&gt; 
&lt;!-- badge-section-end --&gt; 
&lt;!-- plugins-section-start --&gt; 
&lt;!-- markdown-headers
---
title: MegaLinter plugins
description: Build and use your own plugins for MegaLinter, like jupyfmt, nitpick, mustache and linkcheck
---
--&gt; 
&lt;h2&gt;Plugins&lt;/h2&gt; 
&lt;p&gt;For performance and security reasons, we cannot embed every linter in MegaLinter.&lt;/p&gt; 
&lt;p&gt;But our core architecture allows building and publishing MegaLinter plugins!&lt;/p&gt; 
&lt;h3&gt;External Plugins Catalog&lt;/h3&gt; 
&lt;!-- plugins-table-start --&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt; 
   &lt;th align=&quot;left&quot;&gt;Description&lt;/th&gt; 
   &lt;th align=&quot;center&quot;&gt;Author&lt;/th&gt; 
   &lt;th align=&quot;left&quot;&gt;Raw URL&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/kpj/jupyfmt#mega-linter-integration&quot;&gt;&lt;strong&gt;jupyfmt&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;The uncompromising Jupyter notebook formatter&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/kpj&quot;&gt;Kim Philipp Jablonski&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kpj/jupyfmt/master/mega-linter-plugin-jupyfmt/jupyfmt.megalinter-descriptor.yml&quot;&gt;Descriptor&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/shiranr/linkcheck&quot;&gt;&lt;strong&gt;linkcheck&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Plugin to check and validate markdown links exist and working&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/shiranr&quot;&gt;Shiran Rubin&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/shiranr/linkcheck/main/mega-linter-plugin-linkcheck/linkcheck.megalinter-descriptor.yml&quot;&gt;Descriptor&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/andreoliwa/nitpick#run-as-a-megalinter-plugin&quot;&gt;&lt;strong&gt;nitpick&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Command-line tool and flake8 plugin to enforce the same settings across multiple language-independent projects&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/andreoliwa&quot;&gt;W. Augusto Andreoli&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/andreoliwa/nitpick/master/mega-linter-plugin-nitpick/nitpick.megalinter-descriptor.yml&quot;&gt;Descriptor&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/one-acre-fund/mega-linter-plugin-logstash&quot;&gt;&lt;strong&gt;mustache&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Plugin to validate &lt;a href=&quot;https://www.elastic.co/guide/en/logstash/current/configuration.html&quot;&gt;Logstash&lt;/a&gt; pipeline definition files using &lt;a href=&quot;https://github.com/breml/logstash-config&quot;&gt;mustache&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/Yann-J&quot;&gt;Yann Jouanique&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/one-acre-fund/mega-linter-plugin-logstash/main/mega-linter-plugin-logstash/logstash.megalinter-descriptor.yml&quot;&gt;Descriptor&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/ssc-services/mega-linter-plugin-salt&quot;&gt;&lt;strong&gt;salt-lint&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Checks Salt State files (SLS) for best practices and behavior that could potentially be improved.&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/grimmjo&quot;&gt;Joachim Grimm&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ssc-services/mega-linter-plugin-salt/main/mega-linter-plugin-salt/salt.megalinter-descriptor.yml&quot;&gt;Descriptor&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean/mega-linter-plugin-dclint/raw/main/README.md&quot;&gt;&lt;strong&gt;docker-compose-linter&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Plugin to lint docker-compose files&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean&quot;&gt;Wesley Dean&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean/mega-linter-plugin-dclint/raw/main/mega-linter-plugin-dclint/dclint.megalinter-descriptor.yml&quot;&gt;Descriptor&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean/mega-linter-plugin-repolinter/raw/main/README.md&quot;&gt;&lt;strong&gt;repolinter&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Plugin to run TODO Group&#39;s repolinter to look for repository best practices&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean&quot;&gt;Wesley Dean&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean/mega-linter-plugin-repolinter/raw/main/mega-linter-plugin-repolinter/repolinter.megalinter-descriptor.yml&quot;&gt;Descriptor&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean/mega-linter-plugin-j2lint/raw/main/README.md&quot;&gt;&lt;strong&gt;j2lint&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Plugin to lint Jinja2 files&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean&quot;&gt;Wesley Dean&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean/mega-linter-plugin-j2lint/raw/main/mega-linter-plugin-j2lint/j2lint.megalinter-descriptor.yml&quot;&gt;Descriptor&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean/mega-linter-plugin-fmlint/raw/main/README.md&quot;&gt;&lt;strong&gt;fmlint&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;Plugin to lint YAML frontmatter in Markdown documents&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean&quot;&gt;Wesley Dean&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean/mega-linter-plugin-fmlint/raw/main/mega-linter-plugin-fmlint/fmlint.megalinter-descriptor.yml&quot;&gt;Descriptor&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;!-- plugins-table-end --&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Note: Using an external plugin means you trust its author.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Submit a Pull Request if you want your plugin to appear here :)&lt;/p&gt; 
&lt;h3&gt;Use external plugins&lt;/h3&gt; 
&lt;p&gt;Add plugin URLs in the &lt;code&gt;PLUGINS&lt;/code&gt; property of &lt;code&gt;.mega-linter.yml&lt;/code&gt;. URLs must either begin with &quot;https://&quot; or take the form of &quot;file://&amp;lt;path&amp;gt;&quot;, where &amp;lt;path&amp;gt; points to a valid plugin descriptor file.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Note: Both &amp;lt;path&amp;gt; and the default mount directory (/tmp/lint/&amp;lt;path&amp;gt;) will be checked for a valid descriptor.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h4&gt;Example&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;PLUGINS:
  - https://raw.githubusercontent.com/kpj/jupyfmt/master/mega-linter-plugin-jupyfmt/jupyfmt.megalinter-descriptor.yml
  - file://.automation/test/mega-linter-plugin-test/test.megalinter-descriptor.yml
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Create your own plugin&lt;/h3&gt; 
&lt;p&gt;You can implement your own descriptors and load them as plugins during MegaLinter runtime.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Descriptor format is exactly the same as &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/megalinter/descriptors&quot;&gt;MegaLinter embedded ones&lt;/a&gt; (&lt;a href=&quot;https://megalinter.io/json-schemas/descriptor.html&quot;&gt;see JSON schema documentation&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Plugin descriptor files must be named &lt;strong&gt;**.megalinter-descriptor.yml&lt;/strong&gt; and conform to the &lt;a href=&quot;https://github.com/oxsecurity/megalinter/raw/main/megalinter/descriptors/schemas/megalinter-descriptor.jsonschema.json&quot;&gt;MegaLinter JSON Schema&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Plugins must be hosted in a URL containing &lt;strong&gt;**/mega-linter-plugin-**/&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;File URLs must conform to the same directory and file naming criteria as defined above.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Limitations&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;For now, the only &lt;code&gt;install&lt;/code&gt; attributes managed are &lt;code&gt;dockerfile&lt;/code&gt; instructions starting by &lt;code&gt;RUN&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- plugins-section-end --&gt; 
&lt;!-- articles-section-start --&gt; 
&lt;!-- markdown-headers
---
title: MegaLinter Articles Reference
description: List of all known articles, blog posts and videos that talk about MegaLinter usage
---
--&gt; 
&lt;h2&gt;They talk about MegaLinter&lt;/h2&gt; 
&lt;!-- /* cspell:disable */ --&gt; 
&lt;h3&gt;English articles&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th align=&quot;left&quot;&gt;Article&lt;/th&gt; 
   &lt;th align=&quot;left&quot;&gt;Author&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://medium.com/@SeasonedDeveloper/looking-for-the-best-ci-cd-pipeline-linting-tool-try-megalinter-d89c9eba850d&quot;&gt;Looking for the best CI/CD Pipeline Linting Tool? Try MegaLinter!&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://medium.com/@SeasonedDeveloper&quot;&gt;Seasoned Developer&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://medium.com/datamindedbe/integrating-megalinter-to-automate-linting-across-multiple-codebases-a-technical-description-a200bb235b71&quot;&gt;Integrating MegaLinter to Automate Linting Across Multiple Codebases. A Technical Description&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/thorstenfoltz/&quot;&gt;Thorsten Foltz&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://flexion.us/blog/megalinter-performance-tuning/&quot;&gt;MegaLinter Performance Tuning for Maximum Efficiency&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean&quot;&gt;Wes Dean&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://flexion.us/blog/megalinter-tips-and-tricks/&quot;&gt;10 MegaLinter Tips and Tricks Unlock its Full Potential&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean&quot;&gt;Wes Dean&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://medium.com/@caodanju/30-seconds-to-setup-megalinter-your-go-to-tool-for-automated-code-quality-and-iac-security-969d90a5a99c&quot;&gt;30 Seconds to Setup MegaLinter: Your Go-To Tool for Automated Code Quality&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/peng-cao-83b6a2103/&quot;&gt;Peng Cao&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://cloudtuned.hashnode.dev/introducing-megalinter-streamlining-code-quality-checks-across-multiple-languages&quot;&gt;Introducing MegaLinter: Streamlining Code Quality Checks Across Multiple Languages&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://cloudtuned.hashnode.dev/&quot;&gt;Cloud Tuned&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://luke.geek.nz/azure/iac-github-codespace/&quot;&gt;Infrastructure as Code GitHub Codespace Template&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/ljmurray/&quot;&gt;Luke Murray&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://flexion.us/blog/5-ways-megalinter-upped-our-devsecops-game/&quot;&gt;5 ways MegaLinter upped our DevSecOps game&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/wesley-dean&quot;&gt;Wes Dean&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://techcommunity.microsoft.com/t5/azure-devops-blog/achieve-code-consistency-megalinter-integration-in-azure-devops/ba-p/3939448&quot;&gt;Achieve Code Consistency: MegaLinter Integration in Azure DevOps&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://techcommunity.microsoft.com/t5/user/viewprofilepage/user-id/2039143#profile&quot;&gt;Don Koning&lt;/a&gt;{target=_blank} on &lt;a href=&quot;https://techcommunity.microsoft.com/&quot;&gt;Microsoft Tech Community&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://jamescook.dev/megalinter-in-azure-devops&quot;&gt;MegaLinter in Azure DevOps&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/cookjames/&quot;&gt;James Cook&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://codewithme.cloud/posts/2023/08/maximize-your-code-consistency-with-megalinter/&quot;&gt;Maximize your code consistency with Megalinter&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/torivara/&quot;&gt;Tor Ivar Asbølmo&lt;/a&gt;{target=_blank} on &lt;a href=&quot;https://codewithme.cloud&quot;&gt;codewithme.cloud&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://geekflare.com/nodejs-security-scanner/&quot;&gt;8 Tools to Scan Node.js Applications for Security Vulnerability&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/chandank&quot;&gt;Chandan Kumar&lt;/a&gt;{target=_blank} on &lt;a href=&quot;https://geekflare.com/&quot;&gt;GeekFlare.com&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://cloud.google.com/workflows/docs/use-workflows-json-schema-with-ide&quot;&gt;Use the Workflows JSON schema in your IDE&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://cloud.google.com/&quot;&gt;Google Cloud&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://medium.com/@RunningMattress/level-up-your-unity-packages-with-ci-cd-9498d2791211&quot;&gt;Level up your Unity Packages with CI/CD&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://medium.com/@RunningMattress&quot;&gt;RunningMattress&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://secure-git.guide/013_Sharing-GitHub-secrets-with-third-party-actions&quot;&gt;GitHub Actions: sharing your secrets with third-party actions&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/cgbosse&quot;&gt;Constantin Bosse&lt;/a&gt;{target=_blank} and &lt;a href=&quot;https://github.com/hosom&quot;&gt;Stephen Hosom&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.slideshare.net/SimonedeGijt/pluginandplayv4amsterdamjugpptx-251796070&quot;&gt;Talk about the Kotlin plugins Kover, Ktlint and Detekt. Made for the AmsterdamJUG meetup.&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/SimonedeGijt&quot;&gt;Simone de Gijt&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://rse.shef.ac.uk/blog/2022-04-19-linting/&quot;&gt;Linting - What is all the fluff about?&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/neil-shephard-a43a83211/?originalSubdomain=uk&quot;&gt;Neil Shepard&lt;/a&gt;{target=_blank}, University Of Sheffield&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://dev.to/minwi/how-to-apply-security-at-the-source-using-gitops-21bk&quot;&gt;How to apply security at the source using GitOps&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://dev.to/minwi&quot;&gt;Edu Minguez&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://nklya.medium.com/hot-to-linter-basic-things-like-trailing-whitespaces-and-newlines-7b40da8f688d&quot;&gt;How to linter basic things like trailing whitespaces and newlines&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://nklya.medium.com/&quot;&gt;Nicolai Antiferov&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://javascript.plainenglish.io/node-js-coding-standard-tools-with-megalinter-on-gitlab-ci-a43b55915811&quot;&gt;Node.js Coding Standard Tools with MegaLinter on Gitlab CI&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/albion-bame/&quot;&gt;Albion Bame&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.ayyjohn.com/posts/linting-a-jekyll-blog-with-mega-linter&quot;&gt;Linting a Jekyll blog with MegaLinter&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/ayyjohn/&quot;&gt;Alec Johnson&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://nicolas.vuillamy.fr/megalinter-sells-his-soul-and-joins-ox-security-2a91a0027628&quot;&gt;MegaLinter sells his soul and joins OX Security&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://nvuillam.github.io&quot;&gt;Nicolas Vuillamy&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://nicolas.vuillamy.fr/improve-uniformize-and-secure-your-code-base-with-megalinter-62ebab422c1&quot;&gt;Limit your technical debt and secure your code base using MegaLinter&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://nvuillam.github.io&quot;&gt;Nicolas Vuillamy&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;French articles&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th align=&quot;left&quot;&gt;Article&lt;/th&gt; 
   &lt;th align=&quot;left&quot;&gt;Author&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://blog.stephane-robert.info/docs/developper/autres-outils/linters/megalinter/&quot;&gt;MegaLinter&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/stephanerobert1/&quot;&gt;Stéphane Robert&lt;/a&gt;, &lt;a href=&quot;https://fr.outscale.com/&quot;&gt;3DS OutScale&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://blog.wescale.fr/megalinter-un-linter-pour-les-gouverner-tous&quot;&gt;MegaLinter: un linter pour les gouverner tous&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/guillaume-arnaud/&quot;&gt;Guillaume Arnaud&lt;/a&gt;, &lt;a href=&quot;https://www.wescale.fr/&quot;&gt;WeScale&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://www.neosoft.fr/nos-publications/blog-tech/mega-linter-votre-meilleur-ami-pour-un-code-de-qualite/?utm_source=twitter&amp;amp;utm_medium=organic&amp;amp;utm_campaign=article-mega-linter&quot;&gt;MegaLinter, votre meilleur ami pour un code de qualité&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://github.com/ThomasSanson&quot;&gt;Thomas Sanson&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Japanese articles&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th align=&quot;left&quot;&gt;Article&lt;/th&gt; 
   &lt;th align=&quot;left&quot;&gt;Author&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://future-architect.github.io/articles/20231129a/?s=03&quot;&gt;Try using MegaLinter&lt;/a&gt;{target=_blank}&lt;/td&gt; 
   &lt;td align=&quot;left&quot;&gt;&lt;a href=&quot;https://future-architect.github.io/authors/%E5%AE%AE%E6%B0%B8%E5%B4%87%E5%8F%B2&quot;&gt;Takashi Minayaga&lt;/a&gt;{target=_blank}&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Videos&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=0JGusPYE4zc&quot;&gt;(Brazilian) Qualidade e Segurança em Código com MegaLinter: automatizando análises em MAUI com GitHub Actions&lt;/a&gt;, by &lt;a href=&quot;https://www.youtube.com/@CanaldotNET&quot;&gt;Canal dotNET&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div style=&quot;text-align:center&quot;&gt;
 &amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/0JGusPYE4zc&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&lt;/div&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=YSdZ3atC2j4&quot;&gt;(Brazilian) MegaLinter: Como Automatizar a Qualidade do Código para Todas Plataformas&lt;/a&gt;, by &lt;a href=&quot;https://www.youtube.com/@hackitectsplayground&quot;&gt;Codando TV&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div style=&quot;text-align:center&quot;&gt;
 &amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/YSdZ3atC2j4&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&lt;/div&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://youtu.be/iBMWAk5QIfM?si=EVcJilkz7Y2jdn6e&amp;amp;t=649&quot;&gt;How to: Secrets scanning&lt;/a&gt;, by &lt;a href=&quot;https://www.youtube.com/@hackitectsplayground&quot;&gt;Hackitect&#39;s playground&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div style=&quot;text-align:center&quot;&gt;
 &amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/iBMWAk5QIfM&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&lt;/div&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=KhkNf2tQ3hM&quot;&gt;How to use MegaLinter with Jenkins&lt;/a&gt;, by &lt;a href=&quot;https://www.linkedin.com/in/darinpope/&quot;&gt;Darin Pope&lt;/a&gt; / &lt;a href=&quot;https://www.cloudbees.com/&quot;&gt;Cloudbees&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div style=&quot;text-align:center&quot;&gt;
 &amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/KhkNf2tQ3hM&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&lt;/div&gt; 
&lt;ul&gt; 
 &lt;li&gt;(FR) MegaLinter presentation at &lt;a href=&quot;https://www.programmez.com/page-devcon/devcon-20-100-securite-qualite-du-code&quot;&gt;DevCon 20 / Programmez Magazine&lt;/a&gt;, by &lt;a href=&quot;https://github.com/nvuillam&quot;&gt;Nicolas Vuillamy&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div style=&quot;text-align:center&quot;&gt;
 &amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/SlKurrIsUls&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&lt;/div&gt; 
&lt;ul&gt; 
 &lt;li&gt;Code quality - Ep01 - MegaLinter, one linter to rule them all, by &lt;a href=&quot;https://github.com/devpro&quot;&gt;Bertrand Thomas&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div style=&quot;text-align:center&quot;&gt;
 &amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/NauVD4z-cMA&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&lt;/div&gt; 
&lt;ul&gt; 
 &lt;li&gt;DevSecOps Webinar using MegaLinter, by &lt;a href=&quot;https://www.515tech.com/&quot;&gt;5.15 Technologies&lt;/a&gt;{target=_blank}&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div style=&quot;text-align:center&quot;&gt;
 &amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/hk950RUwIUA&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&lt;/div&gt; 
&lt;ul&gt; 
 &lt;li&gt;Ortelius Architecture Meeting, with a review of MegaLinter, by &lt;a href=&quot;https://github.com/sbtaylor15&quot;&gt;Steve Taylor&lt;/a&gt;{target=_blank} from &lt;a href=&quot;https://ortelius.io/&quot;&gt;Ortelius&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div style=&quot;text-align:center&quot;&gt;
 &amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/oegOSmVegiQ?start=1510&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&lt;/div&gt; 
&lt;h3&gt;Web Sites&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://analysis-tools.dev/tool/mega-linter&quot;&gt;analysis-tools.dev&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/caramelomartins/awesome-linters#language-agnostic&quot;&gt;awesome-linters&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.schemastore.org/&quot;&gt;schemastore.org&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.abhith.net/recommended/&quot;&gt;abhith.net&lt;/a&gt;{target=_blank}&lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- - [iac-analyzers.dev/](https://iac-analyzers.dev/){target=_blank} --&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.my-devops-lab.com/tools&quot;&gt;my-devops-lab.com&lt;/a&gt;{target=_blank}&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Linters&lt;/h3&gt; 
&lt;!-- referring-linters-start --&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/checkmake/checkmake?tab=readme-ov-file#megalinter&quot;&gt;checkmake&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://checkstyle.org/index.html#Related_Tools_Active_Tools&quot;&gt;checkstyle&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/borkdude/clj-kondo/raw/master/doc/ci-integration.md#github&quot;&gt;clj-kondo&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/greglook/cljstyle/raw/main/doc/integrations.md&quot;&gt;cljstyle&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/streetsidesoftware/cspell/tree/master/packages/cspell#mega-linter&quot;&gt;cspell&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://detekt.dev/docs/intro&quot;&gt;detekt&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://djlint.com/docs/integrations/#megalinter&quot;&gt;djlint&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://dotenv-linter.github.io/#/integrations/mega_linter&quot;&gt;dotenv-linter&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/editorconfig-checker/editorconfig-checker#mega-linter&quot;&gt;editorconfig-checker&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://eslint.org/docs/latest/use/integrations#source-control&quot;&gt;eslint&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://eslint.org/docs/latest/use/integrations#source-control&quot;&gt;eslint-plugin-jsonc&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/hadolint/hadolint/raw/master/docs/INTEGRATION.md#mega-linter&quot;&gt;hadolint&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://htmlhint.com/integrations/task-runner/&quot;&gt;htmlhint&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kucherenko/jscpd#who-uses-jscpd&quot;&gt;jscpd&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.kics.io/latest/integrations/&quot;&gt;kics&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pinterest/ktlint#-with-continuous-integration&quot;&gt;ktlint&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://lintr.r-lib.org/articles/continuous-integration.html&quot;&gt;lintr&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://nvuillam.github.io/npm-groovy-lint/#mega-linter&quot;&gt;npm-groovy-lint&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://npmpackagejsonlint.org/docs/integrations#megalinter&quot;&gt;npm-package-json-lint&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://pmd.sourceforge.io/pmd-6.55.0/pmd_userdocs_tools_ci.html&quot;&gt;pmd&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/twolfson/restructuredtext-lint/wiki/Integration-in-other-tools#integration-in-other-tools&quot;&gt;rst-lint&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://rstcheck.readthedocs.io/en/latest/usage/integration/#use-with-mega-linter&quot;&gt;rstcheck&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.rubocop.org/rubocop/integration_with_other_tools.html#mega-linter-integration&quot;&gt;rubocop&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://scalacenter.github.io/scalafix/docs/users/installation.html#plugins-for-other-build-tools&quot;&gt;scalafix&lt;/a&gt;{target=_blank}&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/secretlint/secretlint#mega-linter&quot;&gt;secretlint&lt;/a&gt;{target=_blank}&lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- referring-linters-end --&gt; 
&lt;!-- /* cspell:enable */ --&gt; 
&lt;!-- articles-section-end --&gt; 
&lt;!-- frequently-asked-questions-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Frequently Asked Questions about MegaLinter
description: List of recurrent questions about MegaLinter
---
--&gt; 
&lt;h2&gt;Frequently Asked Questions&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;My repo CI already has linters and they&#39;re working perfectly, so why do I need MegaLinter?&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;You can continue using your installed linters and deactivate them in &lt;code&gt;.mega-linter.yml&lt;/code&gt;. For example, in a JavaScript project using ESLint, configure MegaLinter with &lt;code&gt;DISABLE: JAVASCRIPT&lt;/code&gt;. That way, you will benefit from both your installed linters and other MegaLinter linters checking JSON, YAML, Markdown, Dockerfile, Bash, spelling mistakes, dead URLs…&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;OK but… how does it work?&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;MegaLinter is based on Docker images containing either all linters, or a selection of linters if you use a MegaLinter flavor for a project with a specific language or format.&lt;/p&gt; 
&lt;p&gt;The core architecture does the following:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Initialization&lt;/strong&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;List all project files&lt;/strong&gt;: 
    &lt;ul&gt; 
     &lt;li&gt;except files in ignored folders (&lt;code&gt;node_modules&lt;/code&gt;, etc…)&lt;/li&gt; 
     &lt;li&gt;except files not matching &lt;code&gt;FILTER_REGEX_INCLUDE&lt;/code&gt; (if defined by user)&lt;/li&gt; 
     &lt;li&gt;except files matching &lt;code&gt;FILTER_REGEX_EXCLUDE&lt;/code&gt; (if defined by user)&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Collect files for each activated linter&lt;/strong&gt;, matching their &lt;strong&gt;own filtering criteria&lt;/strong&gt;: 
    &lt;ul&gt; 
     &lt;li&gt;file extensions&lt;/li&gt; 
     &lt;li&gt;file names&lt;/li&gt; 
     &lt;li&gt;file content&lt;/li&gt; 
     &lt;li&gt;&lt;code&gt;&amp;lt;descriptor_or_linter_key&amp;gt;_FILTER_REGEX_INCLUDE&lt;/code&gt; (if defined by user)&lt;/li&gt; 
     &lt;li&gt;&lt;code&gt;&amp;lt;descriptor_or_linter_key&amp;gt;_FILTER_REGEX_EXCLUDE&lt;/code&gt; (if defined by user)&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Linting&lt;/strong&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;Parallelly&lt;/strong&gt;, for &lt;strong&gt;each linter&lt;/strong&gt; with matching files: 
    &lt;ul&gt; 
     &lt;li&gt;&lt;strong&gt;Call the linter&lt;/strong&gt; on matching files (or the whole project for some linters like copy-paste detector)&lt;/li&gt; 
     &lt;li&gt;Call activated &lt;strong&gt;linter-level reporters&lt;/strong&gt; (GitHub Status Reporter…)&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Finalization&lt;/strong&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Call activated &lt;strong&gt;global level reporters&lt;/strong&gt; (GitHub Pull Request Comment Reporter, File.io Reporter, Email Reporter…)&lt;/li&gt; 
   &lt;li&gt;Manage return code: 
    &lt;ul&gt; 
     &lt;li&gt;&lt;strong&gt;0&lt;/strong&gt; if no error (or only non blocking errors if user defined &lt;code&gt;DISABLE_ERRORS&lt;/code&gt; or &lt;code&gt;&amp;lt;descriptor_or_linter_key&amp;gt;_DISABLE_ERRORS&lt;/code&gt;)&lt;/li&gt; 
     &lt;li&gt;&lt;strong&gt;1&lt;/strong&gt; if errors&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- frequently-asked-questions-section-end --&gt; 
&lt;!-- how-to-contribute-section-start --&gt; 
&lt;!-- markdown-headers
---
title: MegaLinter Contributing Guide
description: Help MegaLinter by starring the repo, post issues and Pull Requests, or even sponsor the author
---
--&gt; 
&lt;h2&gt;How to contribute&lt;/h2&gt; 
&lt;p&gt;Contributions to MegaLinter are very welcome: the more we are, the stronger MegaLinter becomes! Please follow &lt;a href=&quot;https://megalinter.io/contributing/&quot;&gt;Contributing Guide&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;To help, you can also:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/stargazers&quot;&gt;&lt;span&gt;⭐&lt;/span&gt; Star the repository&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sponsors/nvuillam&quot;&gt;&lt;span&gt;🍺&lt;/span&gt; Offer a beer!&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/issues&quot;&gt;report problems and request new features&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://twitter.com/intent/tweet/?text=MegaLinter:%2070%20linters%20aggregator%20easy%20to%20use%20for%20all%20your%20projects&amp;amp;url=http://megalinter.io/&amp;amp;via=nvuillam&quot;&gt;share on twitter&lt;/a&gt;{target=_blank}&lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- how-to-contribute-section-end --&gt; 
&lt;!-- special-thanks-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Special Thanks from MegaLinter
description: List of all contributors, websites and linters that help MegaLinter to grow and be better everyday
---
--&gt; 
&lt;h2&gt;Special thanks&lt;/h2&gt; 
&lt;h3&gt;Maintainers&lt;/h3&gt; 
&lt;p&gt;MegaLinter wouldn&#39;t be what it is without its great team of maintainers!&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Kurt-von-Laven&quot;&gt;Kurt Von Laven&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bdovaz&quot;&gt;Borja Dominguez&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/echoix&quot;&gt;Edouard Choiniere&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nvuillam&quot;&gt;Nicolas Vuillamy&lt;/a&gt; (Creator)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Contributors&lt;/h3&gt; 
&lt;a href=&quot;https://github.com/oxsecurity/megalinter/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=oxsecurity/megalinter&quot; /&gt; &lt;/a&gt; 
&lt;h3&gt;Open-source teams&lt;/h3&gt; 
&lt;p&gt;MegaLinter obviously would not exist without its linters and libraries: many thanks to all the dedicated open-source teams maintaining these awesome linters!&lt;/p&gt; 
&lt;h3&gt;Super-Linter team&lt;/h3&gt; 
&lt;p&gt;MegaLinter has been built on the ashes of a &lt;a href=&quot;https://github.com/super-linter/super-linter/pull/791&quot;&gt;rejected Pull Request&lt;/a&gt;{target=_blank} on &lt;a href=&quot;https://github.com/super-linter/super-linter&quot;&gt;GitHub Super-Linter&lt;/a&gt;{target=_blank}.&lt;/p&gt; 
&lt;p&gt;Even if I disagree with their decision to remain in Bash, the core team has always been nice and supportive &lt;a href=&quot;https://github.com/super-linter/super-linter/pulls?q=is%3Apr+is%3Aclosed+author%3Anvuillam+review%3Aapproved&quot;&gt;during the time I was a Super-Linter contributor&lt;/a&gt;{target=_blank} :)&lt;/p&gt; 
&lt;!-- special-thanks-section-end --&gt; 
&lt;!-- license-section-start --&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/raw/main/LICENSE&quot;&gt;GNU Affero General Public License&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- license-section-end --&gt; 
&lt;!-- mega-linter-vs-super-linter-section-start --&gt; 
&lt;!-- markdown-headers
---
title: Compare MegaLinter and SuperLinter
description: Detailed differences between MegaLinter and SuperLinter (performances, reporters, architecture…)
---
--&gt; 
&lt;h2&gt;MegaLinter vs Super-Linter&lt;/h2&gt; 
&lt;p&gt;The hard fork of Super-Linter to Python isn&#39;t just a language switch: Python&#39;s flexibility and libraries enabled many additional features described below.&lt;/p&gt; 
&lt;h3&gt;Security&lt;/h3&gt; 
&lt;p&gt;MegaLinter &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-variables-security.md&quot;&gt;hides many environment variables&lt;/a&gt; when calling the linters.&lt;/p&gt; 
&lt;p&gt;That way you need to trust only MegaLinter core code with your secrets, not the 100+ embedded linters !&lt;/p&gt; 
&lt;h3&gt;Performance&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/#flavors&quot;&gt;MegaLinter flavors&lt;/a&gt; allow using smaller Docker images, reducing pull time.&lt;/li&gt; 
 &lt;li&gt;Thanks to Python multiprocessing, linters are run in parallel, which is much faster than Super-Linter&#39;s Bash script that runs all linters sequentially.&lt;/li&gt; 
 &lt;li&gt;When the linter allows it, call it once with N files, instead of calling it N times with one file.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;More languages and formats linted&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;C&lt;/strong&gt;, &lt;strong&gt;C++&lt;/strong&gt;, &lt;strong&gt;Copy-Paste detection&lt;/strong&gt;, &lt;strong&gt;Credentials&lt;/strong&gt;, &lt;strong&gt;GraphQL&lt;/strong&gt;, &lt;strong&gt;JSON &amp;amp; YAML with JSON schemas&lt;/strong&gt;, &lt;strong&gt;Markdown tables formatting&lt;/strong&gt;, &lt;strong&gt;Puppet&lt;/strong&gt;, &lt;strong&gt;reStructuredText&lt;/strong&gt;, &lt;strong&gt;Rust&lt;/strong&gt;, &lt;strong&gt;Scala&lt;/strong&gt;, &lt;strong&gt;Spell checker&lt;/strong&gt;, &lt;strong&gt;Swift&lt;/strong&gt;, &lt;strong&gt;Visual Basic .NET&lt;/strong&gt; …&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Automatically apply formatting and fixes&lt;/h3&gt; 
&lt;p&gt;MegaLinter can &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/config-apply-fixes.md&quot;&gt;automatically apply fixes performed by linters&lt;/a&gt; and push them to the same branch, or create a Pull Request that you can validate.&lt;/p&gt; 
&lt;p&gt;This is pretty handy, especially for linter errors related to formatting (in that case, you don&#39;t have any manual update to perform)&lt;/p&gt; 
&lt;h3&gt;Run locally&lt;/h3&gt; 
&lt;p&gt;MegaLinter can be run locally thanks to &lt;a href=&quot;https://megalinter.io/mega-linter-runner/&quot;&gt;mega-linter-runner&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Reports&lt;/h3&gt; 
&lt;h4&gt;Capabilities&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Accuracy: Count the total number of errors, not only the number of files in error.&lt;/li&gt; 
 &lt;li&gt;Show linter version and applied filters for each linter processed.&lt;/li&gt; 
 &lt;li&gt;Reports stored as artifacts on GitHub Actions runs or other remote files 
  &lt;ul&gt; 
   &lt;li&gt;General log&lt;/li&gt; 
   &lt;li&gt;One report file by linter&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Additional Reporters&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/ConsoleReporter.md&quot;&gt;Console&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/ConsoleReporter.jpg?raw=true&quot; alt=&quot;Screenshot&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/TextReporter.md&quot;&gt;Text files&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/GitHubCommentReporter.md&quot;&gt;GitHub Pull Request comments&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/GitHubCommentReporter.jpg?raw=true&quot; alt=&quot;Screenshot&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/GitlabCommentReporter.md&quot;&gt;Gitlab Merge Request comments&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/GitlabCommentReporter.jpg?raw=true&quot; alt=&quot;Screenshot&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/docs/reporters/BitbucketCommentReporter.md&quot;&gt;Bitbucket Pull Request comments&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/docs/assets/images/BitbucketCommentReporter.png&quot; alt=&quot;Screenshot&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/AzureCommentReporter.md&quot;&gt;Azure Pull Request comments&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/AzureCommentReporter.jpg?raw=true&quot; alt=&quot;Screenshot&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/docs/reporters/MarkdownSummaryReporter.md&quot;&gt;Markdown Summary&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/oxsecurity/megalinter/main/docs/assets/images/MarkdownSummaryReporter_2.png&quot; alt=&quot;Screenshot&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/UpdatedSourcesReporter.md&quot;&gt;Updated sources&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/EmailReporter.md&quot;&gt;Email&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/docs/reporters/FileIoReporter.md&quot;&gt;File.io&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Enhanced configuration&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Assisted installation and configuration using a Yeoman generator and JSON schemas for the configuration file&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/mega-linter-runner-generator.gif?raw=true&quot; alt=&quot;Runner Install&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/assisted-configuration.gif&quot; alt=&quot;Assisted configuration&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Configure include and exclude regexes for a single language or linter: e.g., &lt;code&gt;JAVASCRIPT_FILTER_REGEX_INCLUDE (src)&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Configure additional CLI arguments for a linter: e.g., &lt;code&gt;JAVASCRIPT_ES_ARGUMENTS &quot;--debug --env-info&quot;&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Configure non-blocking errors for a single language or linter: e.g., &lt;code&gt;JAVASCRIPT_DISABLE_ERRORS&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Simplified languages and linters variables 
  &lt;ul&gt; 
   &lt;li&gt;ENABLE = list of languages and formats to apply lint on codebase (default: all)&lt;/li&gt; 
   &lt;li&gt;ENABLE_LINTERS = list of linters to apply lint on codebase (default: all)&lt;/li&gt; 
   &lt;li&gt;DISABLE = list of languages and formats to skip (default: none)&lt;/li&gt; 
   &lt;li&gt;DISABLE_LINTERS = list of linters to skip (default: none)&lt;/li&gt; 
   &lt;li&gt;Variables VALIDATE_XXX are still taken in account (but should not be used in association with ENABLE and DISABLE variables)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Enhanced documentation&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://megalinter.io/&quot;&gt;HTML documentation&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/html_doc_home.jpg&quot; alt=&quot;HTML doc home&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;One page per linter documentation: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;All variables&lt;/strong&gt; that can be used with this linter&lt;/li&gt; 
   &lt;li&gt;List of &lt;strong&gt;file extensions, names and filters&lt;/strong&gt; applied by the linter&lt;/li&gt; 
   &lt;li&gt;Link to MegaLinter default linter configuration&lt;/li&gt; 
   &lt;li&gt;Link to linter website&lt;/li&gt; 
   &lt;li&gt;Link to official page explaining &lt;strong&gt;how to customize the linter rules&lt;/strong&gt;&lt;/li&gt; 
   &lt;li&gt;Link to official page explaining &lt;strong&gt;how to disable rules from source comments&lt;/strong&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Examples&lt;/strong&gt; of linter command line calls behind the hood&lt;/li&gt; 
   &lt;li&gt;Help command text&lt;/li&gt; 
   &lt;li&gt;Installation commands&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/html_doc_linter.jpg&quot; alt=&quot;HTML doc linter&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Installation links for related IDEs&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/html_doc_ide.jpg&quot; alt=&quot;HTML doc IDE&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;README 
  &lt;ul&gt; 
   &lt;li&gt;Separate languages, formats, and tooling formats in the linters table&lt;/li&gt; 
   &lt;li&gt;Add logos for each descriptor&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Plugin management&lt;/h3&gt; 
&lt;p&gt;For less commonly used linters, MegaLinter offers a plugin architecture so anyone can publish plugins.&lt;/p&gt; 
&lt;h3&gt;Simplify architecture and evolutionary maintenance&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Refactoring runtime in Python, for easier handling than Bash thanks to &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/megalinter&quot;&gt;classes&lt;/a&gt; and Python modules&lt;/li&gt; 
 &lt;li&gt;Everything related to each linter is in a &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/megalinter/descriptors&quot;&gt;single descriptor YAML file&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Easier ongoing maintenance&lt;/li&gt; 
   &lt;li&gt;Fewer conflicts to manage between PRs&lt;/li&gt; 
   &lt;li&gt;A few special cases require a &lt;a href=&quot;https://github.com/oxsecurity/megalinter/tree/main/megalinter/descriptors&quot;&gt;Python linter class&lt;/a&gt;)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oxsecurity/megalinter/raw/main/megalinter/Linter.py&quot;&gt;Default behaviors for all linters&lt;/a&gt;, with the possibility to override parts of them for special cases&lt;/li&gt; 
 &lt;li&gt;Hierarchical architecture: Apply fixes and new behaviors to all linters with a single code update&lt;/li&gt; 
 &lt;li&gt;Documentation as code 
  &lt;ul&gt; 
   &lt;li&gt;Generate linters tables (ordered by type: language, format, and tooling format) and include them in the README. &lt;a href=&quot;https://megalinter.io/supported-linters/&quot;&gt;(see result)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;Generate one markdown file per linter, containing all configuration variables, information, and examples &lt;a href=&quot;https://megalinter.io/descriptors/javascript_eslint/&quot;&gt;(see examples)&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Automatic generation of Dockerfiles using YAML descriptors, always using the linter&#39;s latest version 
  &lt;ul&gt; 
   &lt;li&gt;Dockerfile commands (FROM, ARG, ENV, COPY, RUN)&lt;/li&gt; 
   &lt;li&gt;APK packages (Linux)&lt;/li&gt; 
   &lt;li&gt;NPM packages (Node.js)&lt;/li&gt; 
   &lt;li&gt;PIP packages (Python)&lt;/li&gt; 
   &lt;li&gt;GEM packages (Ruby)&lt;/li&gt; 
   &lt;li&gt;Phive packages (PHP)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Have a centralized exclude list (node_modules, .rbenv, etc.)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Improve robustness &amp;amp; stability&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Test classes for each capability&lt;/li&gt; 
 &lt;li&gt;Test classes for each linter: automatic generation of test classes using &lt;a href=&quot;https://github.com/oxsecurity/megalinter/raw/main/.automation/build.py&quot;&gt;.automation/build.py&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Set up code coverage &lt;a href=&quot;https://codecov.io/gh/oxsecurity/megalinter&quot;&gt;&lt;img src=&quot;https://codecov.io/gh/oxsecurity/megalinter/branch/main/graph/badge.svg?sanitize=true&quot; alt=&quot;codecov&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Development CI/CD 
  &lt;ul&gt; 
   &lt;li&gt;Validate multi-status on PR inside each PR (posted from step &quot;Run against all code base&quot;)&lt;/li&gt; 
   &lt;li&gt;Run test classes and code coverage with pytest during validation GitHub Action&lt;/li&gt; 
   &lt;li&gt;Validate descriptor YML files with json schema during build&lt;/li&gt; 
   &lt;li&gt;Automated job to upgrade linters to their latest stable version&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- mega-linter-vs-super-linter-section-end --&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/304830226/0dfd5431-ac15-469a-b5f2-e646bab15acd" medium="image" />
      
    </item>
    
    <item>
      <title>microsoft/vscode-remote-release</title>
      <link>https://github.com/microsoft/vscode-remote-release</link>
      <description>&lt;p&gt;Visual Studio Code Remote Development: Open any folder in WSL, in a Docker container, or on a remote machine using SSH and take advantage of VS Code&#39;s full feature set.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Visual Studio Code Remote Development&lt;/h1&gt; 
&lt;table style=&quot;width: 100%; border-style: none;&quot;&gt;
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td style=&quot;width: 140px; text-align: center;&quot;&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/download/extension&quot;&gt;&lt;img width=&quot;128px&quot; src=&quot;https://raw.githubusercontent.com/microsoft/vscode-remote-release/main/docs/images/remote-extensionpack.png&quot; alt=&quot;Visual Studio Code logo&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt; &lt;strong&gt;Visual Studio Code Remote Development&lt;/strong&gt;&lt;br /&gt; &lt;i&gt;Open any folder in a container, on a remote machine, or in WSL and take advantage of VS Code&#39;s full feature set. &lt;strong&gt;&lt;a href=&quot;https://aka.ms/vscode-remote&quot;&gt;Learn more!&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/download/extension&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/microsoft/vscode-remote-release/main/docs/images/download.png&quot; alt=&quot;Download now!&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/i&gt;&lt;br /&gt; &lt;/td&gt; 
  &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;p&gt;This repository is for providing feedback on the &lt;strong&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/download/extension&quot;&gt;Visual Studio Remote Development&lt;/a&gt;&lt;/strong&gt; extension pack and its related extensions. You can use the repository to report issues or submit feature requests on any of these extensions:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/download/ssh&quot;&gt;Remote - SSH&lt;/a&gt;&lt;/strong&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Remote - SSH: Editing Configuration Files&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/download/containers&quot;&gt;Dev Containers&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/download/wsl&quot;&gt;WSL&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-server&quot;&gt;Remote - Tunnels&lt;/a&gt;&lt;/strong&gt; and the &lt;strong&gt;&lt;a href=&quot;https://aka.ms/vscode-server-doc&quot;&gt;Visual Studio Code Server&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you are running into an issue with &lt;strong&gt;another extension&lt;/strong&gt; you&#39;d like to use with the Remote Development extensions, please raise an issue in the extension&#39;s repository. You can reference our &lt;a href=&quot;https://aka.ms/vscode-remote/troubleshooting/extensions&quot;&gt;summary&lt;/a&gt; of tips for remote related issues and our &lt;a href=&quot;https://aka.ms/vscode-remote/developing-extensions&quot;&gt;extension guide&lt;/a&gt; to help the extension author get started.&lt;/p&gt; 
&lt;p&gt;Issues related to &lt;a href=&quot;https://containers.dev/&quot;&gt;the Dev Container ecosystem&lt;/a&gt; may be reported in several places. Issues involving &lt;a href=&quot;https://github.com/devcontainers/features&quot;&gt;Features&lt;/a&gt;, &lt;a href=&quot;https://github.com/devcontainers/templates&quot;&gt;Templates&lt;/a&gt;, or &lt;a href=&quot;https://github.com/devcontainers/images&quot;&gt;Images&lt;/a&gt; can be reported in the relevant repo. Issues relating to the open source dev container CLI can be reported on &lt;a href=&quot;https://github.com/devcontainers/cli&quot;&gt;devcontainers/cli&lt;/a&gt;. You may use the &lt;a href=&quot;https://github.com/devcontainers/spec&quot;&gt;dev container spec repository&lt;/a&gt; to file and review issues to shape the direction of development containers and the dev container CLI.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;Running into trouble? Wondering what you can do? These articles can help.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://aka.ms/vscode-remote&quot;&gt;Overview&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/ssh&quot;&gt;Remote Development using SSH&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/containers&quot;&gt;Developing inside a Container&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/wsl&quot;&gt;Developing in WSL&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/troubleshooting&quot;&gt;Tips, Tricks, and Troubleshooting&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Releases&lt;/h2&gt; 
&lt;p&gt;VS Code Remote Development extension &quot;stable&quot; releases are tied directly to VS Code releases. Release highlights can be found in &lt;a href=&quot;https://code.visualstudio.com/updates&quot;&gt;VS Code release notes&lt;/a&gt; which will include a link to &lt;a href=&quot;https://github.com/microsoft/vscode-docs/tree/main/remote-release-notes&quot;&gt;detailed extension release notes&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;The extensions are developed using the same &lt;a href=&quot;https://github.com/microsoft/vscode/wiki/Development-Process#inside-an-iteration&quot;&gt;development process and schedule&lt;/a&gt; as VS Code itself. You can see what is planned for the current development iteration in a pinned &lt;a href=&quot;https://github.com/microsoft/vscode-remote-release/issues&quot;&gt;planning issue in this repository&lt;/a&gt;. This issue will include a link to the broader VS Code plan. As with VS Code itself, the extensions will update during a development iteration with changes that are only available in &lt;a href=&quot;https://code.visualstudio.com/insiders/&quot;&gt;VS Code Insiders Edition&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Providing Feedback&lt;/h2&gt; 
&lt;p&gt;You can use this repository to:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/feature-requests&quot;&gt;Up-vote a feature or request a new one&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Search for &lt;a href=&quot;https://aka.ms/vscode-remote/issues&quot;&gt;existing issues&lt;/a&gt; already reported for potential workarounds.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/issues/new&quot;&gt;Report a problem&lt;/a&gt; if you don&#39;t find what you are looking for.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you have a question, connect with the community using any of these social platforms:&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://aka.ms/vscode-remote/twitter&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/microsoft/vscode-remote-release/main/docs/images/Twitter_Social_Icon_24x24.png&quot; alt=&quot;Twitter&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://stackoverflow.com/questions/tagged/vscode&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/microsoft/vscode-remote-release/main/docs/images/so-image-24x24.png&quot; alt=&quot;Stack Overflow&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://aka.ms/vscode-dev-community&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/microsoft/vscode-remote-release/main/docs/images/Slack_Mark-24x24.png&quot; alt=&quot;VS Code Dev Community Slack&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://gitter.im/Microsoft/vscode&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/microsoft/vscode-remote-release/main/docs/images/gitter-icon-24x24.png&quot; alt=&quot;VS Code Gitter&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;See our &lt;a href=&quot;https://aka.ms/vscode-remote/contributing&quot;&gt;CONTRIBUTING&lt;/a&gt; guide for more details.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;By downloading and using the Visual Studio Remote Development extension pack and its related extensions, you agree to the product &lt;a href=&quot;https://go.microsoft.com/fwlink/?linkid=2077057&quot;&gt;license terms&lt;/a&gt; and &lt;a href=&quot;https://www.microsoft.com/en-us/privacystatement/EnterpriseDev/default.aspx&quot;&gt;privacy statement&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;License for this repository:&lt;/p&gt; 
&lt;p&gt;Copyright © Microsoft Corporation All rights reserved.&lt;br /&gt; Creative Commons Attribution 4.0 License (International): &lt;a href=&quot;https://creativecommons.org/licenses/by/4.0/legalcode&quot;&gt;https://creativecommons.org/licenses/by/4.0/legalcode&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/19fc9acf5d9e723fda1eb28e156666d8466c76d5be90e4186cc681f9cf6507af/microsoft/vscode-remote-release" medium="image" />
      
    </item>
    
    <item>
      <title>TechHutTV/homelab</title>
      <link>https://github.com/TechHutTV/homelab</link>
      <description>&lt;p&gt;Homelab stacks, templates, and more fun resources!&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;My Homelab Setup&lt;/h1&gt; 
&lt;p&gt;This repo contains Docker Compose stacks, configuration templates, and documentation for everything running in my homelab. It spans two servers - an Unraid NAS for media and a Proxmox node for everything else - tied together with Ubiquiti networking, self-hosted cloud services, and a full monitoring stack.&lt;/p&gt; 
&lt;p&gt;Whether you&#39;re looking for a complete Servarr media setup behind a VPN, a Frigate NVR config with Coral TPU, or just want to see how someone else organizes their self-hosted infrastructure, feel free to dig around and use whatever is helpful. This is a &lt;em&gt;work in progress&lt;/em&gt; - I still have a ton to update and add.&lt;/p&gt; 
&lt;h2&gt;Table of Contents&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TechHutTV/homelab/main/apps/&quot;&gt;Apps&lt;/a&gt; - List of all the apps and services.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TechHutTV/homelab/main/automations/&quot;&gt;Automations&lt;/a&gt; - n8n workflows and automation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TechHutTV/homelab/main/cloud/&quot;&gt;Cloud&lt;/a&gt; - NextCloud, Immich, and self-hosted cloud services.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TechHutTV/homelab/main/homeassistant/&quot;&gt;Home Assistant&lt;/a&gt; - Smart home services and automation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TechHutTV/homelab/main/media/&quot;&gt;Media Server&lt;/a&gt; - Plex, Jellyfin, *arr stack, and more.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TechHutTV/homelab/main/monitoring/&quot;&gt;Monitoring&lt;/a&gt; - Graphs and visualizations for Unraid, Proxmox, and more.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TechHutTV/homelab/main/netbird/&quot;&gt;NetBird&lt;/a&gt; - Self-hosted zero-trust networking with PocketID.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TechHutTV/homelab/main/proxy/&quot;&gt;Proxy Management&lt;/a&gt; - NGINX Proxy Manager, DDNS with Cloudflare, local domains, and more.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TechHutTV/homelab/main/storage/&quot;&gt;Storage&lt;/a&gt; - Current storage and backup solution.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TechHutTV/homelab/main/surveillance/&quot;&gt;Surveillance&lt;/a&gt; - Frigate NVR solution with Coral TPU.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Hardware&lt;/h2&gt; 
&lt;h3&gt;Compute&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;&lt;/th&gt; 
   &lt;th&gt;OpnNAS SL-R12 Pro&lt;/th&gt; 
   &lt;th&gt;Miniforum AI X1 Pro&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;OS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Unraid&lt;/td&gt; 
   &lt;td&gt;Proxmox&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Role&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Media server, NextCloud VM&lt;/td&gt; 
   &lt;td&gt;Grafana, NPM, n8n, and other services&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://amzn.to/4qblt9y&quot;&gt;Intel Core i5-13500T&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;AMD Ryzen AI 9 HX 370&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;RAM&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://amzn.to/3Jbh2uD&quot;&gt;Crucial Pro 96GB DDR5&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;96GB SODIMM DDR5&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Storage&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://amzn.to/4nPhn5d&quot;&gt;5x Seagate Exos 20TB&lt;/a&gt;, &lt;a href=&quot;https://amzn.to/3W1IFt5&quot;&gt;7x Seagate IronWolf 4TB&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://amzn.to/4hdfHzY&quot;&gt;2x WD SN580 1TB NVMe&lt;/a&gt; (mirrored boot)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Link&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://opnnas.com/#hls&quot;&gt;learn more&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://amzn.to/4n0xTOR&quot;&gt;get it here&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;The OpnNAS is an early release press model - check &lt;a href=&quot;https://opnnas.com/#hls&quot;&gt;their site&lt;/a&gt; for availability. The Miniforum handles all non-media workloads as a dedicated Proxmox node.&lt;/p&gt; 
&lt;h3&gt;Networking&lt;/h3&gt; 
&lt;p&gt;Ubiquiti sent all of this over to me. There is no way I&#39;d be able to afford all this stuff on my own dime, so note that. This setup is crazy overpowered for what I need.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Device&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;UDM Pro Max&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Primary router, gateway, and UniFi Protect NVR with 2x 8TB HDDs for camera storage.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;USW Pro Max 24 PoE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Main 24-port PoE switch powering cameras and access points.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;USW Pro XG 10 PoE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;10G aggregation switch for high-bandwidth connections between devices.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;2x U7 Pro XG&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Wi-Fi 7 access points providing wireless coverage.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;USW Lite 16 PoE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Secondary 16-port PoE switch for additional wired devices.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;details&gt; 
 &lt;summary&gt;Accessories&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;1x U-Rack-6U-TL&lt;/li&gt; 
  &lt;li&gt;1x UACC-Cable-Patch-EL-0.15M-W-24&lt;/li&gt; 
  &lt;li&gt;5x UACC-Cable-Patch-EL-3M-W&lt;/li&gt; 
  &lt;li&gt;2x UACC-Cable-Patch-EL-15M-W&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h3&gt;Security&lt;/h3&gt; 
&lt;p&gt;Currently running two camera systems - originally fully Reolink, but added UniFi Protect after Ubiquiti sent equipment to try. See the &lt;a href=&quot;https://www.youtube.com/watch?v=2RiiKi4vjJc&quot;&gt;video overview&lt;/a&gt;.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Camera&lt;/th&gt; 
   &lt;th&gt;Details&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;3x UVC-G6-Turret-W&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Connected to the UDM Pro Max via UniFi Protect. Planning to slowly transition fully to Ubiquiti as budget allows.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Reolink PoE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://amzn.to/4d6BuGJ&quot;&gt;RLC-1224A 12MP&lt;/a&gt; and &lt;a href=&quot;https://amzn.to/4ceRKnM&quot;&gt;4K Floodlight&lt;/a&gt;. Great for the Reolink ecosystem and 3rd party services like Frigate.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Reolink NVR Kit&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://amzn.to/4d9YaWz&quot;&gt;16CH 12MP&lt;/a&gt; (my kit) - simple PoE plug-and-play solution. Kit cameras require the NVR to function. Budget option: &lt;a href=&quot;https://amzn.to/4dulGgG&quot;&gt;8CH 5MP&lt;/a&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Other Devices&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Raspberry Pi 5&lt;/strong&gt; (PoE HAT) - Twingate connector and Cloudflare DDNS updater.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Raspberry Pi 4&lt;/strong&gt; - OctoPrint for 3D printer management.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;VPS&lt;/strong&gt; (&lt;a href=&quot;https://www.hostinger.com/&quot;&gt;Hostinger KVM&lt;/a&gt;) - Self-hosted NetBird management server.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Previous hardware? See &lt;a href=&quot;https://raw.githubusercontent.com/TechHutTV/homelab/main/old_hardware.md&quot;&gt;old_hardware.md&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Stars&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.star-history.com/#techhuttv/homelab&amp;amp;type=date&amp;amp;legend=top-left&quot;&gt;&lt;img src=&quot;https://api.star-history.com/svg?repos=techhuttv/homelab&amp;amp;type=date&amp;amp;legend=top-left&quot; alt=&quot;Star History Chart&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/7075501a7f49851fc1e4699d1c3cb564e0566e09987c4b83b3df697cce5e22e0/TechHutTV/homelab" medium="image" />
      
    </item>
    
    <item>
      <title>redhat-openshift-ecosystem/certified-operators</title>
      <link>https://github.com/redhat-openshift-ecosystem/certified-operators</link>
      <description>&lt;p&gt;Production catalog for Red Hat Certified Operator Bundles&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Red Hat certified operators production catalog&lt;/h1&gt; 
&lt;p&gt;Production catalog for Red Hat Certified Operator Bundles&lt;/p&gt; 
&lt;p&gt;See our &lt;a href=&quot;https://redhat-openshift-ecosystem.github.io/operator-pipelines/&quot;&gt;documentation&lt;/a&gt; to find out more about Certified operators and contribution.&lt;/p&gt; 
&lt;h1&gt;Operator bundle submission&lt;/h1&gt; 
&lt;p&gt;A new operator bundle submission needs to follow a predefined directory structure that is described below in this section. The new submission is done through Github pull requests which can be either open by the &lt;a href=&quot;https://github.com/redhat-openshift-ecosystem/operator-pipelines&quot;&gt;CI pipeline&lt;/a&gt; or manually by a user. The recommended way is to use the CI pipeline because it makes sure all necessary data are provided in the correct format. Documentation about how to use the pipeline is available in the pipeline repository.&lt;/p&gt; 
&lt;h2&gt;Pull request&lt;/h2&gt; 
&lt;p&gt;A pull request with a new operator bundle needs to follow given rules to pass a tests:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Title format: &lt;code&gt;operator package-name (version)&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Pull request can only modify one operator&lt;/li&gt; 
 &lt;li&gt;Pull request can&#39;t modify already merged operators&lt;/li&gt; 
 &lt;li&gt;Associated images need to be pinned to specific image digest - tags are not allowed&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Rules mentioned above are always followed when pull request is opened using CI pipeline.&lt;/p&gt; 
&lt;h2&gt;Directory structure&lt;/h2&gt; 
&lt;p&gt;This repository contains an &lt;code&gt;operator&lt;/code&gt; directory where all certified operators are stored. Each operator has its directory with its package name. Inside the directory, you have to provide a &lt;code&gt;ci.yaml&lt;/code&gt; file that stores the necessary metadata for a successful certification process. The format of the file is described below.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;operators
└── kogito-operator
    ├── 1.6.0
    │&amp;nbsp;&amp;nbsp; ├── manifests
    │&amp;nbsp;&amp;nbsp; │&amp;nbsp;&amp;nbsp; ├── app.kiegroup.org_kogitobuilds.yaml
    │&amp;nbsp;&amp;nbsp; │&amp;nbsp;&amp;nbsp; ├── app.kiegroup.org_kogitoinfras.yaml
    │&amp;nbsp;&amp;nbsp; │&amp;nbsp;&amp;nbsp; ├── app.kiegroup.org_kogitoruntimes.yaml
    │&amp;nbsp;&amp;nbsp; │&amp;nbsp;&amp;nbsp; ├── app.kiegroup.org_kogitosupportingservices.yaml
    │&amp;nbsp;&amp;nbsp; │&amp;nbsp;&amp;nbsp; ├── kogito-operator.clusterserviceversion.yaml
    │&amp;nbsp;&amp;nbsp; │&amp;nbsp;&amp;nbsp; └── kogito-operator-controller-manager_v1_serviceaccount.yaml
    │&amp;nbsp;&amp;nbsp; └── metadata
    │&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp; └── annotations.yaml
    └── ci.yaml
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Format of ci.yaml file&lt;/h3&gt; 
&lt;p&gt;In the file, user needs to provide necessary details for the operator certification process. Currently, the certification process supports the following options:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;cert_project_id&lt;/code&gt; - Identifier of certification project created through Red Hat Connect.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;merge&lt;/code&gt; - A boolean value that determines whether a new operator is automatically merged when passed all required checks. (optional, default: &lt;code&gt;True&lt;/code&gt;)&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/51827ad559b365f8c8524b422ff27c4f1ac351923ff443061ddc91f5a89a6d0e/redhat-openshift-ecosystem/certified-operators" medium="image" />
      
    </item>
    
    <item>
      <title>AsahiLinux/docs</title>
      <link>https://github.com/AsahiLinux/docs</link>
      <description>&lt;p&gt;Asahi Linux documentation&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Asahi Linux documentation repository&lt;/h1&gt; 
&lt;p&gt;This is the &lt;a href=&quot;https://asahilinux.org/docs/&quot;&gt;Asahi Linux documentation&lt;/a&gt; repository.&lt;/p&gt; 
&lt;h2&gt;Documentation structure&lt;/h2&gt; 
&lt;p&gt;Our documentation is organised into categories.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;alt: Alternative operating system/Linux distribution support documentation should go here.&lt;/li&gt; 
 &lt;li&gt;fw: Documentation on vendor-controlled firmware and firmware interfaces should go here.&lt;/li&gt; 
 &lt;li&gt;hw: Any documentation related to hardware belongs here. This is further split into subcategories: 
  &lt;ul&gt; 
   &lt;li&gt;cpu: Application processor documentation&lt;/li&gt; 
   &lt;li&gt;devices: Documentation relating to specific Mac models&lt;/li&gt; 
   &lt;li&gt;peripherals: hardware found in Apple Silicon Macs but not the SoC itself&lt;/li&gt; 
   &lt;li&gt;soc: hardware blocks integrated into Apple Silicon SoCs&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;platform: Documentation that applies across the Apple Silicon platform&lt;/li&gt; 
 &lt;li&gt;project: Project admin documents and stuff unrelated to hardware or software&lt;/li&gt; 
 &lt;li&gt;sw: Documentation for non-firmware software&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;p&gt;This is made with &lt;a href=&quot;https://www.mkdocs.org/&quot;&gt;MkDocs&lt;/a&gt;. If you have mkdocs installed already, run &lt;code&gt;make build&lt;/code&gt; to build the site, or &lt;code&gt;make test&lt;/code&gt; to spin up a local webserver for review. If you don&#39;t, feel free to use our &lt;a href=&quot;https://github.com/AsahiLinux/docs/pkgs/container/mkdocs-asahi&quot;&gt;container&lt;/a&gt; with something like:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ podman run -it --pull=newer -p=8000:8000 -v=$(pwd)/:/docs:z ghcr.io/asahilinux/mkdocs-asahi:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;if you&#39;re using &lt;a href=&quot;https://podman.io&quot;&gt;Podman&lt;/a&gt;, or&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ docker run -it --pull=always -p=8000:8000 -v=$(pwd)/:/docs:z ghcr.io/asahilinux/mkdocs-asahi:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;if you&#39;re using &lt;a href=&quot;https://www.docker.com&quot;&gt;Docker&lt;/a&gt;. Note that this repository uses &lt;a href=&quot;https://git-scm.com/book/en/v2/Git-Tools-Submodules&quot;&gt;Git Submodules&lt;/a&gt;, so you&#39;ll want to set those up first with &lt;code&gt;git submodule update --init&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;The website is rebuilt by the CI on every commit and served via GitHub Pages. The container is also automatically updated and pushed to the registry.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/855dbc4cd87ed0017b0f029e2b88c6016da31facccda39ad9f7643688e43412c/AsahiLinux/docs" medium="image" />
      
    </item>
    
    <item>
      <title>autowarefoundation/autoware</title>
      <link>https://github.com/autowarefoundation/autoware</link>
      <description>&lt;p&gt;Autoware - the world&#39;s leading open-source software project for autonomous driving&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Autoware - the world&#39;s leading open-source software project for autonomous driving&lt;/h1&gt; 
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/63835446/158918717-58d6deaf-93fb-47f9-891d-e242b02cba7b.png&quot; alt=&quot;Autoware_RViz&quot; /&gt;&lt;/p&gt; 
&lt;!-- Contributors --&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/autowarefoundation/autoware_universe/graphs/contributors&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/contributors/autowarefoundation/autoware_universe?style=flat&amp;amp;label=Autoware%20Universe%20Contributors&quot; alt=&quot;Autoware Universe Contributors&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/autowarefoundation/autoware/graphs/contributors&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/contributors/autowarefoundation/autoware?style=flat&amp;amp;label=Autoware%20Contributors&quot; alt=&quot;Autoware Contributors&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;!-- Commit Activity --&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/autowarefoundation/autoware_universe/pulse&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/commit-activity/m/autowarefoundation/autoware_universe?style=flat&amp;amp;label=Autoware%20Universe%20Commit%20Activity&quot; alt=&quot;Autoware Universe Activity&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/autowarefoundation/autoware/pulse&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/commit-activity/m/autowarefoundation/autoware?style=flat&amp;amp;label=Autoware%20Commit%20Activity&quot; alt=&quot;Autoware Activity&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;!-- License --&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/autowarefoundation/autoware/raw/main/LICENSE&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/license/autowarefoundation/autoware?style=flat&amp;amp;label=License&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;!-- CI Reports --&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/autowarefoundation/autoware/actions/workflows/health-check.yaml?query=branch%3Amain&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/autowarefoundation/autoware/health-check.yaml?style=flat&amp;amp;label=health-check&quot; alt=&quot;health-check CI&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://app.codecov.io/gh/autowarefoundation/autoware_universe&quot;&gt; &lt;img src=&quot;https://img.shields.io/codecov/c/gh/autowarefoundation/autoware_universe?style=flat&amp;amp;label=Coverage&amp;amp;logo=codecov&amp;amp;logoColor=white&quot; alt=&quot;Code Coverage&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;!-- Social Media --&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://discord.gg/Q94UsPvReQ&quot;&gt; &lt;img src=&quot;https://img.shields.io/discord/953808765935816715?logo=discord&amp;amp;logoColor=white&amp;amp;style=flat&amp;amp;label=Autoware%20Discord&quot; alt=&quot;Autoware Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://twitter.com/intent/follow?screen_name=AutowareFdn&quot;&gt; &lt;img src=&quot;https://img.shields.io/twitter/follow/AutowareFdn?logo=x&amp;amp;logoColor=white&amp;amp;style=flat&quot; alt=&quot;Autoware Twitter / X&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.linkedin.com/company/the-autoware-foundation/&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Linkedin-Autoware%20Foundation-0a66c2?logo=linkedin&amp;amp;logoColor=white&amp;amp;style=flat&quot; alt=&quot;Autoware Linkedin&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Autoware is an open-source software stack for self-driving vehicles, built on the &lt;a href=&quot;https://www.ros.org/&quot;&gt;Robot Operating System (ROS)&lt;/a&gt;. It includes all of the necessary functions to drive an autonomous vehicles from localization and object detection to route planning and control, and was created with the aim of enabling as many individuals and organizations as possible to contribute to open innovations in autonomous driving technology.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://static.wixstatic.com/media/984e93_552e338be28543c7949717053cc3f11f~mv2.png/v1/crop/x_0,y_1,w_1500,h_879/fill/w_863,h_506,al_c,usm_0.66_1.00_0.01,enc_auto/Autoware-GFX_edited.png&quot; alt=&quot;Autoware architecture&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;To learn more about using or developing Autoware, refer to the &lt;a href=&quot;https://autowarefoundation.github.io/autoware-documentation/main/&quot;&gt;Autoware documentation site&lt;/a&gt;. You can find the source for the documentation in &lt;a href=&quot;https://github.com/autowarefoundation/autoware-documentation&quot;&gt;autowarefoundation/autoware-documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Repository overview&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/autowarefoundation/autoware&quot;&gt;autowarefoundation/autoware&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Meta-repository containing &lt;code&gt;.repos&lt;/code&gt; files to construct an Autoware workspace.&lt;/li&gt; 
   &lt;li&gt;It is anticipated that this repository will be frequently forked by users, and so it contains minimal information to avoid unnecessary differences.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/autowarefoundation/autoware_core&quot;&gt;autowarefoundation/autoware_core&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Main repository for high-quality, stable ROS packages for Autonomous Driving.&lt;/li&gt; 
   &lt;li&gt;Based on &lt;a href=&quot;https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto&quot;&gt;Autoware.Auto&lt;/a&gt; and &lt;a href=&quot;https://github.com/autowarefoundation/autoware_universe&quot;&gt;Autoware.Universe&lt;/a&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/autowarefoundation/autoware_universe&quot;&gt;autowarefoundation/autoware_universe&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Repository for experimental, cutting-edge ROS packages for Autonomous Driving.&lt;/li&gt; 
   &lt;li&gt;Autoware Universe was created to make it easier for researchers and developers to extend the functionality of Autoware Core&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/autowarefoundation/autoware_launch&quot;&gt;autowarefoundation/autoware_launch&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Launch configuration repository containing node configurations and their parameters.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/autowarefoundation/autoware-github-actions&quot;&gt;autowarefoundation/autoware-github-actions&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Contains &lt;a href=&quot;https://docs.github.com/ja/actions/learn-github-actions/reusing-workflows&quot;&gt;reusable GitHub Actions workflows&lt;/a&gt; used by multiple repositories for CI.&lt;/li&gt; 
   &lt;li&gt;Utilizes the &lt;a href=&quot;https://en.wikipedia.org/wiki/Don%27t_repeat_yourself&quot;&gt;DRY&lt;/a&gt; concept.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/autowarefoundation/autoware-documentation&quot;&gt;autowarefoundation/autoware-documentation&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Documentation repository for Autoware users and developers.&lt;/li&gt; 
   &lt;li&gt;Since Autoware Core/Universe has multiple repositories, a central documentation repository is important to make information accessible from a single place.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Using Autoware.AI&lt;/h2&gt; 
&lt;p&gt;If you wish to use Autoware.AI, the previous version of Autoware based on ROS 1, switch to &lt;a href=&quot;https://github.com/autowarefoundation/autoware_ai&quot;&gt;autoware-ai&lt;/a&gt; repository. However, be aware that Autoware.AI has reached the end-of-life as of 2022, and we strongly recommend transitioning to Autoware Core/Universe for future use.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/autowarefoundation/autoware-projects/wiki#contributors&quot;&gt;There is no formal process to become a contributor&lt;/a&gt; - you can comment on any &lt;a href=&quot;https://github.com/autowarefoundation/autoware_universe/issues&quot;&gt;existing issues&lt;/a&gt; or make a pull request on any Autoware repository! 
  &lt;ul&gt; 
   &lt;li&gt;Make sure to follow the &lt;a href=&quot;https://autowarefoundation.github.io/autoware-documentation/main/contributing/&quot;&gt;Contribution Guidelines&lt;/a&gt;.&lt;/li&gt; 
   &lt;li&gt;Take a look at Autoware&#39;s &lt;a href=&quot;https://github.com/autowarefoundation/autoware-projects/wiki#working-group-list&quot;&gt;various working groups&lt;/a&gt; to gain an understanding of any work in progress and to see how projects are managed.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;If you have any technical questions, you can start a discussion in the &lt;a href=&quot;https://github.com/autowarefoundation/autoware/discussions/categories/q-a&quot;&gt;Q&amp;amp;A category&lt;/a&gt; to request help and confirm if a potential issue is a bug or not.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Useful resources&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.autoware.org/&quot;&gt;Autoware Foundation homepage&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://autowarefoundation.github.io/autoware-documentation/main/support/support-guidelines/&quot;&gt;Support guidelines&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://autowarefoundation.github.io/autoware-ci-metrics/&quot;&gt;CI metrics&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/564179febfc00dea3239aeb4f4af088ac9021b3e076994463c9e6684a0c72bd0/autowarefoundation/autoware" medium="image" />
      
    </item>
    
    <item>
      <title>linuxserver/docker-unifi-network-application</title>
      <link>https://github.com/linuxserver/docker-unifi-network-application</link>
      <description>&lt;p&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://linuxserver.io&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png&quot; alt=&quot;linuxserver.io&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://blog.linuxserver.io&quot; title=&quot;all the things you can do with our containers including How-To guides, opinions and much more!&quot;&gt;&lt;img src=&quot;https://img.shields.io/static/v1.svg?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;label=linuxserver.io&amp;amp;message=Blog&quot; alt=&quot;Blog&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://linuxserver.io/discord&quot; title=&quot;realtime support / chat with the community and the team.&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/354974912613449730.svg?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;label=Discord&amp;amp;logo=discord&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discourse.linuxserver.io&quot; title=&quot;post on our community forum.&quot;&gt;&lt;img src=&quot;https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;logo=discourse&quot; alt=&quot;Discourse&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/linuxserver&quot; title=&quot;view the source for all of our repositories.&quot;&gt;&lt;img src=&quot;https://img.shields.io/static/v1.svg?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;label=linuxserver.io&amp;amp;message=GitHub&amp;amp;logo=github&quot; alt=&quot;GitHub&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/linuxserver&quot; title=&quot;please consider helping us by either donating or contributing to our budget&quot;&gt;&lt;img src=&quot;https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;label=Supporters&amp;amp;logo=open%20collective&quot; alt=&quot;Open Collective&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;The &lt;a href=&quot;https://linuxserver.io&quot;&gt;LinuxServer.io&lt;/a&gt; team brings you another container release featuring:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;regular and timely application updates&lt;/li&gt; 
 &lt;li&gt;easy user mappings (PGID, PUID)&lt;/li&gt; 
 &lt;li&gt;custom base image with s6 overlay&lt;/li&gt; 
 &lt;li&gt;weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth&lt;/li&gt; 
 &lt;li&gt;regular security updates&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Find us at:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://blog.linuxserver.io&quot;&gt;Blog&lt;/a&gt; - all the things you can do with our containers including How-To guides, opinions and much more!&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://linuxserver.io/discord&quot;&gt;Discord&lt;/a&gt; - realtime support / chat with the community and the team.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://discourse.linuxserver.io&quot;&gt;Discourse&lt;/a&gt; - post on our community forum.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/linuxserver&quot;&gt;GitHub&lt;/a&gt; - view the source for all of our repositories.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://opencollective.com/linuxserver&quot;&gt;Open Collective&lt;/a&gt; - please consider helping us by either donating or contributing to our budget&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h1&gt;&lt;a href=&quot;https://github.com/linuxserver/docker-unifi-network-application&quot;&gt;linuxserver/unifi-network-application&lt;/a&gt;&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://scarf.sh&quot;&gt;&lt;img src=&quot;https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Funifi-network-application?color=94398d&amp;amp;label-color=555555&amp;amp;logo-color=ffffff&amp;amp;style=for-the-badge&amp;amp;package-type=docker&quot; alt=&quot;Scarf.io pulls&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/linuxserver/docker-unifi-network-application&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/linuxserver/docker-unifi-network-application.svg?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;logo=github&quot; alt=&quot;GitHub Stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/linuxserver/docker-unifi-network-application/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release/linuxserver/docker-unifi-network-application.svg?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;logo=github&quot; alt=&quot;GitHub Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/linuxserver/docker-unifi-network-application/packages&quot;&gt;&lt;img src=&quot;https://img.shields.io/static/v1.svg?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;label=linuxserver.io&amp;amp;message=GitHub%20Package&amp;amp;logo=github&quot; alt=&quot;GitHub Package Repository&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://gitlab.com/linuxserver.io/docker-unifi-network-application/container_registry&quot;&gt;&lt;img src=&quot;https://img.shields.io/static/v1.svg?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;label=linuxserver.io&amp;amp;message=GitLab%20Registry&amp;amp;logo=gitlab&quot; alt=&quot;GitLab Container Registry&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://quay.io/repository/linuxserver.io/unifi-network-application&quot;&gt;&lt;img src=&quot;https://img.shields.io/static/v1.svg?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;label=linuxserver.io&amp;amp;message=Quay.io&quot; alt=&quot;Quay.io&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/r/linuxserver/unifi-network-application&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/pulls/linuxserver/unifi-network-application.svg?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;label=pulls&amp;amp;logo=docker&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/r/linuxserver/unifi-network-application&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/stars/linuxserver/unifi-network-application.svg?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;label=stars&amp;amp;logo=docker&quot; alt=&quot;Docker Stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-unifi-network-application/job/main/&quot;&gt;&lt;img src=&quot;https://img.shields.io/jenkins/build?labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-unifi-network-application%2Fjob%2Fmain%2F&amp;amp;logo=jenkins&quot; alt=&quot;Jenkins Build&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;The &lt;a href=&quot;https://ui.com/&quot;&gt;Unifi-network-application&lt;/a&gt; software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://ui.com/&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/unifi-banner.png&quot; alt=&quot;unifi-network-application&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Supported Architectures&lt;/h2&gt; 
&lt;p&gt;We utilise the docker manifest for multi-platform awareness. More information is available from docker &lt;a href=&quot;https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list&quot;&gt;here&lt;/a&gt; and our announcement &lt;a href=&quot;https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Simply pulling &lt;code&gt;lscr.io/linuxserver/unifi-network-application:latest&lt;/code&gt; should retrieve the correct image for your arch, but you can also pull specific arch images via tags.&lt;/p&gt; 
&lt;p&gt;The architectures supported by this image are:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th align=&quot;center&quot;&gt;Architecture&lt;/th&gt; 
   &lt;th align=&quot;center&quot;&gt;Available&lt;/th&gt; 
   &lt;th&gt;Tag&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;x86-64&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;✅&lt;/td&gt; 
   &lt;td&gt;amd64-&amp;lt;version tag&amp;gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;arm64&lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt;✅&lt;/td&gt; 
   &lt;td&gt;arm64v8-&amp;lt;version tag&amp;gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Application Setup&lt;/h2&gt; 
&lt;p&gt;After setup, the web UI is available at &lt;a href=&quot;https://ip:8443&quot;&gt;https://ip:8443&lt;/a&gt;. The application can be configured, or a backup restored, using the first run wizard.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;This container requires an external mongodb database instance.&lt;/strong&gt;&lt;/p&gt; 
&lt;h3&gt;Setting Up Your External Database&lt;/h3&gt; 
&lt;p&gt;Starting with version 8.1 of Unifi Network Application, mongodb 3.6 through 7.0 are supported. Starting with version 9.0 of Unifi Network Application, mongodb 8.0 is also supported.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Make sure you pin your database image version and do not use &lt;code&gt;latest&lt;/code&gt;, as mongodb does not support automatic upgrades between major versions.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;MongoDB &amp;gt;4.4 on X86_64 Hardware needs a CPU with AVX support. Some lower end Intel CPU models like Celeron and Pentium (before Tiger-Lake) more Details: &lt;a href=&quot;https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX&quot;&gt;Advanced Vector Extensions - Wikipedia&lt;/a&gt; don&#39;t support AVX, but you can still use MongoDB 4.4.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;If you are using the &lt;a href=&quot;https://hub.docker.com/_/mongo/&quot;&gt;official mongodb container&lt;/a&gt;, you can create your user using an &lt;code&gt;init-mongo.sh&lt;/code&gt; file with the following contents (do not modify; copy/paste as is):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;#!/bin/bash

if which mongosh &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then
  mongo_init_bin=&#39;mongosh&#39;
else
  mongo_init_bin=&#39;mongo&#39;
fi
&quot;${mongo_init_bin}&quot; &amp;lt;&amp;lt;EOF
use ${MONGO_AUTHSOURCE}
db.auth(&quot;${MONGO_INITDB_ROOT_USERNAME}&quot;, &quot;${MONGO_INITDB_ROOT_PASSWORD}&quot;)
db.createUser({
  user: &quot;${MONGO_USER}&quot;,
  pwd: &quot;${MONGO_PASS}&quot;,
  roles: [
    { db: &quot;${MONGO_DBNAME}&quot;, role: &quot;dbOwner&quot; },
    { db: &quot;${MONGO_DBNAME}_stat&quot;, role: &quot;dbOwner&quot; },
    { db: &quot;${MONGO_DBNAME}_audit&quot;, role: &quot;dbOwner&quot; }
  ]
})
EOF
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Mount the sh file into your &lt;em&gt;mongodb&lt;/em&gt; container, and make sure to set the env vars below with the same values you supplied to the Unifi container.&lt;/p&gt; 
&lt;p&gt;For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;  unifi-db:
    image: docker.io/mongo:&amp;lt;version tag&amp;gt;
    container_name: unifi-db
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=
      - MONGO_USER=unifi
      - MONGO_PASS=
      - MONGO_DBNAME=unifi
      - MONGO_AUTHSOURCE=admin
    volumes:
      - /path/to/data:/data/db
      - /path/to/init-mongo.sh:/docker-entrypoint-initdb.d/init-mongo.sh:ro
    restart: unless-stopped
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em&gt;Note that the init script method will only work on first run. If you start the Mongodb container without an init script it will generate test data automatically and you will have to manually create your databases, or restart with a clean &lt;code&gt;/data/db&lt;/code&gt; volume and an init script mounted.&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;You can also run the commands directly against the database using either &lt;code&gt;mongo&lt;/code&gt; (&amp;lt; 6.0) or &lt;code&gt;mongosh&lt;/code&gt; (&amp;gt;= 6.0).&lt;/p&gt; 
&lt;h3&gt;Device Adoption&lt;/h3&gt; 
&lt;p&gt;For Unifi to adopt other devices, e.g. an Access Point, it is required to change the inform IP address. Because Unifi runs inside Docker by default it uses an IP address not accessible by other devices. To change this go to Settings &amp;gt; System &amp;gt; Advanced and set the Inform Host to a hostname or IP address accessible by your devices. Additionally the checkbox &quot;Override&quot; has to be checked, so that devices can connect to the controller during adoption (devices use the inform-endpoint during adoption).&lt;/p&gt; 
&lt;p&gt;Note that you must use 8080:8080. If you MUST change the port, it must be changed on both sides and manually changed in your system.properties file. Otherwise, devices will initially communicate and then break after.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Please note, Unifi change the location of this option every few releases so if it&#39;s not where it says, search for &quot;Inform&quot; or &quot;Inform Host&quot; in the settings.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;In order to manually adopt a device take these steps:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ssh ubnt@$AP-IP
set-inform http://$address:8080/inform
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The default device password is &lt;code&gt;ubnt&lt;/code&gt;. &lt;code&gt;$address&lt;/code&gt; is the IP address of the host you are running this container on and &lt;code&gt;$AP-IP&lt;/code&gt; is the Access Point IP address.&lt;/p&gt; 
&lt;p&gt;When using a Security Gateway (router) it could be that network connected devices are unable to obtain an ip address. This can be fixed by setting &quot;DHCP Gateway IP&quot;, under Settings &amp;gt; Networks &amp;gt; network_name, to a correct (and accessible) ip address.&lt;/p&gt; 
&lt;h3&gt;Migration From &lt;a href=&quot;https://github.com/linuxserver/docker-unifi-controller&quot;&gt;Unifi-Controller&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;If you were using the &lt;code&gt;mongoless&lt;/code&gt; tag for the Unifi Controller container, you can switch directly to the Unifi Network Application container without needing to perform any migration steps.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;You cannot perform an in-place upgrade from an existing Unifi-Controller container, you must run a backup and then a restore.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;The simplest migration approach is to take a full backup of your existing install, including history, from the Unifi-Controller web UI, then shut down the old container.&lt;/p&gt; 
&lt;p&gt;You can then start up the new container with a clean &lt;code&gt;/config&lt;/code&gt; mount (and a database container configured), and perform a restore using the setup wizard.&lt;/p&gt; 
&lt;h3&gt;Strict reverse proxies&lt;/h3&gt; 
&lt;p&gt;This image uses a self-signed certificate by default. This naturally means the scheme is &lt;code&gt;https&lt;/code&gt;. If you are using a reverse proxy which validates certificates, you need to &lt;a href=&quot;https://docs.linuxserver.io/faq#strict-proxy&quot;&gt;disable this check for the container&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;p&gt;To help you get started creating a container from this image you can either use docker-compose or the docker cli.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;[!NOTE] Unless a parameter is flagged as &#39;optional&#39;, it is &lt;em&gt;mandatory&lt;/em&gt; and a value must be provided.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;docker-compose (recommended, &lt;a href=&quot;https://docs.linuxserver.io/general/docker-compose&quot;&gt;click here for more info&lt;/a&gt;)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;---
services:
  unifi-network-application:
    image: lscr.io/linuxserver/unifi-network-application:latest
    container_name: unifi-network-application
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - MONGO_USER=unifi
      - MONGO_PASS=
      - MONGO_HOST=unifi-db
      - MONGO_PORT=27017
      - MONGO_DBNAME=unifi
      - MONGO_AUTHSOURCE=admin
      - MEM_LIMIT=1024 #optional
      - MEM_STARTUP=1024 #optional
      - MONGO_TLS= #optional
    volumes:
      - /path/to/unifi-network-application/data:/config
    ports:
      - 8443:8443
      - 3478:3478/udp
      - 10001:10001/udp
      - 8080:8080
      - 1900:1900/udp #optional
      - 8843:8843 #optional
      - 8880:8880 #optional
      - 6789:6789 #optional
      - 5514:5514/udp #optional
    restart: unless-stopped
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;docker cli (&lt;a href=&quot;https://docs.docker.com/engine/reference/commandline/cli/&quot;&gt;click here for more info&lt;/a&gt;)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d \
  --name=unifi-network-application \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Etc/UTC \
  -e MONGO_USER=unifi \
  -e MONGO_PASS= \
  -e MONGO_HOST=unifi-db \
  -e MONGO_PORT=27017 \
  -e MONGO_DBNAME=unifi \
  -e MONGO_AUTHSOURCE=admin \
  -e MEM_LIMIT=1024 `#optional` \
  -e MEM_STARTUP=1024 `#optional` \
  -e MONGO_TLS= `#optional` \
  -p 8443:8443 \
  -p 3478:3478/udp \
  -p 10001:10001/udp \
  -p 8080:8080 \
  -p 1900:1900/udp `#optional` \
  -p 8843:8843 `#optional` \
  -p 8880:8880 `#optional` \
  -p 6789:6789 `#optional` \
  -p 5514:5514/udp `#optional` \
  -v /path/to/unifi-network-application/data:/config \
  --restart unless-stopped \
  lscr.io/linuxserver/unifi-network-application:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Parameters&lt;/h2&gt; 
&lt;p&gt;Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate &lt;code&gt;&amp;lt;external&amp;gt;:&amp;lt;internal&amp;gt;&lt;/code&gt; respectively. For example, &lt;code&gt;-p 8080:80&lt;/code&gt; would expose port &lt;code&gt;80&lt;/code&gt; from inside the container to be accessible from the host&#39;s IP on port &lt;code&gt;8080&lt;/code&gt; outside the container.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th align=&quot;center&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th&gt;Function&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-p 8443:8443&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Unifi web admin port&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-p 3478:3478/udp&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Unifi STUN port&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-p 10001:10001/udp&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Required for AP discovery&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-p 8080:8080&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Required for device communication&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-p 1900/udp&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Required for &lt;code&gt;Make controller discoverable on L2 network&lt;/code&gt; option&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-p 8843&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Unifi guest portal HTTPS redirect port&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-p 8880&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Unifi guest portal HTTP redirect port&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-p 6789&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;For mobile throughput test&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-p 5514/udp&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Remote syslog port&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-e PUID=1000&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;for UserID - see below for explanation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-e PGID=1000&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;for GroupID - see below for explanation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-e TZ=Etc/UTC&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;specify a timezone to use, see this &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List&quot;&gt;list&lt;/a&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-e MONGO_USER=unifi&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Mongodb Username. Only evaluated on first run. &lt;strong&gt;Special characters must be &lt;a href=&quot;https://en.wikipedia.org/wiki/Percent-encoding&quot;&gt;url encoded&lt;/a&gt;&lt;/strong&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-e MONGO_PASS=&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Mongodb Password. Only evaluated on first run. &lt;strong&gt;Special characters must be &lt;a href=&quot;https://en.wikipedia.org/wiki/Percent-encoding&quot;&gt;url encoded&lt;/a&gt;&lt;/strong&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-e MONGO_HOST=unifi-db&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Mongodb Hostname. Only evaluated on first run.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-e MONGO_PORT=27017&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Mongodb Port. Only evaluated on first run.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-e MONGO_DBNAME=unifi&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Mongodb Database Name (stats DB is automatically suffixed with &lt;code&gt;_stat&lt;/code&gt;). Only evaluated on first run.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-e MONGO_AUTHSOURCE=admin&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Mongodb &lt;a href=&quot;https://www.mongodb.com/docs/manual/reference/connection-string/#mongodb-urioption-urioption.authSource&quot;&gt;authSource&lt;/a&gt;. For Atlas set to &lt;code&gt;admin&lt;/code&gt;. Only evaluated on first run.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-e MEM_LIMIT=1024&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Optionally change the Java memory limit (in Megabytes). Set to &lt;code&gt;default&lt;/code&gt; to reset to default&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-e MEM_STARTUP=1024&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Optionally change the Java initial/minimum memory (in Megabytes). Set to &lt;code&gt;default&lt;/code&gt; to reset to default&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-e MONGO_TLS=&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Mongodb enable &lt;a href=&quot;https://www.mongodb.com/docs/manual/reference/connection-string/#mongodb-urioption-urioption.tls&quot;&gt;TLS&lt;/a&gt;. Only evaluated on first run.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;&lt;code&gt;-v /config&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Persistent config files&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Environment variables from files (Docker secrets)&lt;/h2&gt; 
&lt;p&gt;You can set any environment variable from a file by using a special prepend &lt;code&gt;FILE__&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;As an example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;-e FILE__MYVAR=/run/secrets/mysecretvariable
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Will set the environment variable &lt;code&gt;MYVAR&lt;/code&gt; based on the contents of the &lt;code&gt;/run/secrets/mysecretvariable&lt;/code&gt; file.&lt;/p&gt; 
&lt;h2&gt;Umask for running applications&lt;/h2&gt; 
&lt;p&gt;For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional &lt;code&gt;-e UMASK=022&lt;/code&gt; setting. Keep in mind umask is not chmod it subtracts from permissions based on it&#39;s value it does not add. Please read up &lt;a href=&quot;https://en.wikipedia.org/wiki/Umask&quot;&gt;here&lt;/a&gt; before asking for support.&lt;/p&gt; 
&lt;h2&gt;User / Group Identifiers&lt;/h2&gt; 
&lt;p&gt;When using volumes (&lt;code&gt;-v&lt;/code&gt; flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user &lt;code&gt;PUID&lt;/code&gt; and group &lt;code&gt;PGID&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.&lt;/p&gt; 
&lt;p&gt;In this instance &lt;code&gt;PUID=1000&lt;/code&gt; and &lt;code&gt;PGID=1000&lt;/code&gt;, to find yours use &lt;code&gt;id your_user&lt;/code&gt; as below:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;id your_user
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Example output:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Docker Mods&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://mods.linuxserver.io/?mod=unifi-network-application&quot; title=&quot;view available mods for this container.&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/dynamic/yaml?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;label=unifi-network-application&amp;amp;query=%24.mods%5B%27unifi-network-application%27%5D.mod_count&amp;amp;url=https%3A%2F%2Fraw.githubusercontent.com%2Flinuxserver%2Fdocker-mods%2Fmaster%2Fmod-list.yml&quot; alt=&quot;Docker Mods&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://mods.linuxserver.io/?mod=universal&quot; title=&quot;view available universal mods.&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/dynamic/yaml?color=94398d&amp;amp;labelColor=555555&amp;amp;logoColor=ffffff&amp;amp;style=for-the-badge&amp;amp;label=universal&amp;amp;query=%24.mods%5B%27universal%27%5D.mod_count&amp;amp;url=https%3A%2F%2Fraw.githubusercontent.com%2Flinuxserver%2Fdocker-mods%2Fmaster%2Fmod-list.yml&quot; alt=&quot;Docker Universal Mods&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;We publish various &lt;a href=&quot;https://github.com/linuxserver/docker-mods&quot;&gt;Docker Mods&lt;/a&gt; to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.&lt;/p&gt; 
&lt;h2&gt;Support Info&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Shell access whilst the container is running:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker exec -it unifi-network-application /bin/bash
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;To monitor the logs of the container in realtime:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker logs -f unifi-network-application
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Container version number:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker inspect -f &#39;{{ index .Config.Labels &quot;build_version&quot; }}&#39; unifi-network-application
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Image version number:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker inspect -f &#39;{{ index .Config.Labels &quot;build_version&quot; }}&#39; lscr.io/linuxserver/unifi-network-application:latest
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Updating Info&lt;/h2&gt; 
&lt;p&gt;Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the &lt;a href=&quot;https://raw.githubusercontent.com/linuxserver/docker-unifi-network-application/main/#application-setup&quot;&gt;Application Setup&lt;/a&gt; section above to see if it is recommended for the image.&lt;/p&gt; 
&lt;p&gt;Below are the instructions for updating containers:&lt;/p&gt; 
&lt;h3&gt;Via Docker Compose&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Update images:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt; &lt;p&gt;All images:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker-compose pull
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
   &lt;li&gt; &lt;p&gt;Single image:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker-compose pull unifi-network-application
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Update containers:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt; &lt;p&gt;All containers:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker-compose up -d
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
   &lt;li&gt; &lt;p&gt;Single container:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker-compose up -d unifi-network-application
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;You can also remove the old dangling images:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker image prune
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Via Docker Run&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Update the image:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker pull lscr.io/linuxserver/unifi-network-application:latest
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Stop the running container:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker stop unifi-network-application
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Delete the container:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker rm unifi-network-application
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your &lt;code&gt;/config&lt;/code&gt; folder and settings will be preserved)&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;You can also remove the old dangling images:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker image prune
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Image Update Notifications - Diun (Docker Image Update Notifier)&lt;/h3&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;[!TIP] We recommend &lt;a href=&quot;https://crazymax.dev/diun/&quot;&gt;Diun&lt;/a&gt; for update notifications. Other tools that automatically update containers unattended are not recommended or supported.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Building locally&lt;/h2&gt; 
&lt;p&gt;If you want to make local modifications to these images for development purposes or just to customize the logic:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/linuxserver/docker-unifi-network-application.git
cd docker-unifi-network-application
docker build \
  --no-cache \
  --pull \
  -t lscr.io/linuxserver/unifi-network-application:latest .
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The ARM variants can be built on x86_64 hardware and vice versa using &lt;code&gt;lscr.io/linuxserver/qemu-static&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Once registered you can define the dockerfile to use with &lt;code&gt;-f Dockerfile.aarch64&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;Versions&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;20.10.25:&lt;/strong&gt; - Switch to using FW API endpoint for version checks.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;08.05.25:&lt;/strong&gt; - Update sample &lt;code&gt;init-mongo.sh&lt;/code&gt; for compatibility with 9.1.120 (only affects new installs).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;13.02.25:&lt;/strong&gt; - Revert JRE to 17.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;12.02.25:&lt;/strong&gt; - Bump JRE to 21.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;11.08.24:&lt;/strong&gt; - &lt;strong&gt;Important&lt;/strong&gt;: The mongodb init instructions have been updated to enable auth (&lt;a href=&quot;https://www.mongodb.com/docs/manual/core/authorization/#role-based-access-control&quot;&gt;RBAC&lt;/a&gt;). We have been notified that if RBAC is not enabled, the official mongodb container allows remote access to the db contents over port 27017 without credentials. If you set up the mongodb container with the old instructions we provided, you should not map or expose port 27017. If you would like to enable auth, the easiest way is to create new instances of both unifi and mongodb with the new instructions and restore unifi from a backup.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;11.08.24:&lt;/strong&gt; - Rebase to Ubuntu Noble.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;04.03.24:&lt;/strong&gt; - Install from zip package instead of deb.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;17.10.23:&lt;/strong&gt; - Add environment variables for TLS and authSource to support Atlas and new MongoDB versions.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;05.09.23:&lt;/strong&gt; - Initial release.&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/a75257e5b16bc4e389c5bbdfd22ce7d8ddc608cfcb9fc86f62d7ca8aa1a171b9/linuxserver/docker-unifi-network-application" medium="image" />
      
    </item>
    
    <item>
      <title>yankils/Simple-DevOps-Project</title>
      <link>https://github.com/yankils/Simple-DevOps-Project</link>
      <description>&lt;p&gt;&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Simple DevOps Project&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.udemy.com/course/valaxy-devops/?referralCode=8147A5CF4C8C7D9E253F&quot;&gt;&lt;img src=&quot;https://github.com/yankils/Simple-DevOps-Project/raw/master/Devops_course.PNG&quot; alt=&quot;Image&quot; title=&quot;DevOps Project - CI/CD with Jenkins Ansible Docker Kubernetes &quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;This Repository is a collection of Implementation documents.&lt;/p&gt; 
&lt;h3&gt;Purpose:&lt;/h3&gt; 
&lt;p&gt;By following this repository you can able to setup a DevOps CI/CD Pipeline using&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;git&lt;/li&gt; 
 &lt;li&gt;Jenkins&lt;/li&gt; 
 &lt;li&gt;Maven&lt;/li&gt; 
 &lt;li&gt;Ansible&lt;/li&gt; 
 &lt;li&gt;Docker &amp;amp;&lt;/li&gt; 
 &lt;li&gt;Kubernetes&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/0dd29544d4b0762c15659b3bb1fcf9e1c9a70586443e4d6ee930f89f15ad0575/yankils/Simple-DevOps-Project" medium="image" />
      
    </item>
    
    <item>
      <title>github-samples/planventure</title>
      <link>https://github.com/github-samples/planventure</link>
      <description>&lt;p&gt;Planventure is a sample app used in GitHub for Beginners&lt;/p&gt;&lt;hr&gt;&lt;h2&gt;Getting Started 👩🏽‍💻&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;Fork this repository to your GitHub account.&lt;/li&gt; 
 &lt;li&gt;Switch to the &lt;code&gt;api-start&lt;/code&gt; branch.&lt;/li&gt; 
 &lt;li&gt;Clone the repository to your local machine.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;You can find next steps in the README on the &lt;code&gt;api-start&lt;/code&gt; branch.&lt;/p&gt; 
&lt;h2&gt;Build with Me + GitHub Copilot 🚀&lt;/h2&gt; 
&lt;p&gt;You can build along with me in this &lt;a href=&quot;https://www.youtube.com/watch?v=CJUbQ1QiBUY&quot;&gt;Youtube video&lt;/a&gt; or read this &lt;a href=&quot;https://github.blog/ai-and-ml/github-copilot/github-for-beginners-building-a-rest-api-with-copilot/&quot;&gt;blog post&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=CJUbQ1QiBUY&quot;&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/a9e6f202-81c1-4b5e-9a77-6f03ee55938c&quot; alt=&quot;Build API Copilot&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h1&gt;Planventure API 🚁&lt;/h1&gt; 
&lt;p&gt;A Flask-based REST API backend for the Planventure application.&lt;/p&gt; 
&lt;h2&gt;Prerequisites&lt;/h2&gt; 
&lt;p&gt;Before you begin, ensure you have the following:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;A GitHub account - &lt;a href=&quot;https://github.com&quot;&gt;sign up for FREE&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Access to GitHub Copilot - &lt;a href=&quot;https://gh.io/gfb-copilot&quot;&gt;sign up for FREE&lt;/a&gt;!&lt;/li&gt; 
 &lt;li&gt;A Code Editor - &lt;a href=&quot;https://code.visualstudio.com/download&quot;&gt;VS Code&lt;/a&gt; is recommended&lt;/li&gt; 
 &lt;li&gt;API Client (like &lt;a href=&quot;https://github.com/usebruno/bruno&quot;&gt;Bruno&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Git - &lt;a href=&quot;https://git-scm.com/downloads&quot;&gt;Download &amp;amp; Install Git&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Happy Coding! 🎉&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/b7a3dd7a422ce2d6f4038d00c84a0bbd7584edaab8721af7fba12844ef833877/github-samples/planventure" medium="image" />
      
    </item>
    
    <item>
      <title>dunglas/symfony-docker</title>
      <link>https://github.com/dunglas/symfony-docker</link>
      <description>&lt;p&gt;A Docker-based installer and runtime for Symfony. Install: download and `docker compose up`.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Symfony Docker&lt;/h1&gt; 
&lt;p&gt;A &lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt;-based installer and runtime for the &lt;a href=&quot;https://symfony.com&quot;&gt;Symfony&lt;/a&gt; web framework, with &lt;a href=&quot;https://frankenphp.dev&quot;&gt;FrankenPHP&lt;/a&gt; and &lt;a href=&quot;https://caddyserver.com/&quot;&gt;Caddy&lt;/a&gt; inside!&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/dunglas/symfony-docker/workflows/CI/badge.svg?sanitize=true&quot; alt=&quot;CI&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;If not already done, &lt;a href=&quot;https://docs.docker.com/compose/install/&quot;&gt;install Docker Compose&lt;/a&gt; (v2.10+)&lt;/li&gt; 
 &lt;li&gt;Run &lt;code&gt;docker compose build --pull --no-cache&lt;/code&gt; to build fresh images&lt;/li&gt; 
 &lt;li&gt;Run &lt;code&gt;docker compose up --wait&lt;/code&gt; to set up and start a fresh Symfony project&lt;/li&gt; 
 &lt;li&gt;Open &lt;code&gt;https://localhost&lt;/code&gt; in your favorite web browser and &lt;a href=&quot;https://stackoverflow.com/a/15076602/1352334&quot;&gt;accept the auto-generated TLS certificate&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Run &lt;code&gt;docker compose down --remove-orphans&lt;/code&gt; to stop the Docker containers.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Production, development and CI ready&lt;/li&gt; 
 &lt;li&gt;Just 1 service by default&lt;/li&gt; 
 &lt;li&gt;Blazing-fast performance thanks to &lt;a href=&quot;https://frankenphp.dev/docs/worker/&quot;&gt;the worker mode of FrankenPHP&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/extra-services.md&quot;&gt;Installation of extra Docker Compose services&lt;/a&gt; with Symfony Flex&lt;/li&gt; 
 &lt;li&gt;Automatic HTTPS (in dev and prod)&lt;/li&gt; 
 &lt;li&gt;HTTP/3 and &lt;a href=&quot;https://symfony.com/blog/new-in-symfony-6-3-early-hints&quot;&gt;Early Hints&lt;/a&gt; support&lt;/li&gt; 
 &lt;li&gt;Real-time messaging thanks to a built-in &lt;a href=&quot;https://symfony.com/doc/current/mercure.html&quot;&gt;Mercure hub&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://vulcain.rocks&quot;&gt;Vulcain&lt;/a&gt; support&lt;/li&gt; 
 &lt;li&gt;Native &lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/xdebug.md&quot;&gt;XDebug&lt;/a&gt; integration&lt;/li&gt; 
 &lt;li&gt;Super-readable configuration&lt;/li&gt; 
 &lt;li&gt;Rootless, slim production image&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Enjoy!&lt;/strong&gt;&lt;/p&gt; 
&lt;h2&gt;Docs&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/options.md&quot;&gt;Options available&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/existing-project.md&quot;&gt;Using Symfony Docker with an existing project&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/extra-services.md&quot;&gt;Support for extra services&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/production.md&quot;&gt;Deploying in production&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/xdebug.md&quot;&gt;Debugging with Xdebug&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/tls.md&quot;&gt;TLS Certificates&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/mysql.md&quot;&gt;Using MySQL instead of PostgreSQL&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/alpine.md&quot;&gt;Using Alpine Linux instead of Debian&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/makefile.md&quot;&gt;Using a Makefile&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/updating.md&quot;&gt;Updating the template&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dunglas/symfony-docker/main/docs/troubleshooting.md&quot;&gt;Troubleshooting&lt;/a&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Symfony Docker is available under the MIT License.&lt;/p&gt; 
&lt;h2&gt;Credits&lt;/h2&gt; 
&lt;p&gt;Created by &lt;a href=&quot;https://dunglas.dev&quot;&gt;Kévin Dunglas&lt;/a&gt;, co-maintained by &lt;a href=&quot;https://twitter.com/maxhelias&quot;&gt;Maxime Helias&lt;/a&gt; and sponsored by &lt;a href=&quot;https://les-tilleuls.coop&quot;&gt;Les-Tilleuls.coop&lt;/a&gt;.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/6af5e047c6a80fd9726de1dcd1a9de5148243a81674628aab951f098f9a687ea/dunglas/symfony-docker" medium="image" />
      
    </item>
    
    <item>
      <title>Anduin2017/HowToCook</title>
      <link>https://github.com/Anduin2017/HowToCook</link>
      <description>&lt;p&gt;程序员在家做饭方法指南。Programmer&#39;s guide about how to cook at home (Simplified Chinese only).&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;程序员做饭指南&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/Anduin2017/HowToCook/actions/workflows/build.yml&quot;&gt;&lt;img src=&quot;https://github.com/Anduin2017/HowToCook/actions/workflows/build.yml/badge.svg?sanitize=true&quot; alt=&quot;build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/Anduin2017/HowToCook&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/Anduin2017/HowToCook/graphs/contributors&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/contributors/Anduin2017/HowToCook&quot; alt=&quot;GitHub contributors&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/how-to-cook&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/how-to-cook&quot; alt=&quot;npm&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://manhours.aiursoft.com/r/github.com/Anduin2017/HowToCook.html&quot;&gt;&lt;img src=&quot;https://manhours.aiursoft.com/r/github.com/Anduin2017/HowToCook.svg?sanitize=true&quot; alt=&quot;Man hours&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/Anduin2017/HowToCook/pkgs/container/how-to-cook&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docker-latest-blue?logo=docker&quot; alt=&quot;Docker&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://rvlt.gg/ndApqZEs&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Revolt-Join-fd6671?style=flat-square&quot; alt=&quot;Join the AnduinOS Community on Revolt&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;最近宅在家做饭，作为程序员，我偶尔在网上找找菜谱和做法。但是这些菜谱往往写法千奇百怪，经常中间莫名出来一些材料。对于习惯了形式语言的程序员来说极其不友好。&lt;/p&gt; 
&lt;p&gt;所以，我计划自己搜寻菜谱并结合实际做菜的经验，准备用更清晰精准的描述来整理常见菜的做法，以方便程序员在家做饭。&lt;/p&gt; 
&lt;p&gt;同样，我希望它是一个由社区驱动和维护的开源项目，使更多人能够一起做一个有趣的仓库。所以非常欢迎大家贡献它~&lt;/p&gt; 
&lt;h2&gt;本地部署&lt;/h2&gt; 
&lt;p&gt;如果需要在本地部署菜谱 Web 服务，可以在安装 Docker 后运行下面命令：&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker pull ghcr.io/anduin2017/how-to-cook:latest
docker run -d -p 5000:80 ghcr.io/anduin2017/how-to-cook:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;如需下载 PDF 版本，可以在浏览器中访问 &lt;a href=&quot;https://cook.aiursoft.com/document.pdf&quot;&gt;/document.pdf&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;如何贡献&lt;/h2&gt; 
&lt;p&gt;针对发现的问题，直接修改并提交 Pull request 即可。&lt;/p&gt; 
&lt;p&gt;在写新菜谱时，请复制并修改已有的菜谱模板: &lt;a href=&quot;https://github.com/Anduin2017/HowToCook/raw/master/dishes/template/%E7%A4%BA%E4%BE%8B%E8%8F%9C/%E7%A4%BA%E4%BE%8B%E8%8F%9C.md?plain=1&quot;&gt;示例菜&lt;/a&gt;。&lt;/p&gt; 
&lt;h2&gt;搭建环境&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/%E5%8E%A8%E6%88%BF%E5%87%86%E5%A4%87.md&quot;&gt;厨房准备&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/%E5%A6%82%E4%BD%95%E9%80%89%E6%8B%A9%E7%8E%B0%E5%9C%A8%E5%90%83%E4%BB%80%E4%B9%88.md&quot;&gt;如何选择现在吃什么&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/%E9%A3%9F%E6%9D%90%E7%9B%B8%E5%85%8B%E4%B8%8E%E7%A6%81%E5%BF%8C.md&quot;&gt;食材相克与禁忌&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/learn/%E9%AB%98%E5%8E%8B%E5%8A%9B%E9%94%85.md&quot;&gt;高压力锅&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/learn/%E7%A9%BA%E6%B0%94%E7%82%B8%E9%94%85.md&quot;&gt;空气炸锅&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/learn/%E5%8E%BB%E8%85%A5.md&quot;&gt;去腥&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/learn/%E9%A3%9F%E5%93%81%E5%AE%89%E5%85%A8.md&quot;&gt;食品安全&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/learn/%E5%BE%AE%E6%B3%A2%E7%82%89.md&quot;&gt;微波炉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/learn/%E5%AD%A6%E4%B9%A0%E7%84%AF%E6%B0%B4.md&quot;&gt;学习焯水&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/learn/%E5%AD%A6%E4%B9%A0%E7%82%92%E4%B8%8E%E7%85%8E.md&quot;&gt;学习炒与煎&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/learn/%E5%AD%A6%E4%B9%A0%E5%87%89%E6%8B%8C.md&quot;&gt;学习凉拌&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/learn/%E5%AD%A6%E4%B9%A0%E8%85%8C.md&quot;&gt;学习腌&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/learn/%E5%AD%A6%E4%B9%A0%E8%92%B8.md&quot;&gt;学习蒸&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/learn/%E5%AD%A6%E4%B9%A0%E7%85%AE.md&quot;&gt;学习煮&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;菜谱&lt;/h2&gt; 
&lt;h3&gt;按难度索引&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/starsystem/1Star.md&quot;&gt;1 星难度&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/starsystem/2Star.md&quot;&gt;2 星难度&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/starsystem/3Star.md&quot;&gt;3 星难度&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/starsystem/4Star.md&quot;&gt;4 星难度&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/starsystem/5Star.md&quot;&gt;5 星难度&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;素菜&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E6%8B%94%E4%B8%9D%E5%9C%9F%E8%B1%86/%E6%8B%94%E4%B8%9D%E5%9C%9F%E8%B1%86.md&quot;&gt;拔丝土豆&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E7%99%BD%E7%81%BC%E8%8F%9C%E5%BF%83/%E7%99%BD%E7%81%BC%E8%8F%9C%E5%BF%83.md&quot;&gt;白灼菜心&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%8C%85%E8%8F%9C%E7%82%92%E9%B8%A1%E8%9B%8B%E7%B2%89%E4%B8%9D/%E5%8C%85%E8%8F%9C%E7%82%92%E9%B8%A1%E8%9B%8B%E7%B2%89%E4%B8%9D.md&quot;&gt;包菜炒鸡蛋粉丝&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%8F%A0%E8%8F%9C%E7%82%92%E9%B8%A1%E8%9B%8B/%E8%8F%A0%E8%8F%9C%E7%82%92%E9%B8%A1%E8%9B%8B.md&quot;&gt;菠菜炒鸡蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E7%82%92%E6%BB%91%E8%9B%8B/%E7%82%92%E6%BB%91%E8%9B%8B.md&quot;&gt;炒滑蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E7%82%92%E8%8C%84%E5%AD%90.md&quot;&gt;炒茄子&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E7%82%92%E9%9D%92%E8%8F%9C.md&quot;&gt;炒青菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%91%B1%E7%85%8E%E8%B1%86%E8%85%90.md&quot;&gt;葱煎豆腐&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%84%86%E7%9A%AE%E8%B1%86%E8%85%90.md&quot;&gt;脆皮豆腐&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%9C%B0%E4%B8%89%E9%B2%9C.md&quot;&gt;地三鲜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%B9%B2%E9%94%85%E8%8A%B1%E8%8F%9C/%E5%B9%B2%E9%94%85%E8%8A%B1%E8%8F%9C.md&quot;&gt;干锅花菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%9A%9D%E6%B2%B9%E4%B8%89%E9%B2%9C%E8%8F%87/%E8%9A%9D%E6%B2%B9%E4%B8%89%E9%B2%9C%E8%8F%87.md&quot;&gt;蚝油三鲜菇&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%9A%9D%E6%B2%B9%E7%94%9F%E8%8F%9C.md&quot;&gt;蚝油生菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E7%BA%A2%E7%83%A7%E5%86%AC%E7%93%9C/%E7%BA%A2%E7%83%A7%E5%86%AC%E7%93%9C.md&quot;&gt;红烧冬瓜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E7%BA%A2%E7%83%A7%E8%8C%84%E5%AD%90.md&quot;&gt;红烧茄子&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%99%8E%E7%9A%AE%E9%9D%92%E6%A4%92/%E8%99%8E%E7%9A%AE%E9%9D%92%E6%A4%92.md&quot;&gt;虎皮青椒&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%AF%9D%E6%A2%85%E7%85%AE%E6%AF%9B%E8%B1%86/%E8%AF%9D%E6%A2%85%E7%85%AE%E6%AF%9B%E8%B1%86.md&quot;&gt;话梅煮毛豆&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E9%B8%A1%E8%9B%8B%E7%BE%B9/%E9%B8%A1%E8%9B%8B%E7%BE%B9.md&quot;&gt;鸡蛋羹&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E9%B8%A1%E8%9B%8B%E7%BE%B9/%E5%BE%AE%E6%B3%A2%E7%82%89%E9%B8%A1%E8%9B%8B%E7%BE%B9.md&quot;&gt;微波炉鸡蛋羹&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E9%B8%A1%E8%9B%8B%E7%BE%B9/%E8%92%B8%E7%AE%B1%E9%B8%A1%E8%9B%8B%E7%BE%B9.md&quot;&gt;蒸箱鸡蛋羹&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E9%B8%A1%E8%9B%8B%E8%8A%B1/%E9%B8%A1%E8%9B%8B%E8%8A%B1.md&quot;&gt;鸡蛋花&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E9%B8%A1%E8%9B%8B%E7%81%AB%E8%85%BF%E7%82%92%E9%BB%84%E7%93%9C.md&quot;&gt;鸡蛋火腿炒黄瓜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%8C%84%E5%AD%90%E7%82%96%E5%9C%9F%E8%B1%86.md&quot;&gt;茄子炖土豆&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%AE%B6%E5%B8%B8%E6%97%A5%E6%9C%AC%E8%B1%86%E8%85%90.md&quot;&gt;家常日本豆腐&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E6%A4%92%E7%9B%90%E7%8E%89%E7%B1%B3/%E6%A4%92%E7%9B%90%E7%8E%89%E7%B1%B3.md&quot;&gt;椒盐玉米&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E9%87%91%E9%92%B1%E8%9B%8B.md&quot;&gt;金钱蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E9%87%91%E9%92%88%E8%8F%87%E6%97%A5%E6%9C%AC%E8%B1%86%E8%85%90%E7%85%B2.md&quot;&gt;金针菇日本豆腐煲&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E7%83%A4%E8%8C%84%E5%AD%90/%E7%83%A4%E8%8C%84%E5%AD%90.md&quot;&gt;烤茄子&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E6%A6%84%E8%8F%9C%E8%82%89%E6%9C%AB%E5%9B%9B%E5%AD%A3%E8%B1%86/%E6%A6%84%E8%8F%9C%E8%82%89%E6%9C%AB%E5%9B%9B%E5%AD%A3%E8%B1%86.md&quot;&gt;榄菜肉末四季豆&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E9%9B%B7%E6%A4%92%E7%9A%AE%E8%9B%8B.md&quot;&gt;雷椒皮蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%87%89%E6%8B%8C%E8%B1%86%E8%85%90.md&quot;&gt;凉拌豆腐&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%87%89%E6%8B%8C%E9%BB%84%E7%93%9C.md&quot;&gt;凉拌黄瓜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%87%89%E6%8B%8C%E9%87%91%E9%92%88%E8%8F%87.md&quot;&gt;凉拌金针菇&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%87%89%E6%8B%8C%E6%9C%A8%E8%80%B3/%E5%87%89%E6%8B%8C%E6%9C%A8%E8%80%B3.md&quot;&gt;凉拌木耳&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%87%89%E6%8B%8C%E8%8E%B4%E7%AC%8B/%E5%87%89%E6%8B%8C%E8%8E%B4%E7%AC%8B.md&quot;&gt;凉拌莴笋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%87%89%E6%8B%8C%E6%B2%B9%E9%BA%A6%E8%8F%9C.md&quot;&gt;凉拌油麦菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E7%9A%AE%E8%9B%8B%E8%B1%86%E8%85%90.md&quot;&gt;皮蛋豆腐&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%92%B2%E7%83%A7%E8%8C%84%E5%AD%90.md&quot;&gt;蒲烧茄子&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%8A%B9%E8%8F%9C%E6%8B%8C%E8%8C%B6%E6%A0%91%E8%8F%87/%E8%8A%B9%E8%8F%9C%E6%8B%8C%E8%8C%B6%E6%A0%91%E8%8F%87.md&quot;&gt;芹菜拌茶树菇&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E6%B8%85%E7%82%92%E8%8A%B1%E8%8F%9C.md&quot;&gt;清炒花菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E6%B8%85%E8%92%B8%E5%8D%97%E7%93%9C.md&quot;&gt;清蒸南瓜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E9%99%95%E5%8C%97%E7%86%AC%E8%B1%86%E8%A7%92.md&quot;&gt;陕北熬豆角&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E4%B8%8A%E6%B1%A4%E5%A8%83%E5%A8%83%E8%8F%9C/%E4%B8%8A%E6%B1%A4%E5%A8%83%E5%A8%83%E8%8F%9C.md&quot;&gt;上汤娃娃菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E6%89%8B%E6%92%95%E5%8C%85%E8%8F%9C/%E6%89%8B%E6%92%95%E5%8C%85%E8%8F%9C.md&quot;&gt;手撕包菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E6%B0%B4%E6%B2%B9%E7%84%96%E8%94%AC%E8%8F%9C.md&quot;&gt;水油焖蔬菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E6%9D%BE%E4%BB%81%E7%8E%89%E7%B1%B3.md&quot;&gt;松仁玉米&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E7%B4%A0%E7%82%92%E8%B1%86%E8%A7%92.md&quot;&gt;素炒豆角&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E9%85%B8%E8%BE%A3%E5%9C%9F%E8%B1%86%E4%B8%9D.md&quot;&gt;酸辣土豆丝&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%92%9C%E8%93%89%E7%A9%BA%E5%BF%83%E8%8F%9C/%E8%92%9C%E8%93%89%E7%A9%BA%E5%BF%83%E8%8F%9C.md&quot;&gt;蒜蓉空心菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%92%9C%E8%93%89%E8%A5%BF%E5%85%B0%E8%8A%B1.md&quot;&gt;蒜蓉西兰花&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E7%B3%96%E6%8B%8C%E8%A5%BF%E7%BA%A2%E6%9F%BF/%E7%B3%96%E6%8B%8C%E8%A5%BF%E7%BA%A2%E6%9F%BF.md&quot;&gt;糖拌西红柿&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%8E%B4%E7%AC%8B%E5%8F%B6%E7%85%8E%E9%A5%BC/%E8%8E%B4%E7%AC%8B%E5%8F%B6%E7%85%8E%E9%A5%BC.md&quot;&gt;莴笋叶煎饼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%A5%BF%E7%BA%A2%E6%9F%BF%E7%82%92%E9%B8%A1%E8%9B%8B.md&quot;&gt;西红柿炒鸡蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%A5%BF%E7%BA%A2%E6%9F%BF%E8%B1%86%E8%85%90%E6%B1%A4%E7%BE%B9/%E8%A5%BF%E7%BA%A2%E6%9F%BF%E8%B1%86%E8%85%90%E6%B1%A4%E7%BE%B9.md&quot;&gt;西红柿豆腐汤羹&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E8%A5%BF%E8%91%AB%E8%8A%A6%E7%82%92%E9%B8%A1%E8%9B%8B/%E8%A5%BF%E8%91%AB%E8%8A%A6%E7%82%92%E9%B8%A1%E8%9B%8B.md&quot;&gt;西葫芦炒鸡蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%B0%8F%E7%82%92%E8%97%95%E4%B8%81/%E5%B0%8F%E7%82%92%E8%97%95%E4%B8%81.md&quot;&gt;小炒藕丁&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E6%B4%8B%E8%91%B1%E7%82%92%E9%B8%A1%E8%9B%8B/%E6%B4%8B%E8%91%B1%E7%82%92%E9%B8%A1%E8%9B%8B.md&quot;&gt;洋葱炒鸡蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%8D%B0%E5%BA%A6%E8%91%AB%E8%8A%A6%E4%B8%B8%E5%AD%90.md&quot;&gt;印度葫芦丸子&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E5%8D%B0%E5%BA%A6%E5%9C%9F%E8%B1%86%E8%8A%B1%E8%8F%9C.md&quot;&gt;印度土豆花菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/vegetable_dish/%E6%B2%B9%E9%86%8B%E7%88%86%E8%9B%8B.md&quot;&gt;油醋爆蛋&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;荤菜&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%BE%B3%E9%97%A8%E6%B9%BF%E7%89%88%E5%85%8D%E6%B2%BB%E7%89%9B%E8%82%89%E9%A5%AD.md&quot;&gt;澳门湿版免治牛肉饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%B7%B4%E5%9F%BA%E6%96%AF%E5%9D%A6%E7%89%9B%E8%82%89%E5%92%96%E5%96%B1/%E5%B7%B4%E5%9F%BA%E6%96%AF%E5%9D%A6%E7%89%9B%E8%82%89%E5%92%96%E5%96%B1.md&quot;&gt;巴基斯坦牛肉咖喱&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%99%BD%E8%8F%9C%E7%8C%AA%E8%82%89%E7%82%96%E7%B2%89%E6%9D%A1.md&quot;&gt;白菜猪肉炖粉条&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%B1%89%E6%B1%81%E6%8E%92%E9%AA%A8.md&quot;&gt;豉汁排骨&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%B1%89%E6%B1%81%E8%92%B8%E7%99%BD%E9%B1%94/%E8%B1%89%E6%B1%81%E8%92%B8%E7%99%BD%E9%B1%94.md&quot;&gt;豉汁蒸白鱔&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%B8%A6%E6%8A%8A%E8%82%98%E5%AD%90.md&quot;&gt;带把肘子&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%86%AC%E7%93%9C%E9%85%BF%E8%82%89/%E5%86%AC%E7%93%9C%E9%85%BF%E8%82%89.md&quot;&gt;冬瓜酿肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%B1%86%E8%B1%89%E9%B2%AE%E9%B1%BC%E6%B2%B9%E9%BA%A6%E8%8F%9C/%E8%B1%86%E8%B1%89%E9%B2%AE%E9%B1%BC%E6%B2%B9%E9%BA%A6%E8%8F%9C.md&quot;&gt;豆豉鲮鱼油麦菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%95%AA%E8%8C%84%E7%BA%A2%E9%85%B1.md&quot;&gt;番茄红酱&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%B2%89%E8%92%B8%E8%82%89.md&quot;&gt;粉蒸肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%85%90%E4%B9%B3%E8%82%89.md&quot;&gt;腐乳肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%B9%B2%E7%85%B8%E4%BB%94%E9%B8%A1/%E5%B9%B2%E7%85%B8%E4%BB%94%E9%B8%A1.md&quot;&gt;干煸仔鸡&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%AE%AB%E4%BF%9D%E9%B8%A1%E4%B8%81/%E5%AE%AB%E4%BF%9D%E9%B8%A1%E4%B8%81.md&quot;&gt;宫保鸡丁&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%92%95%E5%99%9C%E8%82%89.md&quot;&gt;咕噜肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%B9%BF%E5%BC%8F%E8%90%9D%E5%8D%9C%E7%89%9B%E8%85%A9/%E5%B9%BF%E5%BC%8F%E8%90%9D%E5%8D%9C%E7%89%9B%E8%85%A9.md&quot;&gt;广式萝卜牛腩&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%B4%B5%E5%B7%9E%E8%BE%A3%E5%AD%90%E9%B8%A1/%E8%B4%B5%E5%B7%9E%E8%BE%A3%E5%AD%90%E9%B8%A1.md&quot;&gt;贵州辣子鸡&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%8D%B7%E5%85%B0%E8%B1%86%E7%82%92%E8%85%8A%E8%82%A0/%E8%8D%B7%E5%85%B0%E8%B1%86%E7%82%92%E8%85%8A%E8%82%A0.md&quot;&gt;荷兰豆炒腊肠&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%BB%91%E6%A4%92%E7%89%9B%E6%9F%B3/%E9%BB%91%E6%A4%92%E7%89%9B%E6%9F%B3.md&quot;&gt;黑椒牛柳&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%BA%A2%E7%83%A7%E9%B8%A1%E7%BF%85.md&quot;&gt;红烧鸡翅&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%BA%A2%E7%83%A7%E8%82%89/%E7%AE%80%E6%98%93%E7%BA%A2%E7%83%A7%E8%82%89.md&quot;&gt;简易红烧肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%BA%A2%E7%83%A7%E8%82%89/%E5%8D%97%E6%B4%BE%E7%BA%A2%E7%83%A7%E8%82%89.md&quot;&gt;南派红烧肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%BA%A2%E7%83%A7%E7%8C%AA%E8%B9%84/%E7%BA%A2%E7%83%A7%E7%8C%AA%E8%B9%84.md&quot;&gt;红烧猪蹄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%B9%96%E5%8D%97%E5%AE%B6%E5%B8%B8%E7%BA%A2%E7%83%A7%E8%82%89/%E6%B9%96%E5%8D%97%E5%AE%B6%E5%B8%B8%E7%BA%A2%E7%83%A7%E8%82%89.md&quot;&gt;湖南家常红烧肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%99%8E%E7%9A%AE%E8%82%98%E5%AD%90.md&quot;&gt;虎皮肘子&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%BB%84%E7%93%9C%E7%82%92%E8%82%89.md&quot;&gt;黄瓜炒肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%BB%84%E7%84%96%E9%B8%A1.md&quot;&gt;黄焖鸡&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%BB%84%E6%B2%B9%E9%B8%A1.md&quot;&gt;黄油鸡&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%BE%BD%E6%B4%BE%E7%BA%A2%E7%83%A7%E8%82%89/%E5%BE%BD%E6%B4%BE%E7%BA%A2%E7%83%A7%E8%82%89.md&quot;&gt;徽派红烧肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%9B%9E%E9%94%85%E8%82%89/%E5%9B%9E%E9%94%85%E8%82%89.md&quot;&gt;回锅肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%B0%96%E6%A4%92%E7%82%92%E7%89%9B%E8%82%89.md&quot;&gt;尖椒炒牛肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%B0%96%E5%8F%AB%E7%89%9B%E8%9B%99/%E5%B0%96%E5%8F%AB%E7%89%9B%E8%9B%99.md&quot;&gt;尖叫牛蛙&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%85%8E%E7%83%A4%E7%BE%8A%E6%8E%92/%E7%85%8E%E7%83%A4%E7%BE%8A%E6%8E%92.md&quot;&gt;煎烤羊排&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%A7%9C%E7%82%92%E9%B8%A1/%E5%A7%9C%E7%82%92%E9%B8%A1.md&quot;&gt;姜炒鸡&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%A7%9C%E8%91%B1%E6%8D%9E%E9%B8%A1/%E5%A7%9C%E8%91%B1%E6%8D%9E%E9%B8%A1.md&quot;&gt;姜葱捞鸡&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%85%B1%E7%89%9B%E8%82%89/%E9%85%B1%E7%89%9B%E8%82%89.md&quot;&gt;酱牛肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%85%B1%E6%8E%92%E9%AA%A8/%E9%85%B1%E6%8E%92%E9%AA%A8.md&quot;&gt;酱排骨&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%8C%AD%E7%99%BD%E7%82%92%E8%82%89/%E8%8C%AD%E7%99%BD%E7%82%92%E8%82%89.md&quot;&gt;茭白炒肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%A4%92%E7%9B%90%E6%8E%92%E6%9D%A1.md&quot;&gt;椒盐排条&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%8A%A5%E6%9C%AB%E7%BD%97%E6%B0%8F%E8%99%BE/%E8%8A%A5%E6%9C%AB%E7%BD%97%E6%B0%8F%E8%99%BE.md&quot;&gt;芥末罗氏虾&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%92%96%E5%96%B1%E8%82%A5%E7%89%9B/%E5%92%96%E5%96%B1%E8%82%A5%E7%89%9B.md&quot;&gt;咖喱肥牛&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%83%A4%E9%B8%A1%E7%BF%85.md&quot;&gt;烤鸡翅&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%8F%AF%E4%B9%90%E9%B8%A1%E7%BF%85.md&quot;&gt;可乐鸡翅&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%8F%A3%E6%B0%B4%E9%B8%A1/%E5%8F%A3%E6%B0%B4%E9%B8%A1.md&quot;&gt;口水鸡&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%BE%A3%E6%A4%92%E7%82%92%E8%82%89.md&quot;&gt;辣椒炒肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%80%81%E5%A6%88%E8%B9%84%E8%8A%B1/%E8%80%81%E5%A6%88%E8%B9%84%E8%8A%B1.md&quot;&gt;老妈蹄花&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%80%81%E5%BC%8F%E9%94%85%E5%8C%85%E8%82%89/%E8%80%81%E5%BC%8F%E9%94%85%E5%8C%85%E8%82%89.md&quot;&gt;老式锅包肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%86%B7%E5%90%83%E5%85%94.md&quot;&gt;冷吃兔&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%8D%94%E6%9E%9D%E8%82%89/%E8%8D%94%E6%9E%9D%E8%82%89.md&quot;&gt;荔枝肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%87%89%E6%8B%8C%E9%B8%A1%E4%B8%9D/%E5%87%89%E6%8B%8C%E9%B8%A1%E4%B8%9D.md&quot;&gt;凉拌鸡丝&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%8D%A4%E8%8F%9C/%E5%8D%A4%E8%8F%9C.md&quot;&gt;卤菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%90%9D%E5%8D%9C%E7%82%96%E7%BE%8A%E6%8E%92.md&quot;&gt;萝卜炖羊排&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%BA%BB%E8%BE%A3%E9%A6%99%E9%94%85.md&quot;&gt;麻辣香锅&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%BA%BB%E5%A9%86%E8%B1%86%E8%85%90/%E9%BA%BB%E5%A9%86%E8%B1%86%E8%85%90.md&quot;&gt;麻婆豆腐&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%9A%82%E8%9A%81%E4%B8%8A%E6%A0%91.md&quot;&gt;蚂蚁上树&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%A2%85%E8%8F%9C%E6%89%A3%E8%82%89/%E6%A2%85%E8%8F%9C%E6%89%A3%E8%82%89.md&quot;&gt;梅菜扣肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%A5%B6%E9%85%AA%E5%9F%B9%E6%A0%B9%E9%80%9A%E5%BF%83%E7%B2%89/%E5%A5%B6%E9%85%AA%E5%9F%B9%E6%A0%B9%E9%80%9A%E5%BF%83%E7%B2%89.md&quot;&gt;奶酪培根通心粉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%89%9B%E6%8E%92/%E7%89%9B%E6%8E%92.md&quot;&gt;牛排&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%86%9C%E5%AE%B6%E4%B8%80%E7%A2%97%E9%A6%99/%E5%86%9C%E5%AE%B6%E4%B8%80%E7%A2%97%E9%A6%99.md&quot;&gt;农家一碗香&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%95%A4%E9%85%92%E9%B8%AD/%E5%95%A4%E9%85%92%E9%B8%AD.md&quot;&gt;啤酒鸭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%BB%94%E5%BC%8F%E8%85%8A%E8%82%A0%E5%A8%83%E5%A8%83%E8%8F%9C/%E9%BB%94%E5%BC%8F%E8%85%8A%E8%82%A0%E5%A8%83%E5%A8%83%E8%8F%9C.md&quot;&gt;黔式腊肠娃娃菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%9D%92%E6%A4%92%E5%9C%9F%E8%B1%86%E7%82%92%E8%82%89/%E9%9D%92%E6%A4%92%E5%9C%9F%E8%B1%86%E7%82%92%E8%82%89.md&quot;&gt;青椒土豆炒肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%B8%85%E8%92%B8%E9%B3%9C%E9%B1%BC/%E6%B8%85%E8%92%B8%E9%B3%9C%E9%B1%BC.md&quot;&gt;清蒸鳜鱼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%82%89%E9%A5%BC%E7%82%96%E8%9B%8B.md&quot;&gt;肉饼炖蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%9D%80%E7%8C%AA%E8%8F%9C.md&quot;&gt;杀猪菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%B1%B1%E8%A5%BF%E8%BF%87%E6%B2%B9%E8%82%89.md&quot;&gt;山西过油肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%95%86%E8%8A%9D%E8%82%89.md&quot;&gt;商芝肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%98%A6%E8%82%89%E5%9C%9F%E8%B1%86%E7%89%87/%E7%98%A6%E8%82%89%E5%9C%9F%E8%B1%86%E7%89%87.md&quot;&gt;瘦肉土豆片&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%B0%B4%E7%85%AE%E7%89%9B%E8%82%89/%E6%B0%B4%E7%85%AE%E7%89%9B%E8%82%89.md&quot;&gt;水煮牛肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%B0%B4%E7%85%AE%E8%82%89%E7%89%87.md&quot;&gt;水煮肉片&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%92%9C%E8%8B%94%E7%82%92%E8%82%89%E6%9C%AB.md&quot;&gt;蒜苔炒肉末&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%8F%B0%E5%BC%8F%E5%8D%A4%E8%82%89%E9%A5%AD/%E5%8F%B0%E5%BC%8F%E5%8D%A4%E8%82%89%E9%A5%AD.md&quot;&gt;台式卤肉饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%B3%96%E9%86%8B%E9%87%8C%E8%84%8A.md&quot;&gt;糖醋里脊&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%B3%96%E9%86%8B%E6%8E%92%E9%AA%A8/%E7%B3%96%E9%86%8B%E6%8E%92%E9%AA%A8.md&quot;&gt;糖醋排骨&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%94%9C%E8%BE%A3%E7%83%A4%E5%85%A8%E7%BF%85.md&quot;&gt;甜辣烤全翅&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%9C%9F%E8%B1%86%E7%82%96%E6%8E%92%E9%AA%A8/%E5%9C%9F%E8%B1%86%E7%82%96%E6%8E%92%E9%AA%A8.md&quot;&gt;土豆炖排骨&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%97%A0%E9%AA%A8%E9%B8%A1%E7%88%AA/%E6%97%A0%E9%AA%A8%E9%B8%A1%E7%88%AA.md&quot;&gt;无骨鸡爪&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%A5%BF%E7%BA%A2%E6%9F%BF%E7%89%9B%E8%85%A9/%E8%A5%BF%E7%BA%A2%E6%9F%BF%E7%89%9B%E8%85%A9.md&quot;&gt;西红柿牛腩&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%A5%BF%E7%BA%A2%E6%9F%BF%E5%9C%9F%E8%B1%86%E7%82%96%E7%89%9B%E8%82%89/%E8%A5%BF%E7%BA%A2%E6%9F%BF%E5%9C%9F%E8%B1%86%E7%82%96%E7%89%9B%E8%82%89.md&quot;&gt;西红柿土豆炖牛肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E4%B9%A1%E6%9D%91%E5%95%A4%E9%85%92%E9%B8%AD.md&quot;&gt;乡村啤酒鸭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%A6%99%E5%B9%B2%E8%8A%B9%E8%8F%9C%E7%82%92%E8%82%89/%E9%A6%99%E5%B9%B2%E8%8A%B9%E8%8F%9C%E7%82%92%E8%82%89.md&quot;&gt;香干芹菜炒肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%A6%99%E5%B9%B2%E8%82%89%E4%B8%9D.md&quot;&gt;香干肉丝&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%A6%99%E8%8F%87%E6%BB%91%E9%B8%A1/%E9%A6%99%E8%8F%87%E6%BB%91%E9%B8%A1.md&quot;&gt;香菇滑鸡&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%A6%99%E7%85%8E%E4%BA%94%E8%8A%B1%E8%82%89/%E9%A6%99%E7%85%8E%E4%BA%94%E8%8A%B1%E8%82%89.md&quot;&gt;香煎五花肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%A6%99%E8%BE%A3%E9%B8%A1%E7%88%AA%E7%85%B2/%E9%A6%99%E8%BE%A3%E9%B8%A1%E7%88%AA%E7%85%B2.md&quot;&gt;香辣鸡爪煲&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%B9%98%E7%A5%81%E7%B1%B3%E5%A4%AB%E9%B8%AD/%E6%B9%98%E7%A5%81%E7%B1%B3%E5%A4%AB%E9%B8%AD.md&quot;&gt;湘祁米夫鸭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%B0%8F%E7%82%92%E9%BB%84%E7%89%9B%E8%82%89/%E5%B0%8F%E7%82%92%E9%BB%84%E7%89%9B%E8%82%89.md&quot;&gt;小炒黄牛肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%B0%8F%E7%82%92%E9%B8%A1%E8%82%9D/%E5%B0%8F%E7%82%92%E9%B8%A1%E8%82%9D.md&quot;&gt;小炒鸡肝&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%B0%8F%E7%82%92%E8%82%89.md&quot;&gt;小炒肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%B0%8F%E7%B1%B3%E8%BE%A3%E7%82%92%E8%82%89.md&quot;&gt;小米辣炒肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%B0%8F%E9%85%A5%E8%82%89.md&quot;&gt;小酥肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%96%B0%E7%96%86%E5%A4%A7%E7%9B%98%E9%B8%A1/%E6%96%B0%E7%96%86%E5%A4%A7%E7%9B%98%E9%B8%A1.md&quot;&gt;新疆大盘鸡&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E8%A1%80%E6%B5%86%E9%B8%AD/%E8%A1%80%E6%B5%86%E9%B8%AD.md&quot;&gt;血浆鸭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%BE%8A%E6%8E%92%E7%84%96%E9%9D%A2/%E7%BE%8A%E6%8E%92%E7%84%96%E9%9D%A2.md&quot;&gt;羊排焖面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%B4%8B%E8%91%B1%E7%82%92%E7%8C%AA%E8%82%89.md&quot;&gt;洋葱炒猪肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%84%8F%E5%BC%8F%E7%83%A4%E9%B8%A1.md&quot;&gt;意式烤鸡&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%B1%BC%E9%A6%99%E8%8C%84%E5%AD%90/%E9%B1%BC%E9%A6%99%E8%8C%84%E5%AD%90.md&quot;&gt;鱼香茄子&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%B1%BC%E9%A6%99%E8%82%89%E4%B8%9D.md&quot;&gt;鱼香肉丝&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%9E%9D%E7%AB%B9%E7%BE%8A%E8%85%A9%E7%85%B2/%E6%9E%9D%E7%AB%B9%E7%BE%8A%E8%85%A9%E7%85%B2.md&quot;&gt;枝竹羊腩煲&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%8C%AA%E7%9A%AE%E5%86%BB/%E7%8C%AA%E7%9A%AE%E5%86%BB.md&quot;&gt;猪皮冻&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E7%8C%AA%E8%82%89%E7%83%A9%E9%85%B8%E8%8F%9C.md&quot;&gt;猪肉烩酸菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E6%9F%B1%E5%80%99%E7%89%9B%E8%85%A9/%E6%9F%B1%E5%80%99%E7%89%9B%E8%85%A9.md&quot;&gt;柱候牛腩&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E5%AD%9C%E7%84%B6%E7%89%9B%E8%82%89.md&quot;&gt;孜然牛肉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/meat_dish/%E9%86%89%E6%8E%92%E9%AA%A8/%E9%86%89%E6%8E%92%E9%AA%A8.md&quot;&gt;醉排骨&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;水产&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E7%99%BD%E7%81%BC%E8%99%BE/%E7%99%BD%E7%81%BC%E8%99%BE.md&quot;&gt;白灼虾&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E9%B3%8A%E9%B1%BC%E7%82%96%E8%B1%86%E8%85%90/%E9%B3%8A%E9%B1%BC%E7%82%96%E8%B1%86%E8%85%90.md&quot;&gt;鳊鱼炖豆腐&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E8%9B%8F%E6%8A%B1%E8%9B%8B/%E8%9B%8F%E6%8A%B1%E8%9B%8B.md&quot;&gt;蛏抱蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E8%91%B1%E7%83%A7%E6%B5%B7%E5%8F%82/%E8%91%B1%E7%83%A7%E6%B5%B7%E5%8F%82.md&quot;&gt;葱烧海参&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E8%91%B1%E6%B2%B9%E6%A1%82%E9%B1%BC/%E8%91%B1%E6%B2%B9%E6%A1%82%E9%B1%BC.md&quot;&gt;葱油桂鱼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E5%B9%B2%E7%85%8E%E9%98%BF%E6%A0%B9%E5%BB%B7%E7%BA%A2%E8%99%BE/%E5%B9%B2%E7%85%8E%E9%98%BF%E6%A0%B9%E5%BB%B7%E7%BA%A2%E8%99%BE.md&quot;&gt;干煎阿根廷红虾&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E7%BA%A2%E7%83%A7%E9%B2%A4%E9%B1%BC.md&quot;&gt;红烧鲤鱼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E7%BA%A2%E7%83%A7%E9%B1%BC.md&quot;&gt;红烧鱼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E7%BA%A2%E7%83%A7%E9%B1%BC%E5%A4%B4.md&quot;&gt;红烧鱼头&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E9%BB%84%E6%B2%B9%E7%85%8E%E8%99%BE/%E9%BB%84%E6%B2%B9%E7%85%8E%E8%99%BE.md&quot;&gt;黄油煎虾&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E6%B7%B7%E5%90%88%E7%83%A4%E9%B1%BC/%E7%83%A4%E9%B1%BC.md&quot;&gt;烤鱼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E9%85%B1%E7%82%96%E8%9F%B9.md&quot;&gt;酱炖蟹&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E8%8A%A5%E6%9C%AB%E9%BB%84%E6%B2%B9%E7%BD%97%E6%B0%8F%E8%99%BE/%E8%8A%A5%E6%9C%AB%E9%BB%84%E6%B2%B9%E7%BD%97%E6%B0%8F%E8%99%BE.md&quot;&gt;芥末黄油罗氏虾&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E5%92%96%E5%96%B1%E7%82%92%E8%9F%B9.md&quot;&gt;咖喱炒蟹&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E9%B2%A4%E9%B1%BC%E7%82%96%E7%99%BD%E8%8F%9C/%E9%B2%A4%E9%B1%BC%E7%82%96%E7%99%BD%E8%8F%9C.md&quot;&gt;鲤鱼炖白菜&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E6%B8%85%E8%92%B8%E9%B2%88%E9%B1%BC/%E6%B8%85%E8%92%B8%E9%B2%88%E9%B1%BC.md&quot;&gt;清蒸鲈鱼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E6%B8%85%E8%92%B8%E7%94%9F%E8%9A%9D.md&quot;&gt;清蒸生蚝&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E8%82%89%E8%9F%B9%E7%85%B2.md&quot;&gt;肉蟹煲&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E6%B0%B4%E7%85%AE%E9%B1%BC.md&quot;&gt;水煮鱼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E8%92%9C%E8%93%89%E8%99%BE/%E8%92%9C%E8%93%89%E8%99%BE.md&quot;&gt;蒜蓉虾&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E8%92%9C%E9%A6%99%E9%BB%84%E6%B2%B9%E8%99%BE/%E8%92%9C%E9%A6%99%E9%BB%84%E6%B2%B9%E8%99%BE.md&quot;&gt;蒜香黄油虾&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E7%B3%96%E9%86%8B%E9%B2%A4%E9%B1%BC/%E7%B3%96%E9%86%8B%E9%B2%A4%E9%B1%BC.md&quot;&gt;糖醋鲤鱼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E5%BE%AE%E6%B3%A2%E8%91%B1%E5%A7%9C%E9%BB%91%E9%B3%95%E9%B1%BC.md&quot;&gt;微波葱姜黑鳕鱼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E9%A6%99%E7%85%8E%E7%BF%98%E5%98%B4%E9%B1%BC/%E9%A6%99%E7%85%8E%E7%BF%98%E5%98%B4%E9%B1%BC.md&quot;&gt;香煎翘嘴鱼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E5%93%8D%E6%B2%B9%E9%B3%9D%E4%B8%9D.md&quot;&gt;响油鳝丝&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E5%B0%8F%E9%BE%99%E8%99%BE/%E5%B0%8F%E9%BE%99%E8%99%BE.md&quot;&gt;小龙虾&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/aquatic/%E6%B2%B9%E7%84%96%E5%A4%A7%E8%99%BE/%E6%B2%B9%E7%84%96%E5%A4%A7%E8%99%BE.md&quot;&gt;油焖大虾&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;早餐&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E8%8C%B6%E5%8F%B6%E8%9B%8B.md&quot;&gt;茶叶蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E8%9B%8B%E7%85%8E%E7%B3%8D%E7%B2%91.md&quot;&gt;蛋煎糍粑&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E6%A1%82%E5%9C%86%E7%BA%A2%E6%9E%A3%E7%B2%A5.md&quot;&gt;桂圆红枣粥&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E9%9F%A9%E5%9B%BD%E9%BA%BB%E8%8D%AF%E9%B8%A1%E8%9B%8B.md&quot;&gt;韩国麻药鸡蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E9%B8%A1%E8%9B%8B%E4%B8%89%E6%98%8E%E6%B2%BB.md&quot;&gt;鸡蛋三明治&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E7%85%8E%E9%A5%BA.md&quot;&gt;煎饺&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E9%87%91%E6%9E%AA%E9%B1%BC%E9%85%B1%E4%B8%89%E6%98%8E%E6%B2%BB.md&quot;&gt;金枪鱼酱三明治&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E7%A9%BA%E6%B0%94%E7%82%B8%E9%94%85%E9%9D%A2%E5%8C%85%E7%89%87.md&quot;&gt;空气炸锅面包片&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E7%BE%8E%E5%BC%8F%E7%82%92%E8%9B%8B.md&quot;&gt;美式炒蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E7%89%9B%E5%A5%B6%E7%87%95%E9%BA%A6.md&quot;&gt;牛奶燕麦&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E6%89%8B%E6%8A%93%E9%A5%BC.md&quot;&gt;手抓饼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E6%B0%B4%E7%85%AE%E7%8E%89%E7%B1%B3.md&quot;&gt;水煮玉米&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E8%8B%8F%E6%A0%BC%E5%85%B0%E8%9B%8B/%E8%8B%8F%E6%A0%BC%E5%85%B0%E8%9B%8B.md&quot;&gt;苏格兰蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E5%A4%AA%E9%98%B3%E8%9B%8B.md&quot;&gt;太阳蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E6%BA%8F%E5%BF%83%E8%9B%8B.md&quot;&gt;溏心蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E5%90%90%E5%8F%B8%E6%9E%9C%E9%85%B1.md&quot;&gt;吐司果酱&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E5%AE%8C%E7%BE%8E%E6%B0%B4%E7%85%AE%E8%9B%8B.md&quot;&gt;完美水煮蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E5%BE%AE%E6%B3%A2%E7%82%89%E8%9B%8B%E7%B3%95.md&quot;&gt;微波炉蛋糕&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E5%BE%AE%E6%B3%A2%E7%82%89%E8%8D%B7%E5%8C%85%E8%9B%8B.md&quot;&gt;微波炉荷包蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E5%BE%AE%E6%B3%A2%E7%82%89%E8%92%B8%E8%9B%8B.md&quot;&gt;微波炉蒸蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E6%B8%A9%E6%B3%89%E8%9B%8B/%E6%B8%A9%E6%B3%89%E8%9B%8B.md&quot;&gt;温泉蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E7%87%95%E9%BA%A6%E9%B8%A1%E8%9B%8B%E9%A5%BC.md&quot;&gt;燕麦鸡蛋饼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E6%84%8F%E5%BC%8F%E9%A6%99%E8%82%A0%E5%8C%97%E9%9D%9E%E8%9B%8B.md&quot;&gt;意式香肠北非蛋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E8%92%B8%E8%8A%B1%E5%8D%B7.md&quot;&gt;蒸花卷&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/breakfast/%E8%92%B8%E6%B0%B4%E8%9B%8B.md&quot;&gt;蒸水蛋&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;主食&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%82%92%E6%96%B9%E4%BE%BF%E9%9D%A2.md&quot;&gt;炒方便面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%82%92%E6%B2%B3%E7%B2%89.md&quot;&gt;炒河粉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%82%92%E5%87%89%E7%B2%89/%E7%82%92%E5%87%89%E7%B2%89.md&quot;&gt;炒凉粉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%82%92%E9%A6%8D.md&quot;&gt;炒馍&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%82%92%E5%B9%B4%E7%B3%95.md&quot;&gt;炒年糕&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%82%92%E6%84%8F%E5%A4%A7%E5%88%A9%E9%9D%A2/%E7%82%92%E6%84%8F%E5%A4%A7%E5%88%A9%E9%9D%A2.md&quot;&gt;炒意大利面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E8%91%B1%E6%B2%B9%E6%8B%8C%E9%9D%A2.md&quot;&gt;葱油拌面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E8%9B%8B%E5%8C%85%E9%A5%AD.md&quot;&gt;蛋包饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E8%9B%8B%E7%82%92%E9%A5%AD.md&quot;&gt;蛋炒饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%94%B5%E9%A5%AD%E7%85%B2%E4%B8%89%E6%96%87%E9%B1%BC%E7%82%8A%E9%A5%AD/%E7%94%B5%E9%A5%AD%E7%85%B2%E4%B8%89%E6%96%87%E9%B1%BC%E7%82%8A%E9%A5%AD.md&quot;&gt;电饭煲三文鱼炊饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E8%B1%86%E8%A7%92%E7%84%96%E9%9D%A2/%E8%B1%86%E8%A7%92%E7%84%96%E9%9D%A2.md&quot;&gt;豆角焖面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E9%9F%A9%E5%BC%8F%E6%8B%8C%E9%A5%AD/%E9%9F%A9%E5%BC%8F%E6%8B%8C%E9%A5%AD.md&quot;&gt;韩式拌饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E6%B2%B3%E5%8D%97%E8%92%B8%E9%9D%A2%E6%9D%A1/%E6%B2%B3%E5%8D%97%E8%92%B8%E9%9D%A2%E6%9D%A1.md&quot;&gt;河南蒸面条&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%BA%A2%E8%8A%B8%E8%B1%86%E6%8B%8C%E9%A5%AD.md&quot;&gt;红芸豆拌饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%81%AB%E8%85%BF%E9%A5%AD%E5%9B%A2/%E7%81%AB%E8%85%BF%E9%A5%AD%E5%9B%A2.md&quot;&gt;火腿饭团&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E5%9F%BA%E7%A1%80%E7%89%9B%E5%A5%B6%E9%9D%A2%E5%8C%85/%E5%9F%BA%E7%A1%80%E7%89%9B%E5%A5%B6%E9%9D%A2%E5%8C%85.md&quot;&gt;基础牛奶面包&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E8%8C%84%E5%AD%90%E8%82%89%E7%85%8E%E9%A5%BC/%E8%8C%84%E5%AD%90%E8%82%89%E7%85%8E%E9%A5%BC.md&quot;&gt;茄子肉煎饼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E9%B2%A3%E9%B1%BC%E6%B5%B7%E8%8B%94%E7%8E%89%E7%B1%B3%E9%A5%AD/%E9%B2%A3%E9%B1%BC%E6%B5%B7%E8%8B%94%E7%8E%89%E7%B1%B3%E9%A5%AD.md&quot;&gt;鲣鱼海苔玉米饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E9%85%B1%E6%8B%8C%E8%8D%9E%E9%BA%A6%E9%9D%A2/%E9%85%B1%E6%8B%8C%E8%8D%9E%E9%BA%A6%E9%9D%A2.md&quot;&gt;酱拌荞麦面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E9%9F%AD%E8%8F%9C%E7%9B%92%E5%AD%90.md&quot;&gt;韭菜盒子&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E5%8F%AF%E4%B9%90%E7%82%92%E9%A5%AD.md&quot;&gt;可乐炒饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%A9%BA%E6%B0%94%E7%82%B8%E9%94%85%E7%85%A7%E7%83%A7%E9%B8%A1%E9%A5%AD/%E7%A9%BA%E6%B0%94%E7%82%B8%E9%94%85%E7%85%A7%E7%83%A7%E9%B8%A1%E9%A5%AD.md&quot;&gt;空气炸锅照烧鸡饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E9%86%AA%E7%B3%9F%E5%B0%8F%E6%B1%A4%E5%9C%86.md&quot;&gt;醪糟小汤圆&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E8%80%81%E5%B9%B2%E5%A6%88%E6%8B%8C%E9%9D%A2.md&quot;&gt;老干妈拌面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E8%80%81%E5%8F%8B%E7%8C%AA%E8%82%89%E7%B2%89/%E8%80%81%E5%8F%8B%E7%8C%AA%E8%82%89%E7%B2%89.md&quot;&gt;老友猪肉粉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%83%99%E9%A5%BC/%E7%83%99%E9%A5%BC.md&quot;&gt;烙饼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E5%88%A9%E6%8F%90%E5%B7%A7%E5%8D%A1.md&quot;&gt;利提巧卡&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E5%87%89%E7%B2%89/%E5%87%89%E7%B2%89.md&quot;&gt;凉粉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E8%9E%BA%E8%9B%B3%E7%B2%89.md&quot;&gt;螺蛳粉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E9%BA%BB%E8%BE%A3%E5%87%8F%E8%84%82%E8%8D%9E%E9%BA%A6%E9%9D%A2.md&quot;&gt;麻辣减脂荞麦面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E9%BA%BB%E6%B2%B9%E6%8B%8C%E9%9D%A2.md&quot;&gt;麻油拌面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%B1%B3%E9%A5%AD/%E7%94%B5%E9%A5%AD%E7%85%B2%E8%92%B8%E7%B1%B3%E9%A5%AD.md&quot;&gt;电饭煲蒸米饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%B1%B3%E9%A5%AD/%E7%85%AE%E9%94%85%E8%92%B8%E7%B1%B3%E9%A5%AD.md&quot;&gt;煮锅蒸米饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E6%8A%AB%E8%90%A8%E9%A5%BC%E7%9A%AE/%E6%8A%AB%E8%90%A8%E9%A5%BC%E7%9A%AE.md&quot;&gt;披萨饼皮&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%83%AD%E5%B9%B2%E9%9D%A2.md&quot;&gt;热干面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E6%97%A5%E5%BC%8F%E8%82%A5%E7%89%9B%E4%B8%BC%E9%A5%AD/%E6%97%A5%E5%BC%8F%E8%82%A5%E7%89%9B%E4%B8%BC%E9%A5%AD.md&quot;&gt;日式肥牛丼饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E6%97%A5%E5%BC%8F%E5%92%96%E5%96%B1%E9%A5%AD/%E6%97%A5%E5%BC%8F%E5%92%96%E5%96%B1%E9%A5%AD.md&quot;&gt;日式咖喱饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E8%82%89%E8%9B%8B%E7%9B%96%E9%A5%AD.md&quot;&gt;肉蛋盖饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E9%99%95%E8%A5%BF%E6%B2%B9%E6%B3%BC%E9%9D%A2/%E9%99%95%E8%A5%BF%E6%B2%B9%E6%B3%BC%E9%9D%A2.md&quot;&gt;陕西油泼面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%83%A7%E9%A5%BC/%E8%8A%9D%E9%BA%BB%E7%83%A7%E9%A5%BC.md&quot;&gt;芝麻烧饼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E6%89%8B%E5%B7%A5%E6%B0%B4%E9%A5%BA.md&quot;&gt;手工水饺&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E9%85%B8%E8%BE%A3%E8%95%A8%E6%A0%B9%E7%B2%89.md&quot;&gt;酸辣蕨根粉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E6%B1%A4%E9%9D%A2.md&quot;&gt;汤面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E5%BE%AE%E6%B3%A2%E7%82%89%E8%85%8A%E8%82%A0%E7%85%B2%E4%BB%94%E9%A5%AD/%E5%BE%AE%E6%B3%A2%E7%82%89%E8%85%8A%E8%82%A0%E7%85%B2%E4%BB%94%E9%A5%AD.md&quot;&gt;微波炉腊肠煲仔饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E8%A5%BF%E7%BA%A2%E6%9F%BF%E9%B8%A1%E8%9B%8B%E6%8C%82%E9%9D%A2/%E8%A5%BF%E7%BA%A2%E6%9F%BF%E9%B8%A1%E8%9B%8B%E6%8C%82%E9%9D%A2.md&quot;&gt;西红柿鸡蛋挂面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E9%B2%9C%E8%82%89%E7%83%A7%E5%8D%96.md&quot;&gt;鲜肉烧卖&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E5%92%B8%E8%82%89%E8%8F%9C%E9%A5%AD.md&quot;&gt;咸肉菜饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E6%89%AC%E5%B7%9E%E7%82%92%E9%A5%AD/%E6%89%AC%E5%B7%9E%E7%82%92%E9%A5%AD.md&quot;&gt;扬州炒饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E6%84%8F%E5%BC%8F%E8%82%89%E9%85%B1%E9%9D%A2/%E6%84%8F%E5%BC%8F%E8%82%89%E9%85%B1%E9%9D%A2.md&quot;&gt;意式肉酱面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E5%8D%B0%E5%BA%A6%E7%83%A4%E9%A5%BC.md&quot;&gt;印度烤饼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E5%8D%B0%E5%BA%A6%E7%84%96%E9%A5%AD.md&quot;&gt;印度焖饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E9%B9%B0%E5%98%B4%E8%B1%86%E7%82%B8%E9%A5%BC.md&quot;&gt;鹰嘴豆炸饼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%82%B8%E9%85%B1%E9%9D%A2.md&quot;&gt;炸酱面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%85%A7%E7%83%A7%E9%B8%A1%E8%85%BF%E9%A5%AD.md&quot;&gt;照烧鸡腿饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E8%92%B8%E5%8D%A4%E9%9D%A2.md&quot;&gt;蒸卤面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E4%B8%AD%E5%BC%8F%E9%A6%85%E9%A5%BC/%E4%B8%AD%E5%BC%8F%E9%A6%85%E9%A5%BC.md&quot;&gt;中式馅饼&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%8C%AA%E6%B2%B9%E6%8B%8C%E9%A5%AD.md&quot;&gt;猪油拌饭&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/staple/%E7%85%AE%E6%B3%A1%E9%9D%A2%E5%8A%A0%E8%9B%8B.md&quot;&gt;煮泡面加蛋&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;半成品加工&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/semi-finished/%E5%8D%8A%E6%88%90%E5%93%81%E6%84%8F%E9%9D%A2.md&quot;&gt;半成品意面&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/semi-finished/%E7%A9%BA%E6%B0%94%E7%82%B8%E9%94%85%E9%B8%A1%E7%BF%85%E4%B8%AD/%E7%A9%BA%E6%B0%94%E7%82%B8%E9%94%85%E9%B8%A1%E7%BF%85%E4%B8%AD.md&quot;&gt;空气炸锅鸡翅中&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/semi-finished/%E7%A9%BA%E6%B0%94%E7%82%B8%E9%94%85%E7%BE%8A%E6%8E%92/%E7%A9%BA%E6%B0%94%E7%82%B8%E9%94%85%E7%BE%8A%E6%8E%92.md&quot;&gt;空气炸锅羊排&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/semi-finished/%E6%87%92%E4%BA%BA%E8%9B%8B%E6%8C%9E/%E6%87%92%E4%BA%BA%E8%9B%8B%E6%8C%9E.md&quot;&gt;懒人蛋挞&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/semi-finished/%E5%87%89%E7%9A%AE.md&quot;&gt;凉皮&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/semi-finished/%E7%89%9B%E6%B2%B9%E7%81%AB%E9%94%85%E5%BA%95%E6%96%99.md&quot;&gt;牛油火锅底料&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/semi-finished/%E9%80%9F%E5%86%BB%E9%A6%84%E9%A5%A8.md&quot;&gt;速冻馄饨&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/semi-finished/%E9%80%9F%E5%86%BB%E6%B0%B4%E9%A5%BA.md&quot;&gt;速冻水饺&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/semi-finished/%E9%80%9F%E5%86%BB%E6%B1%A4%E5%9C%86/%E9%80%9F%E5%86%BB%E6%B1%A4%E5%9C%86.md&quot;&gt;速冻汤圆&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/semi-finished/%E7%82%B8%E8%96%AF%E6%9D%A1/%E7%82%B8%E8%96%AF%E6%9D%A1.md&quot;&gt;炸薯条&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;汤与粥&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E6%98%82%E5%88%BA%E9%B1%BC%E8%B1%86%E8%85%90%E6%B1%A4/%E6%98%82%E5%88%BA%E9%B1%BC%E8%B1%86%E8%85%90%E6%B1%A4.md&quot;&gt;昂刺鱼豆腐汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E9%99%88%E7%9A%AE%E6%8E%92%E9%AA%A8%E6%B1%A4/%E9%99%88%E7%9A%AE%E6%8E%92%E9%AA%A8%E6%B1%A4.md&quot;&gt;陈皮排骨汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E9%99%88%E7%9A%AE%E6%8E%92%E9%AA%A8%E6%B1%A4.md&quot;&gt;陈皮排骨汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E7%95%AA%E8%8C%84%E7%89%9B%E8%82%89%E8%9B%8B%E8%8A%B1%E6%B1%A4.md&quot;&gt;番茄牛肉蛋花汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E5%8B%BE%E8%8A%A1%E9%A6%99%E8%8F%87%E6%B1%A4/%E5%8B%BE%E8%8A%A1%E9%A6%99%E8%8F%87%E6%B1%A4.md&quot;&gt;勾芡香菇汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E9%BB%84%E7%93%9C%E7%9A%AE%E8%9B%8B%E6%B1%A4.md&quot;&gt;黄瓜皮蛋汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E9%87%91%E9%92%88%E8%8F%87%E6%B1%A4.md&quot;&gt;金针菇汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E8%8F%8C%E8%8F%87%E7%82%96%E4%B9%B3%E9%B8%BD/%E8%8F%8C%E8%8F%87%E7%82%96%E4%B9%B3%E9%B8%BD.md&quot;&gt;菌菇炖乳鸽&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E8%85%8A%E5%85%AB%E7%B2%A5.md&quot;&gt;腊八粥&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E7%BD%97%E5%AE%8B%E6%B1%A4.md&quot;&gt;罗宋汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E7%B1%B3%E7%B2%A5.md&quot;&gt;米粥&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E5%A5%B6%E6%B2%B9%E8%98%91%E8%8F%87%E6%B1%A4.md&quot;&gt;奶油蘑菇汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E6%8E%92%E9%AA%A8%E8%8B%A6%E7%93%9C%E6%B1%A4/%E6%8E%92%E9%AA%A8%E8%8B%A6%E7%93%9C%E6%B1%A4.md&quot;&gt;排骨苦瓜汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E7%9A%AE%E8%9B%8B%E7%98%A6%E8%82%89%E7%B2%A5.md&quot;&gt;皮蛋瘦肉粥&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E7%94%9F%E6%B1%86%E4%B8%B8%E5%AD%90%E6%B1%A4.md&quot;&gt;生汆丸子汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E8%A5%BF%E7%BA%A2%E6%9F%BF%E9%B8%A1%E8%9B%8B%E6%B1%A4.md&quot;&gt;西红柿鸡蛋汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E5%B0%8F%E7%B1%B3%E7%B2%A5.md&quot;&gt;小米粥&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E7%BE%8A%E8%82%89%E6%B1%A4/%E7%BE%8A%E8%82%89%E6%B1%A4.md&quot;&gt;羊肉汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E9%93%B6%E8%80%B3%E8%8E%B2%E5%AD%90%E7%B2%A5/%E9%93%B6%E8%80%B3%E8%8E%B2%E5%AD%90%E7%B2%A5.md&quot;&gt;银耳莲子粥&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E7%8E%89%E7%B1%B3%E6%8E%92%E9%AA%A8%E6%B1%A4/%E7%8E%89%E7%B1%B3%E6%8E%92%E9%AA%A8%E6%B1%A4.md&quot;&gt;玉米排骨汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E6%9C%B1%E9%9B%80%E6%B1%A4/%E6%9C%B1%E9%9B%80%E6%B1%A4.md&quot;&gt;朱雀汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/soup/%E7%B4%AB%E8%8F%9C%E8%9B%8B%E8%8A%B1%E6%B1%A4.md&quot;&gt;紫菜蛋花汤&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;饮料&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E8%80%99%E8%80%99%E6%9F%91%E8%8C%B6/%E8%80%99%E8%80%99%E6%9F%91%E8%8C%B6.md&quot;&gt;耙耙柑茶&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E7%99%BE%E9%A6%99%E6%9E%9C%E6%A9%99%E5%AD%90%E7%89%B9%E8%B0%83/%E7%99%BE%E9%A6%99%E6%9E%9C%E6%A9%99%E5%AD%90%E7%89%B9%E8%B0%83.md&quot;&gt;百香果橙子特调&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E5%86%B0%E7%B2%89/%E5%86%B0%E7%B2%89.md&quot;&gt;冰粉&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E8%8F%A0%E8%90%9D%E5%92%96%E5%95%A1%E7%89%B9%E8%B0%83/%E8%8F%A0%E8%90%9D%E5%92%96%E5%95%A1%E7%89%B9%E8%B0%83.md&quot;&gt;菠萝咖啡特调&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E5%86%AC%E7%93%9C%E8%8C%B6.md&quot;&gt;冬瓜茶&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E6%B5%B7%E8%BE%B9%E8%90%BD%E6%97%A5/%E6%B5%B7%E8%BE%B9%E8%90%BD%E6%97%A5.md&quot;&gt;海边落日&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E9%87%91%E8%8F%B2%E5%A3%AB/%E9%87%91%E8%8F%B2%E5%A3%AB.md&quot;&gt;金菲士&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E9%87%91%E6%B1%A4%E5%8A%9B/%E9%87%91%E6%B1%A4%E5%8A%9B.md&quot;&gt;金汤力&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E9%85%92%E9%85%BF%E9%86%AA%E7%B3%9F/%E9%85%92%E9%85%BF%E9%86%AA%E7%B3%9F.md&quot;&gt;酒酿醪糟&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E5%8F%AF%E4%B9%90%E6%A1%B6.md&quot;&gt;可乐桶&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E5%A5%B6%E8%8C%B6.md&quot;&gt;奶茶&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E6%9F%A0%E6%AA%AC%E6%B0%B4/%E6%9F%A0%E6%AA%AC%E6%B0%B4.md&quot;&gt;柠檬水&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E7%89%9B%E6%B2%B9%E6%9E%9C%E6%8B%89%E8%A5%BF.md&quot;&gt;牛油果拉西&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E5%A5%87%E5%BC%82%E6%9E%9C%E8%8F%A0%E8%8F%9C%E7%89%B9%E8%B0%83/%E5%A5%87%E5%BC%82%E6%9E%9C%E8%8F%A0%E8%8F%9C%E7%89%B9%E8%B0%83.md&quot;&gt;奇异果菠菜特调&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E7%A0%82%E7%B3%96%E6%A4%B0%E5%AD%90%E5%86%B0%E6%B2%99/%E7%A0%82%E7%B3%96%E6%A4%B0%E5%AD%90%E5%86%B0%E6%B2%99.md&quot;&gt;砂糖椰子冰沙&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E9%85%B8%E6%A2%85%E6%B1%A4/%E9%85%B8%E6%A2%85%E6%B1%A4.md&quot;&gt;酸梅汤&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E9%85%B8%E6%A2%85%E6%B1%A4%EF%BC%88%E5%8D%8A%E6%88%90%E5%93%81%E5%8A%A0%E5%B7%A5%EF%BC%89.md&quot;&gt;酸梅汤（半成品加工）&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E6%B3%B0%E5%9B%BD%E6%89%8B%E6%A0%87%E7%BA%A2%E8%8C%B6/%E6%B3%B0%E5%9B%BD%E6%89%8B%E6%A0%87%E7%BA%A2%E8%8C%B6.md&quot;&gt;泰国手标红茶&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E6%9D%A8%E6%9E%9D%E7%94%98%E9%9C%B2.md&quot;&gt;杨枝甘露&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E5%8D%B0%E5%BA%A6%E5%A5%B6%E8%8C%B6.md&quot;&gt;印度奶茶&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/%E9%95%BF%E5%B2%9B%E5%86%B0%E8%8C%B6.md&quot;&gt;长岛冰茶&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/B52%E8%BD%B0%E7%82%B8%E6%9C%BA.md&quot;&gt;B52轰炸机&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/drink/Mojito%E8%8E%AB%E5%90%89%E6%89%98.md&quot;&gt;Mojito莫吉托&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;酱料和其它材料&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/condiment/%E8%8D%89%E8%8E%93%E9%85%B1/%E8%8D%89%E8%8E%93%E9%85%B1.md&quot;&gt;草莓酱&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/condiment/%E8%91%B1%E6%B2%B9.md&quot;&gt;葱油&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/condiment/%E7%AE%80%E6%98%93%E7%89%88%E7%82%92%E7%B3%96%E8%89%B2.md&quot;&gt;简易版炒糖色&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/condiment/%E8%92%9C%E9%A6%99%E9%85%B1%E6%B2%B9.md&quot;&gt;蒜香酱油&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/condiment/%E7%B3%96%E9%86%8B%E6%B1%81.md&quot;&gt;糖醋汁&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/condiment/%E6%B2%B9%E6%B3%BC%E8%BE%A3%E5%AD%90/%E6%B2%B9%E6%B3%BC%E8%BE%A3%E5%AD%90.md&quot;&gt;油泼辣子&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/condiment/%E6%B2%B9%E9%85%A5.md&quot;&gt;油酥&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/condiment/%E7%82%B8%E4%B8%B2%E9%85%B1%E6%96%99.md&quot;&gt;炸串酱料&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/condiment/%E8%94%97%E7%B3%96%E7%B3%96%E6%B5%86/%E8%94%97%E7%B3%96%E7%B3%96%E6%B5%86.md&quot;&gt;蔗糖糖浆&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;甜品&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E5%A5%A5%E5%88%A9%E5%A5%A5%E5%86%B0%E6%B7%87%E6%B7%8B/%E5%A5%A5%E5%88%A9%E5%A5%A5%E5%86%B0%E6%B7%87%E6%B7%8B.md&quot;&gt;奥利奥冰淇淋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E8%8D%89%E8%8E%93%E5%86%B0%E6%B7%87%E6%B7%8B/%E8%8D%89%E8%8E%93%E5%86%B0%E6%B7%87%E6%B7%8B.md&quot;&gt;草莓冰淇淋&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E5%8F%8D%E6%B2%99%E8%8A%8B%E5%A4%B4/%E5%8F%8D%E6%B2%99%E8%8A%8B%E5%A4%B4.md&quot;&gt;反沙芋头&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E9%BE%9F%E8%8B%93%E8%86%8F/%E9%BE%9F%E8%8B%93%E8%86%8F.md&quot;&gt;龟苓膏&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E7%BA%A2%E6%9F%9A%E8%9B%8B%E7%B3%95/%E7%BA%A2%E6%9F%9A%E8%9B%8B%E7%B3%95.md&quot;&gt;红柚蛋糕&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E8%83%A1%E8%90%9D%E5%8D%9C%E7%94%9C%E7%B3%95.md&quot;&gt;胡萝卜甜糕&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E5%92%96%E5%95%A1%E6%A4%B0%E5%A5%B6%E5%86%BB/%E5%92%96%E5%95%A1%E6%A4%B0%E5%A5%B6%E5%86%BB.md&quot;&gt;咖啡椰奶冻&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E7%83%A4%E8%9B%8B%E6%8C%9E/%E7%83%A4%E8%9B%8B%E6%8C%9E.md&quot;&gt;烤蛋挞&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E7%83%A4%E7%AE%B1%E7%89%88%E5%B7%B4%E6%96%AF%E5%85%8B%E8%8A%9D%E5%A3%AB%E8%9B%8B%E7%B3%95/%E7%83%A4%E7%AE%B1%E7%89%88%E5%B7%B4%E6%96%AF%E5%85%8B%E8%8A%9D%E5%A3%AB%E8%9B%8B%E7%B3%95.md&quot;&gt;烤箱版巴斯克芝士蛋糕&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E7%8E%9B%E6%A0%BC%E4%B8%BD%E7%89%B9%E9%A5%BC%E5%B9%B2/%E7%8E%9B%E6%A0%BC%E4%B8%BD%E7%89%B9%E9%A5%BC%E5%B9%B2.md&quot;&gt;玛格丽特饼干&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E9%AD%94%E8%8A%8B%E8%9B%8B%E7%B3%95/%E9%AD%94%E8%8A%8B%E8%9B%8B%E7%B3%95.md&quot;&gt;魔芋蛋糕&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E6%88%9A%E9%A3%8E%E8%9B%8B%E7%B3%95/%E6%88%9A%E9%A3%8E%E8%9B%8B%E7%B3%95.md&quot;&gt;戚风蛋糕&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E9%85%B8%E5%A5%B6%E6%84%8F%E5%BC%8F%E5%A5%B6%E5%86%BB/%E9%85%B8%E5%A5%B6%E6%84%8F%E5%BC%8F%E5%A5%B6%E5%86%BB.md&quot;&gt;酸奶意式奶冻&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E6%8F%90%E6%8B%89%E7%B1%B3%E8%8B%8F/%E6%8F%90%E6%8B%89%E7%B1%B3%E8%8B%8F.md&quot;&gt;提拉米苏&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E6%97%A0%E5%8E%A8%E5%B8%88%E6%9C%BA%E8%9C%82%E8%9C%9C%E9%9D%A2%E5%8C%85/%E6%97%A0%E5%8E%A8%E5%B8%88%E6%9C%BA%E8%9C%82%E8%9C%9C%E9%9D%A2%E5%8C%85.md&quot;&gt;无厨师机蜂蜜面包&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E9%9B%AA%E8%8A%B1%E9%85%A5/%E9%9B%AA%E8%8A%B1%E9%85%A5.md&quot;&gt;雪花酥&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E8%8B%B1%E5%BC%8F%E5%8F%B8%E5%BA%B7/%E8%8B%B1%E5%BC%8F%E5%8F%B8%E5%BA%B7.md&quot;&gt;英式司康&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E8%8A%8B%E6%B3%A5%E9%9B%AA%E5%AA%9A%E5%A8%98/%E8%8A%8B%E6%B3%A5%E9%9B%AA%E5%AA%9A%E5%A8%98.md&quot;&gt;芋泥雪媚娘&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/dishes/dessert/%E7%82%B8%E9%B2%9C%E5%A5%B6/%E7%82%B8%E9%B2%9C%E5%A5%B6.md&quot;&gt;炸鲜奶&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;进阶知识学习&lt;/h2&gt; 
&lt;p&gt;如果你已经做了许多上面的菜，对于厨艺已经入门，并且想学习更加高深的烹饪技巧，请继续阅读下面的内容：&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/advanced/%E8%BE%85%E6%96%99%E6%8A%80%E5%B7%A7.md&quot;&gt;辅料技巧&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/advanced/%E9%AB%98%E7%BA%A7%E4%B8%93%E4%B8%9A%E6%9C%AF%E8%AF%AD.md&quot;&gt;高级专业术语&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/advanced/%E7%B3%96%E8%89%B2%E7%9A%84%E7%82%92%E5%88%B6.md&quot;&gt;糖色的炒制&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Anduin2017/HowToCook/master/tips/advanced/%E6%B2%B9%E6%B8%A9%E5%88%A4%E6%96%AD%E6%8A%80%E5%B7%A7.md&quot;&gt;油温判断技巧&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;衍生作品推荐&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://king-jingxiang.github.io/HowToCook/&quot;&gt;图像化菜谱：支持在线预览与 PDF 导出&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/worryzyy/HowToCook-mcp&quot;&gt;HowToCook-mcp 让 AI 助手变身私人大厨，为你的一日三餐出谋划策&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/DusKing1/howtocook-py-mcp&quot;&gt;HowToCook-py-mcp 让 AI 助手变身私人大厨，为你的一日三餐出谋划策 (Python)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ryanuo/whatToEat&quot;&gt;whatToEat 今天吃什么？的决策工具，帮助你快速选择合适的菜谱。&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/76bc67b74e6ca72b13e0e6d3b0fda0be65a33967c86cf1613b046a742a385b1f/Anduin2017/HowToCook" medium="image" />
      
    </item>
    
    <item>
      <title>nodejs/docker-node</title>
      <link>https://github.com/nodejs/docker-node</link>
      <description>&lt;p&gt;Official Docker Image for Node.js 🐳 🐢 🚀&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Node.js&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://hub.docker.com/_/node&quot;&gt;&lt;strong&gt;node - Docker Official Images on Docker Hub&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/nodejs/docker-node&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues/nodejs/docker-node.svg?sanitize=true&quot; alt=&quot;GitHub issues&quot; title=&quot;GitHub issues&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/nodejs/docker-node&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/nodejs/docker-node.svg?sanitize=true&quot; alt=&quot;GitHub stars&quot; title=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;The official Node.js docker image, made with love by the node community.&lt;/p&gt; 
&lt;!-- START doctoc generated TOC please keep comment here to allow auto update --&gt; 
&lt;!-- DON&#39;T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --&gt; 
&lt;h2&gt;Table of Contents&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#what-is-nodejs&quot;&gt;What is Node.js?&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#how-to-use-this-image&quot;&gt;How to use this image&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#create-a-dockerfile-in-your-nodejs-app-project&quot;&gt;Create a &lt;code&gt;Dockerfile&lt;/code&gt; in your Node.js app project&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#best-practices&quot;&gt;Best Practices&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#run-a-single-nodejs-script&quot;&gt;Run a single Node.js script&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#verbosity&quot;&gt;Verbosity&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#dockerfile&quot;&gt;Dockerfile&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#docker-run&quot;&gt;Docker Run&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#npm-run&quot;&gt;npm run&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#image-variants&quot;&gt;Image Variants&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#nodeversion&quot;&gt;&lt;code&gt;node:&amp;lt;version&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#nodealpine&quot;&gt;&lt;code&gt;node:alpine&lt;/code&gt;&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#nodebullseye&quot;&gt;&lt;code&gt;node:bullseye&lt;/code&gt;&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#nodebookworm&quot;&gt;&lt;code&gt;node:bookworm&lt;/code&gt;&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#nodetrixie&quot;&gt;&lt;code&gt;node:trixie&lt;/code&gt;&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#nodeslim&quot;&gt;&lt;code&gt;node:slim&lt;/code&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#license&quot;&gt;License&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#supported-docker-versions&quot;&gt;Supported Docker versions&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#supported-nodejs-versions&quot;&gt;Supported Node.js versions&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#yarn-v1-classic-bundling&quot;&gt;Yarn v1 Classic bundling&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#governance-and-current-members&quot;&gt;Governance and Current Members&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#docker-maintainers&quot;&gt;Docker Maintainers&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#collaborators&quot;&gt;Collaborators&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#emeritus&quot;&gt;Emeritus&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#former-maintainers&quot;&gt;Former Maintainers&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- END doctoc generated TOC please keep comment here to allow auto update --&gt; 
&lt;h2&gt;What is Node.js?&lt;/h2&gt; 
&lt;p&gt;Node.js is a platform built on Chrome&#39;s JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.&lt;/p&gt; 
&lt;p&gt;See: &lt;a href=&quot;https://nodejs.org&quot;&gt;https://nodejs.org&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;How to use this image&lt;/h2&gt; 
&lt;h3&gt;Create a &lt;code&gt;Dockerfile&lt;/code&gt; in your Node.js app project&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-dockerfile&quot;&gt;# specify the node base image with your desired version node:&amp;lt;version&amp;gt;
FROM node:24
# replace this with your application&#39;s default port
EXPOSE 8888
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can then build and run the Docker image:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-console&quot;&gt;$ docker build -t my-nodejs-app .
$ docker run -it --rm --name my-running-app my-nodejs-app
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you prefer Docker Compose:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;services:
  node:
    image: &quot;node:24&quot;
    user: &quot;node&quot;
    working_dir: /home/node/app
    environment:
      - NODE_ENV=production
    volumes:
      - ./:/home/node/app
    ports: # use if it is necessary to expose the container to the host machine
      - &quot;8888:8888&quot;
    command: [&quot;npm&quot;, &quot;start&quot;]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can then run using Docker Compose:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-console&quot;&gt;$ docker-compose up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Docker Compose example mounts your current directory (including node_modules) to the container. It assumes that your application has a file named &lt;a href=&quot;https://docs.npmjs.com/files/package.json&quot;&gt;&lt;code&gt;package.json&lt;/code&gt;&lt;/a&gt; defining &lt;a href=&quot;https://docs.npmjs.com/misc/scripts#default-values&quot;&gt;start script&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Best Practices&lt;/h3&gt; 
&lt;p&gt;We have assembled a &lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/docs/BestPractices.md&quot;&gt;Best Practices Guide&lt;/a&gt; for those using these images on a daily basis.&lt;/p&gt; 
&lt;h3&gt;Run a single Node.js script&lt;/h3&gt; 
&lt;p&gt;For many simple, single file projects, you may find it inconvenient to write a complete &lt;code&gt;Dockerfile&lt;/code&gt;. In such cases, you can run a Node.js script by using the Node.js Docker image directly:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-console&quot;&gt;$ docker run -it --rm --name my-running-script -v &quot;$PWD&quot;:/usr/src/app -w /usr/src/app node:24 node your-daemon-or-script.js
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Verbosity&lt;/h3&gt; 
&lt;p&gt;Prior to 8.7.0 and 6.11.4, the docker images overrode the default npm log level from &lt;code&gt;warn&lt;/code&gt; to &lt;code&gt;info&lt;/code&gt;. However, due to improvements to npm and new Docker patterns (e.g. multi-stage builds) the working group reached a &lt;a href=&quot;https://github.com/nodejs/docker-node/issues/528&quot;&gt;consensus&lt;/a&gt; to revert the log level to npm defaults. If you need more verbose output, please use one of the following methods to change the verbosity level.&lt;/p&gt; 
&lt;h4&gt;Dockerfile&lt;/h4&gt; 
&lt;p&gt;If you create your own &lt;code&gt;Dockerfile&lt;/code&gt; which inherits from the &lt;code&gt;node&lt;/code&gt; image, you can simply use &lt;code&gt;ENV&lt;/code&gt; to override &lt;code&gt;NPM_CONFIG_LOGLEVEL&lt;/code&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-dockerfile&quot;&gt;FROM node
ENV NPM_CONFIG_LOGLEVEL=info
...
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Docker Run&lt;/h4&gt; 
&lt;p&gt;If you run the node image using &lt;code&gt;docker run&lt;/code&gt;, you can use the &lt;code&gt;-e&lt;/code&gt; flag to override &lt;code&gt;NPM_CONFIG_LOGLEVEL&lt;/code&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-console&quot;&gt;$ docker run -e NPM_CONFIG_LOGLEVEL=info node ...
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;npm run&lt;/h4&gt; 
&lt;p&gt;If you are running npm commands, you can use &lt;code&gt;--loglevel&lt;/code&gt; to control the verbosity of the output.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-console&quot;&gt;$ docker run node npm --loglevel=warn ...
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Image Variants&lt;/h2&gt; 
&lt;p&gt;The &lt;code&gt;node&lt;/code&gt; images come in many flavors, each designed for a specific use case. All of the images contain pre-installed versions of &lt;code&gt;node&lt;/code&gt;, &lt;a href=&quot;https://www.npmjs.com/&quot;&gt;&lt;code&gt;npm&lt;/code&gt;&lt;/a&gt;, and &lt;a href=&quot;https://classic.yarnpkg.com/&quot;&gt;Yarn v1 Classic&lt;/a&gt;. For each supported architecture, the supported variants are different. In the file: &lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/versions.json&quot;&gt;versions.json&lt;/a&gt;, it lists all supported variants for all of the architectures that we support now. See &lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/#yarn-v1-classic-bundling&quot;&gt;Yarn v1 Classic bundling&lt;/a&gt; for future plans to remove this legacy version.&lt;/p&gt; 
&lt;h3&gt;&lt;code&gt;node:&amp;lt;version&amp;gt;&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. This tag is based off of &lt;a href=&quot;https://registry.hub.docker.com/_/buildpack-deps/&quot;&gt;&lt;code&gt;buildpack-deps&lt;/code&gt;&lt;/a&gt;. &lt;code&gt;buildpack-deps&lt;/code&gt; is designed for the average user of docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system.&lt;/p&gt; 
&lt;h3&gt;&lt;code&gt;node:alpine&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;This image is based on the popular &lt;a href=&quot;https://alpinelinux.org&quot;&gt;Alpine Linux project&lt;/a&gt;, available in &lt;a href=&quot;https://hub.docker.com/_/alpine&quot;&gt;the &lt;code&gt;alpine&lt;/code&gt; official image&lt;/a&gt;. Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general.&lt;/p&gt; 
&lt;p&gt;This variant is highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use &lt;a href=&quot;https://musl.libc.org/&quot;&gt;musl libc&lt;/a&gt; instead of &lt;a href=&quot;https://www.etalabs.net/compare_libcs.html&quot;&gt;glibc and friends&lt;/a&gt;, so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn&#39;t have an issue with this, so this variant is usually a very safe choice. See &lt;a href=&quot;https://news.ycombinator.com/item?id=10782897&quot;&gt;this Hacker News comment thread&lt;/a&gt; for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images.&lt;/p&gt; 
&lt;p&gt;One common issue that may arise is a missing shared library required for use of &lt;code&gt;process.dlopen&lt;/code&gt;. To add the missing shared libraries to your image:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;For Alpine v3.18 and earlier, adding the &lt;a href=&quot;https://pkgs.alpinelinux.org/package/v3.18/main/x86/libc6-compat&quot;&gt;&lt;code&gt;libc6-compat&lt;/code&gt;&lt;/a&gt; package in your Dockerfile is recommended: &lt;code&gt;apk add --no-cache libc6-compat&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Starting from Alpine v3.19, you can use the &lt;a href=&quot;https://pkgs.alpinelinux.org/package/v3.19/main/x86/gcompat&quot;&gt;&lt;code&gt;gcompat&lt;/code&gt;&lt;/a&gt; package to add the missing shared libraries: &lt;code&gt;apk add --no-cache gcompat&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;To minimize image size, it&#39;s uncommon for additional related tools (such as &lt;code&gt;git&lt;/code&gt; or &lt;code&gt;bash&lt;/code&gt;) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the &lt;a href=&quot;https://hub.docker.com/_/alpine/&quot;&gt;&lt;code&gt;alpine&lt;/code&gt; image description&lt;/a&gt; for examples of how to install packages if you are unfamiliar).&lt;/p&gt; 
&lt;p&gt;To make the image size even smaller, you can &lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/docs/BestPractices.md#smaller-images-without-npmyarn&quot;&gt;bundle without npm/yarn&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;&lt;code&gt;node:bullseye&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;This image is based on version 11 of &lt;a href=&quot;https://debian.org&quot;&gt;Debian&lt;/a&gt;, available in &lt;a href=&quot;https://hub.docker.com/_/debian&quot;&gt;the &lt;code&gt;debian&lt;/code&gt; official image&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;&lt;code&gt;node:bookworm&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;This image is based on version 12 of &lt;a href=&quot;https://debian.org&quot;&gt;Debian&lt;/a&gt;, available in &lt;a href=&quot;https://hub.docker.com/_/debian&quot;&gt;the &lt;code&gt;debian&lt;/code&gt; official image&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;&lt;code&gt;node:trixie&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;This image is based on version 13 of &lt;a href=&quot;https://debian.org&quot;&gt;Debian&lt;/a&gt;, available in &lt;a href=&quot;https://hub.docker.com/_/debian&quot;&gt;the &lt;code&gt;debian&lt;/code&gt; official image&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;&lt;code&gt;node:slim&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run &lt;code&gt;node&lt;/code&gt;. Unless you are working in an environment where &lt;em&gt;only&lt;/em&gt; the Node.js image will be deployed and you have space constraints, we highly recommend using the default image of this repository.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/nodejs/node/raw/main/LICENSE&quot;&gt;License information&lt;/a&gt; for the software contained in this image. &lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/LICENSE&quot;&gt;License information&lt;/a&gt; for the Node.js Docker project.&lt;/p&gt; 
&lt;h2&gt;Supported Docker versions&lt;/h2&gt; 
&lt;p&gt;If you are using &lt;a href=&quot;https://docs.docker.com/get-started/get-docker/&quot;&gt;Docker Desktop&lt;/a&gt;, it is recommended to use a recent version, released in the last six months.&lt;/p&gt; 
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.docker.com/engine/release-notes/&quot;&gt;Docker Engine release notes&lt;/a&gt; for current Engine versions.&lt;/p&gt; 
&lt;h2&gt;Supported Node.js versions&lt;/h2&gt; 
&lt;p&gt;This project will support Node.js versions as still under active support as per the &lt;a href=&quot;https://github.com/nodejs/Release&quot;&gt;Node.js release schedule&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Yarn v1 Classic bundling&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://classic.yarnpkg.com/&quot;&gt;Yarn v1 Classic&lt;/a&gt; is currently bundled in &lt;code&gt;node&lt;/code&gt; image variants. Because Yarn v1 is &lt;a href=&quot;https://github.com/yarnpkg/yarn&quot;&gt;frozen&lt;/a&gt; and no longer maintained, bundling plans have been revised.&lt;/p&gt; 
&lt;p&gt;As of Node.js 26.0.0 it is planned to no longer bundle Yarn v1 into &lt;code&gt;node&lt;/code&gt; images. For lower versions of Node.js (&amp;lt;26) &lt;code&gt;node&lt;/code&gt; images will continue to bundle Yarn v1.&lt;/p&gt; 
&lt;p&gt;Users with legacy requirements for Yarn v1 under Node.js 26 and above may be able to follow &lt;a href=&quot;https://classic.yarnpkg.com/en/docs/install&quot;&gt;Yarn v1 installation instructions&lt;/a&gt; and install using &lt;code&gt;npm install --global yarn&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;Governance and Current Members&lt;/h2&gt; 
&lt;p&gt;The Node.js Docker Image is governed by an open maintainer model. See &lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/GOVERNANCE.md&quot;&gt;GOVERNANCE.md&lt;/a&gt; for project roles and decision-making, and &lt;a href=&quot;https://raw.githubusercontent.com/nodejs/docker-node/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for contribution guidance. If a final decision cannot be reached using consensus seeking, the Node.js TSC is the final arbiter.&lt;/p&gt; 
&lt;h3&gt;Docker Maintainers&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Laurent Goderre (&lt;a href=&quot;https://github.com/LaurentGoderre&quot;&gt;LaurentGoderre&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Simen Bekkhus (&lt;a href=&quot;https://github.com/SimenB&quot;&gt;SimenB&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Peter Dave Hello (&lt;a href=&quot;https://github.com/PeterDaveHello&quot;&gt;PeterDaveHello&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Rafael Gonzaga (&lt;a href=&quot;https://github.com/rafaelgss&quot;&gt;rafaelgss&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Matteo Collina (&lt;a href=&quot;https://github.com/mcollina&quot;&gt;mcollina&lt;/a&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Collaborators&lt;/h3&gt; 
&lt;p&gt;Additional collaborators are managed via the &lt;a href=&quot;https://github.com/orgs/nodejs/teams/docker&quot;&gt;@nodejs/docker team&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Emeritus&lt;/h3&gt; 
&lt;h4&gt;Former Maintainers&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Mikeal Rogers (&lt;a href=&quot;https://github.com/mikeal&quot;&gt;mikeal&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Christopher Horrell (&lt;a href=&quot;https://github.com/chorrell&quot;&gt;chorrell&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Peter Petrov (&lt;a href=&quot;https://github.com/pesho&quot;&gt;pesho&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;John Mitchell (&lt;a href=&quot;https://github.com/jlmitch5&quot;&gt;jlmitch5&lt;/a&gt;)&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/906d2c4ea787d0bd1fc52416fd70b2d701cf39e0dafb49917c2170568412f58a/nodejs/docker-node" medium="image" />
      
    </item>
    
    <item>
      <title>sytone/obsidian-remote</title>
      <link>https://github.com/sytone/obsidian-remote</link>
      <description>&lt;p&gt;Run Obsidian.md in a browser via a docker container.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;obsidian-remote&lt;/h1&gt; 
&lt;p&gt;This docker image allows you to run &lt;a href=&quot;https://obsidian.md/&quot;&gt;obsidian&lt;/a&gt; in docker as a container and access it via your web browser.&lt;/p&gt; 
&lt;p&gt;Use &lt;code&gt;http://localhost:8080/&lt;/code&gt; to access it locally, do not expose this to the web unless you secure it and know what you are doing!!&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#using-the-container&quot;&gt;Using the Container&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#ports&quot;&gt;Ports&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#mapped-volumes&quot;&gt;Mapped Volumes&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#environment-variables&quot;&gt;Environment Variables&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#language-support&quot;&gt;Language Support&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#using-docker-compose&quot;&gt;Using Docker Compose&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#enabling-git-for-the-obsidian-git-plugin&quot;&gt;Enabling GIT for the obsidian-git plugin&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#docker-cli-example&quot;&gt;Docker CLI example&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#reloading-obsidan-in-the-browser&quot;&gt;Reloading Obsidan in the Browser&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#setting-puid-and-pgid&quot;&gt;Setting PUID and PGID&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#adding-missing-fonts&quot;&gt;Adding missing fonts&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#map-font-file-using-docker-cli&quot;&gt;Map font file using Docker CLI&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#map-font-file-using-docker-compose&quot;&gt;Map font file using Docker Compose&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#hosting-behind-a-reverse-proxy&quot;&gt;Hosting behind a reverse proxy&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#example-nginx-configuration&quot;&gt;Example nginx configuration&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#hosting-behind-nginx-proxy-manager-npm&quot;&gt;Hosting behind Nginx Proxy Manager (NPM)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#updating-obsidian&quot;&gt;Updating Obsidian&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#building-locally&quot;&gt;Building locally&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/#copypaste-from-external-source&quot;&gt;Copy/Paste From External Source&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Using the Container&lt;/h2&gt; 
&lt;h3&gt;Windows based path&lt;/h3&gt; 
&lt;p&gt;To run a interactive version to test it out:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-PowerShell&quot;&gt;docker run --rm -it `
  -v D:/ob/vaults:/vaults `
  -v D:/ob/config:/config `
  -p 8080:8080 `
  ghcr.io/sytone/obsidian-remote:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To run it as a daemon in the background:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-PowerShell&quot;&gt;docker run -d `
  -v D:/ob/vaults:/vaults `
  -v D:/ob/config:/config `
  -p 8080:8080 `
  ghcr.io/sytone/obsidian-remote:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The ARM container is now avaliable, will look to make this simpler in the future. The ARM imange is on the docker hub and not the github container registry.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-PowerShell&quot;&gt;docker run -d `
  -v D:/ob/vaults:/vaults `
  -v D:/ob/config:/config `
  -p 8080:8080 `
  sytone/obsidian-remote:arm64
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Linux bash paths&lt;/h3&gt; 
&lt;p&gt;To run a interactive version to test it out:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir -p ob/{vaults,config}
docker run --rm -it \
  -v ./ob/vaults:/vaults \
  -v ./ob/config:/config \
  -p 8080:8080 \
  ghcr.io/sytone/obsidian-remote:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To run it as a daemon in the background:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir -p ob/{vaults,config}
docker run -d \
  -v ./ob/vaults:/vaults \
  -v ./ob/config:/config \
  -p 8080:8080 \
  ghcr.io/sytone/obsidian-remote:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The ARM container is now avaliable, will look to make this simpler in the future. The ARM imange is on the docker hub and not the github container registry.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir -p ob/{vaults,config}
docker run -d \
  -v ./ob/vaults:/vaults \
  -v ./ob/config:/config \
  -p 8080:8080 \
  sytone/obsidian-remote:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Ports&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Port&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;8080&lt;/td&gt; 
   &lt;td&gt;HTTP Obsidian Web Interface&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;8443&lt;/td&gt; 
   &lt;td&gt;HTTPS Obsidian Web Interface&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Mapped Volumes&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Path&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/vaults&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;The location on the host for your Obsidian Vaults&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/config&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;The location to store Obsidan configuration and ssh data for obsidian-git&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Environment Variables&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Environment Variable&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;PUID&lt;/td&gt; 
   &lt;td&gt;Set the user ID for the container user. &lt;code&gt;911&lt;/code&gt; by default.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;PGID&lt;/td&gt; 
   &lt;td&gt;Set the group ID for the continer user. &lt;code&gt;911&lt;/code&gt; by default.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;TZ&lt;/td&gt; 
   &lt;td&gt;Set the Time Zone for the container, should match your TZ. &lt;code&gt;Etc/UTC&lt;/code&gt; by default. See &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_tz_database_time_zones&quot;&gt;List of tz database time zones&lt;/a&gt; for valid options.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;DOCKER_MODS&lt;/td&gt; 
   &lt;td&gt;Use to add mods to the container like git. E.g. &lt;code&gt;DOCKER_MODS=linuxserver/mods:universal-git&lt;/code&gt; See &lt;a href=&quot;https://github.com/linuxserver/docker-mods&quot;&gt;Docker Mods&lt;/a&gt; for details.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;INSTALL_PACKAGES&lt;/td&gt; 
   &lt;td&gt;Use to add package for the container like language pack. E.g. &lt;code&gt;INSTALL_PACKAGES=fonts-noto-cjk fonts-noto-extra&lt;/code&gt; And the docker mod &lt;code&gt;linuxserver/mods:universal-package-install&lt;/code&gt; is required.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;KEYBOARD&lt;/td&gt; 
   &lt;td&gt;Used to se the keyboard being used for input. E.g. &lt;code&gt;KEYBOARD=en-us-qwerty&lt;/code&gt; or &lt;code&gt;KEYBOARD=de-de-qwertz&lt;/code&gt; a list of other possible values (not tested) can be found at &lt;a href=&quot;https://github.com/linuxserver/docker-digikam#keyboard-layouts&quot;&gt;https://github.com/linuxserver/docker-digikam#keyboard-layouts&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;CUSTOM_PORT&lt;/td&gt; 
   &lt;td&gt;Internal port the container listens on for http if it needs to be swapped from the default 8080.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;CUSTOM_HTTPS_PORT&lt;/td&gt; 
   &lt;td&gt;Internal port the container listens on for https if it needs to be swapped from the default 8443.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;CUSTOM_USER&lt;/td&gt; 
   &lt;td&gt;HTTP Basic auth username, abc is default.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;PASSWORD&lt;/td&gt; 
   &lt;td&gt;HTTP Basic auth password, abc is default. If unset there will be no auth&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;SUBFOLDER&lt;/td&gt; 
   &lt;td&gt;Subfolder for the application if running a subfolder reverse proxy, need both slashes IE &lt;code&gt;/subfolder/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;TITLE&lt;/td&gt; 
   &lt;td&gt;The page title displayed on the web browser, default &quot;KasmVNC Client&quot;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;FM_HOME&lt;/td&gt; 
   &lt;td&gt;This is the home directory (landing) for the file manager, default &quot;/config&quot;.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Language Support&lt;/h3&gt; 
&lt;p&gt;To show the other languages, add the mod &lt;code&gt;linuxserver/mods:universal-package-install&lt;/code&gt; and add the language pack. E.g. &lt;code&gt;INSTALL_PACKAGES=fonts-noto-cjk fonts-noto-extra&lt;/code&gt; to support CJK (Chinese Japanese Korean).&lt;/p&gt; 
&lt;p&gt;To type other language in the browser you should enable the &lt;strong&gt;IME Input Mode&lt;/strong&gt; in the side panel.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/assets/IMEInputMode.png&quot; alt=&quot;Settings IME Input Mode&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Using Docker Compose&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-YAML&quot;&gt;services:
  obsidian:
    image: &#39;ghcr.io/sytone/obsidian-remote:latest&#39;
    container_name: obsidian-remote
    restart: unless-stopped
    ports:
      - 8080:8080
      - 8443:8443
    volumes:
      - /home/obsidian/vaults:/vaults
      - /home/obsidian/config:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Los_Angeles
      - DOCKER_MODS=linuxserver/mods:universal-git
      - CUSTOM_PORT=&quot;8080&quot;
      - CUSTOM_HTTPS_PORT=&quot;8443&quot; 
      - CUSTOM_USER=&quot;&quot;
      - PASSWORD=&quot;&quot;
      - SUBFOLDER=&quot;&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Enabling GIT for the obsidian-git plugin&lt;/h2&gt; 
&lt;p&gt;This container uses the base images from linuxserver.io. This means you can the linuxserver.io mods. To add support for git add the &lt;code&gt;DOCKER_MODS&lt;/code&gt; environment variable like so &lt;code&gt;DOCKER_MODS=linuxserver/mods:universal-git&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Docker CLI example&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-PowerShell&quot;&gt;docker run -d `
  -v D:/ob/vaults:/vaults `
  -v D:/ob/config:/config `
  -p 8080:8080 `
  -e DOCKER_MODS=linuxserver/mods:universal-git `
  ghcr.io/sytone/obsidian-remote:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Reloading Obsidan in the Browser&lt;/h2&gt; 
&lt;p&gt;If you make changes to plugins or do updates that need to have obsidian restarted, instead of having to stop and start the docker container you can just close the Obsidian UI and right click to show the menus and reopen it. Here is a short clip showing how to do it.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/sytone/obsidian-remote/main/assets/ReloadExample.gif&quot; alt=&quot;Reloading Obsidian in the Browser&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Setting PUID and PGID&lt;/h2&gt; 
&lt;p&gt;To set PUID and PGID use the follow environment variables on the command line, by default the IDs are 911/911&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-PowerShell&quot;&gt;docker run --rm -it `
  -v D:/ob/vaults:/vaults `
  -v D:/ob/config:/config `
  -e PUID=1000 `
  -e PGID=1000 `
  -p 8080:8080 `
  ghcr.io/sytone/obsidian-remote:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or, if you use docker-compose, add them to the environment: section:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;environment:
  - PUID=1000
  - PGID=1000
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;It is most likely that you will use the id of yourself, which can be obtained by running the command below. The two values you will be interested in are the uid and gid.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;id $user
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Adding missing fonts&lt;/h2&gt; 
&lt;p&gt;Thanks to @aaron-jang for this example.&lt;/p&gt; 
&lt;p&gt;Download the font of the language that you want to use in Obsidian and add it to the volume as shown below.&lt;/p&gt; 
&lt;h3&gt;Map font file using Docker CLI&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-PowerShell&quot;&gt;  -v {downloaded font directory}:/usr/share/fonts/truetype/{font name}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Map font file using Docker Compose&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-PowerShell&quot;&gt;    volumes:
      - {downloaded font directory}:/usr/share/fonts/truetype/{font name}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Hosting behind a reverse proxy&lt;/h2&gt; 
&lt;p&gt;If you wish to do that &lt;strong&gt;please make sure you are securing it in some way!&lt;/strong&gt;. You also need to ensure &lt;strong&gt;websocket&lt;/strong&gt; support is enabled.&lt;/p&gt; 
&lt;h3&gt;Example nginx configuration&lt;/h3&gt; 
&lt;p&gt;This is an example, I recommend a SSL based proxy and some sort of authentication.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;server {
  set $forward_scheme http;
  set $server         &quot;10.10.10.10&quot;;
  set $port           8080;

  listen 80;
  server_name ob.mycooldomain.com;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection $http_connection;
  proxy_http_version 1.1;
  access_log /data/logs/ob_access.log proxy;
  error_log /data/logs/ob_error.log warn;
  location / {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_http_version 1.1;
    # Proxy!
    add_header       X-Served-By $host;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Scheme $scheme;
    proxy_set_header X-Forwarded-Proto  $scheme;
    proxy_set_header X-Forwarded-For    $remote_addr;
    proxy_set_header X-Real-IP          $remote_addr;
    proxy_pass       $forward_scheme://$server:$port$request_uri;
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Hosting behind Nginx Proxy Manager (NPM)&lt;/h2&gt; 
&lt;p&gt;Thanks to @fahrenhe1t for this example.&lt;/p&gt; 
&lt;p&gt;If you install obsidian-remote in Docker, you can proxy it through &lt;a href=&quot;https://nginxproxymanager.com/&quot;&gt;Nginx Proxy Manager&lt;/a&gt; (NPM - running on the same Docker instance), and use an access list to provide user authentication. The obsidian-remote container would have to be on the same network as Nginx Proxy Manager. If you don&#39;t expose the IP external to the container, authentication would be forced through NPM:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;services:
  obsidian:
    image: &#39;ghcr.io/sytone/obsidian-remote:latest&#39;
    container_name: obsidian-remote
    restart: unless-stopped
    ports:
      - 8080 #only exposes port internally to the container
    volumes:
      - /home/obsidian/vaults:/vaults
      - /home/obsidian/config:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Los_Angeles
      - DOCKER_MODS=linuxserver/mods:universal-git
networks:
  default:
    name: &amp;lt;your nginx proxy manager network&amp;gt;
    external: true
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Create a proxy host in NPM pointing to the &quot;obsidian-remote:8080&quot; container, choose your domain name, use a LetsEncrypt SSL certificate, enable WebSockets. This video talks about it: &lt;a href=&quot;https://www.youtube.com/watch?v=G9voYZejH48&quot;&gt;Nginx Proxy Manager - ACCESS LIST protection for internal services&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Updating Obsidian&lt;/h2&gt; 
&lt;p&gt;By default obsidian will update itself in the container. If you recreate the container you will have to do the update again. This repo will be updated periodically to keep up with the latest version of Obsidian.&lt;/p&gt; 
&lt;h2&gt;Building locally&lt;/h2&gt; 
&lt;p&gt;To build and use it locally run the following commands:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-PowerShell&quot;&gt;docker build --pull --rm `
  -f &quot;Dockerfile&quot; `
  -t obsidian-remote:latest `
  &quot;.&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To run the localy build image:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-PowerShell&quot;&gt;docker run --rm -it `
  -v D:/ob/vaults:/vaults `
  -v D:/ob/config:/config `
  -p 8080:8080 `
  obsidian-remote:latest bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Copy/Paste From External Source&lt;/h2&gt; 
&lt;p&gt;Click on the circle to the left side of your browser window. In there you will find a textbox for updating the remote clipboard or copying from it.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/1399443/202805847-a87e2c7c-a5c6-4dea-bbae-4b25b4b5866a.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/089d39c59ca1aa57f257472e3d83921452bd17ab51885a0bb46f158e5df9853a/sytone/obsidian-remote" medium="image" />
      
    </item>
    
  </channel>
</rss>
