{"owner":"lowlighter","repo":"metrics","hasSkills":true,"totalSkillsCount":51,"totalTokensCount":96609,"categories":["plugin-manifest"],"hasMcp":false,"mcpConfig":null,"found":["source/plugins/README.md","source/plugins/achievements/README.md","source/plugins/activity/README.md","source/plugins/anilist/README.md","source/plugins/base/README.md","source/plugins/calendar/README.md","source/plugins/code/README.md","source/plugins/community/16personalities/README.md","source/plugins/community/README.md","source/plugins/community/chess/README.md","source/plugins/community/crypto/README.md","source/plugins/community/fortune/README.md","source/plugins/community/nightscout/README.md","source/plugins/community/poopmap/README.md","source/plugins/community/screenshot/README.md","source/plugins/community/splatoon/README.md","source/plugins/community/stock/README.md","source/plugins/contributors/README.md","source/plugins/core/README.md","source/plugins/discussions/README.md","source/plugins/followup/README.md","source/plugins/gists/README.md","source/plugins/habits/README.md","source/plugins/introduction/README.md","source/plugins/isocalendar/README.md","source/plugins/languages/README.md","source/plugins/leetcode/README.md","source/plugins/licenses/README.md","source/plugins/lines/README.md","source/plugins/music/README.md","source/plugins/notable/README.md","source/plugins/pagespeed/README.md","source/plugins/people/README.md","source/plugins/posts/README.md","source/plugins/projects/README.md","source/plugins/reactions/README.md","source/plugins/repositories/README.md","source/plugins/rss/README.md","source/plugins/skyline/README.md","source/plugins/sponsors/README.md","source/plugins/sponsorships/README.md","source/plugins/stackoverflow/README.md","source/plugins/stargazers/README.md","source/plugins/starlists/README.md","source/plugins/stars/README.md","source/plugins/steam/README.md","source/plugins/support/README.md","source/plugins/topics/README.md","source/plugins/traffic/README.md","source/plugins/tweets/README.md","source/plugins/wakatime/README.md"],"skills":{"source/plugins/README.md":"## 🧩 Plugins\n\nPlugins provide additional content and lets you customize rendered metrics.\n\n**📦 Maintained by core team**\n\n* **Core plugins**\n  * [🗃️ Base content <sub>`base`</sub>](/source/plugins/base/README.md)\n  * [🧱 Core <sub>`core`</sub>](/source/plugins/core/README.md)\n* **GitHub plugins**\n  * [🏆 Achievements <sub>`achievements`</sub>](/source/plugins/achievements/README.md)\n  * [📰 Recent activity <sub>`activity`</sub>](/source/plugins/activity/README.md)\n  * [📆 Commit calendar <sub>`calendar`</sub>](/source/plugins/calendar/README.md)\n  * [♐ Random code snippet <sub>`code`</sub>](/source/plugins/code/README.md)\n  * [🏅 Repository contributors <sub>`contributors`</sub>](/source/plugins/contributors/README.md)\n  * [💬 Discussions <sub>`discussions`</sub>](/source/plugins/discussions/README.md)\n  * [🎟️ Follow-up of issues and pull requests <sub>`followup`</sub>](/source/plugins/followup/README.md)\n  * [🎫 Gists <sub>`gists`</sub>](/source/plugins/gists/README.md)\n  * [💡 Coding habits and activity <sub>`habits`</sub>](/source/plugins/habits/README.md)\n  * [🙋 Introduction <sub>`introduction`</sub>](/source/plugins/introduction/README.md)\n  * [📅 Isometric commit calendar <sub>`isocalendar`</sub>](/source/plugins/isocalendar/README.md)\n  * [🈷️ Languages activity <sub>`languages`</sub>](/source/plugins/languages/README.md)\n  * [📜 Repository licenses <sub>`licenses`</sub>](/source/plugins/licenses/README.md)\n  * [👨‍💻 Lines of code changed <sub>`lines`</sub>](/source/plugins/lines/README.md)\n  * [🎩 Notable contributions <sub>`notable`</sub>](/source/plugins/notable/README.md)\n  * [🧑‍🤝‍🧑 People <sub>`people`</sub>](/source/plugins/people/README.md)\n  * [🗂️ GitHub projects <sub>`projects`</sub>](/source/plugins/projects/README.md)\n  * [🎭 Comment reactions <sub>`reactions`</sub>](/source/plugins/reactions/README.md)\n  * [📓 Featured repositories <sub>`repositories`</sub>](/source/plugins/repositories/README.md)\n  * [🌇 GitHub Skyline <sub>`skyline`</sub>](/source/plugins/skyline/README.md)\n  * [💕 GitHub Sponsors <sub>`sponsors`</sub>](/source/plugins/sponsors/README.md)\n  * [💝 GitHub Sponsorships <sub>`sponsorships`</sub>](/source/plugins/sponsorships/README.md)\n  * [✨ Stargazers <sub>`stargazers`</sub>](/source/plugins/stargazers/README.md)\n  * [💫 Star lists <sub>`starlists`</sub>](/source/plugins/starlists/README.md)\n  * [🌟 Recently starred repositories <sub>`stars`</sub>](/source/plugins/stars/README.md)\n  * [💭 GitHub Community Support <sub>`support`</sub>](/source/plugins/support/README.md) <sub>`⚠️ deprecated`</sub>\n  * [📌 Starred topics <sub>`topics`</sub>](/source/plugins/topics/README.md)\n  * [🧮 Repositories traffic <sub>`traffic`</sub>](/source/plugins/traffic/README.md)\n* **Social plugins**\n  * [🌸 Anilist watch list and reading list <sub>`anilist`</sub>](/source/plugins/anilist/README.md)\n  * [🗳️ Leetcode <sub>`leetcode`</sub>](/source/plugins/leetcode/README.md)\n  * [🎼 Music activity and suggestions <sub>`music`</sub>](/source/plugins/music/README.md)\n  * [⏱️ Google PageSpeed <sub>`pagespeed`</sub>](/source/plugins/pagespeed/README.md)\n  * [✒️ Recent posts <sub>`posts`</sub>](/source/plugins/posts/README.md)\n  * [🗼 Rss feed <sub>`rss`</sub>](/source/plugins/rss/README.md)\n  * [🗨️ Stack Overflow <sub>`stackoverflow`</sub>](/source/plugins/stackoverflow/README.md)\n  * [🕹️ Steam <sub>`steam`</sub>](/source/plugins/steam/README.md)\n  * [🐤 Latest tweets <sub>`tweets`</sub>](/source/plugins/tweets/README.md) <sub>`⚠️ deprecated`</sub>\n  * [⏰ WakaTime <sub>`wakatime`</sub>](/source/plugins/wakatime/README.md)\n\n**🎲 Maintained by community**\n* **[Community plugins](/source/plugins/community/README.md)**\n  * [🧠 16personalities <sub>`16personalities`</sub>](/source/plugins/community/16personalities/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [♟️ Chess <sub>`chess`</sub>](/source/plugins/community/chess/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [🪙 Crypto <sub>`crypto`</sub>](/source/plugins/community/crypto/README.md) by [@dajneem23](https://github.com/dajneem23)\n  * [🥠 Fortune <sub>`fortune`</sub>](/source/plugins/community/fortune/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [💉 Nightscout <sub>`nightscout`</sub>](/source/plugins/community/nightscout/README.md) by [@legoandmars](https://github.com/legoandmars)\n  * [💩 PoopMap plugin <sub>`poopmap`</sub>](/source/plugins/community/poopmap/README.md) by [@matievisthekat](https://github.com/matievisthekat)\n  * [📸 Website screenshot <sub>`screenshot`</sub>](/source/plugins/community/screenshot/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [🦑 Splatoon <sub>`splatoon`</sub>](/source/plugins/community/splatoon/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [💹 Stock prices <sub>`stock`</sub>](/source/plugins/community/stock/README.md) by [@lowlighter](https://github.com/lowlighter)\n\n","source/plugins/achievements/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🏆 Achievements</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays several highlights about what an account has achieved on GitHub.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Compact display</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.achievements.compact.svg\" alt=\"\"></img></details>\n      <details><summary>Detailed display</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.achievements.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements</code></h4></td>\n    <td rowspan=\"2\"><p>Enable achievements plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Rank threshold filter</p>\n<p>Use <code>X</code> to display achievements not yet unlocked</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> C<br>\n<b>allowed values:</b><ul><li>S</li><li>A</li><li>B</li><li>C</li><li>X</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_secrets</code></h4></td>\n    <td rowspan=\"2\"><p>Secrets achievements</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_display</code></h4></td>\n    <td rowspan=\"2\"><p>Display style</p>\n<ul>\n<li><code>detailed</code>: display icon, name, description and ranking</li>\n<li><code>compact</code>: display icon, name and value</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> detailed<br>\n<b>allowed values:</b><ul><li>detailed</li><li>compact</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored achievements</p>\n<p>Use achievements names without their rank adjective (i.e. without &quot;great&quot;, &quot;super&quot; or &quot;master&quot;)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_only</code></h4></td>\n    <td rowspan=\"2\"><p>Showcased achievements</p>\n<p>Use achievements names without their rank adjective (i.e. without &quot;great&quot;, &quot;super&quot; or &quot;master&quot;)</p>\n<p>This option is equivalent to <a href=\"/source/plugins/achievements/README.md#plugin_achievements_ignored\"><code>plugin_achievements_ignored</code></a> with all existing achievements except the ones listed in this option</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Detailed display\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.achievements.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_achievements: yes\n  plugin_achievements_only: sponsor, maintainer, octonaut\n\n```\n```yaml\nname: Compact display\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.achievements.compact.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_achievements: yes\n  plugin_achievements_only: >-\n    polyglot, stargazer, sponsor, deployer, member, maintainer, developer,\n    scripter, packager, explorer, infographile, manager\n  plugin_achievements_display: compact\n  plugin_achievements_threshold: X\n\n```\n<!--/examples-->","source/plugins/activity/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📰 Recent activity</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays recent activity on GitHub.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.activity.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity</code></h4></td>\n    <td rowspan=\"2\"><p>Enable activity plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_load</code></h4></td>\n    <td rowspan=\"2\"><p>Events to load</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(100 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 300<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_days</code></h4></td>\n    <td rowspan=\"2\"><p>Events maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 365)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 14<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_visibility</code></h4></td>\n    <td rowspan=\"2\"><p>Events visibility</p>\n<p>Can be used to toggle private activity visibility when using a token with <code>repo</code> scope</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> all<br>\n<b>allowed values:</b><ul><li>public</li><li>all</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_timestamps</code></h4></td>\n    <td rowspan=\"2\"><p>Events timestamps</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored users</p>\n<p>Can be used to ignore bots activity</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>users_ignored</code><br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_filter</code></h4></td>\n    <td rowspan=\"2\"><p>Events types</p>\n<p>These are fetched from <a href=\"https://docs.github.com/en/free-pro-team@latest/developers/webhooks-and-events/github-event-types\">GitHub events API</a> and the following types are currently supported:</p>\n<ul>\n<li><code>push</code>: Push of commits</li>\n<li><code>issue</code>: Opening/Reopening/Closing of issues</li>\n<li><code>pr</code>: Opening/Closing of pull requests</li>\n<li><code>ref/create</code>: Creation of git tags or git branches</li>\n<li><code>ref/delete</code>: Deletion of git tags or git branches</li>\n<li><code>release</code>: Publication of new releases</li>\n<li><code>review</code>: Review of pull requests</li>\n<li><code>comment</code>: Comments on commits, issues and pull requests</li>\n<li><code>wiki</code>: Changes of wiki pages</li>\n<li><code>fork</code>: Forking of repositories</li>\n<li><code>star</code>: Starring of repositories</li>\n<li><code>public</code>: Repositories made public</li>\n<li><code>member</code>: Addition of new collaborator in repository</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> all<br>\n<b>allowed values:</b><ul><li>all</li><li>comment</li><li>ref/create</li><li>ref/delete</li><li>release</li><li>push</li><li>issue</li><li>pr</li><li>review</li><li>wiki</li><li>fork</li><li>star</li><li>member</li><li>public</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recent activity\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.activity.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_activity: yes\n  plugin_activity_limit: 5\n  plugin_activity_days: 0\n  plugin_activity_filter: issue, pr, release, fork, review, ref/create\n\n```\n<!--/examples-->\n","source/plugins/anilist/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🌸 Anilist watch list and reading list</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays favorites animes, mangas and characters from a <a href=\"https://anilist.co\">AniList</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://anilist.co\">AniList</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>For anime watchers</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.anilist.svg\" alt=\"\"></img></details>\n      <details><summary>For manga readers</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.anilist.manga.svg\" alt=\"\"></img></details>\n      <details open><summary>For waifus simp</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.anilist.characters.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist</code></h4></td>\n    <td rowspan=\"2\"><p>Enable aniList plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_user</code></h4></td>\n    <td rowspan=\"2\"><p>AniList login</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_medias</code></h4></td>\n    <td rowspan=\"2\"><p>Medias types</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> anime, manga<br>\n<b>allowed values:</b><ul><li>anime</li><li>manga</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>favorites</code> will display favorites from <code>plugin_anilist_medias</code></li>\n<li><code>watching</code> will display animes currently in watching list</li>\n<li><code>reading</code> will display manga currently in reading list</li>\n<li><code>characters</code> will display liked characters</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> favorites<br>\n<b>allowed values:</b><ul><li>favorites</li><li>watching</li><li>reading</li><li>characters</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (medias)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_limit_characters</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (characters)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 22<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_shuffle</code></h4></td>\n    <td rowspan=\"2\"><p>Shuffle data</p>\n<p>Can be used to create varied outputs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Favorites anime and currently watching\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.anilist.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_anilist: yes\n  plugin_anilist_medias: anime\n  plugin_anilist_sections: favorites, watching\n  plugin_anilist_limit: 1\n\n```\n```yaml\nname: Favorites manga and currently reading\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.anilist.manga.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_anilist: yes\n  plugin_anilist_medias: manga\n  plugin_anilist_sections: favorites, reading\n  plugin_anilist_limit: 1\n\n```\n```yaml\nname: Favorites characters\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.anilist.characters.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_anilist: yes\n  plugin_anilist_sections: characters\n  plugin_anilist_limit_characters: 22\n\n```\n<!--/examples-->\n","source/plugins/base/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗃️ Base content</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n<td colspan=\"2\"><table><tr>\n<td align=\"center\">\n<img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.classic.svg\" alt=\"\"></img>\n</td>\n<td align=\"center\">\n<img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.organization.svg\" alt=\"\"></img>\n</td>\n</tr></table></td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base</code></h4></td>\n    <td rowspan=\"2\"><p>Base content</p>\n<p>The following sections are supported:</p>\n<ul>\n<li><code>header</code>, which usually contains username, two-weeks commits calendars and a few additional data</li>\n<li><code>activity</code>, which contains recent activity (commits, pull requests, issues, etc.)</li>\n<li><code>community</code>, which contains community stats (following, sponsors, organizations, etc.)</li>\n<li><code>repositories</code>, which contains repository stats (license, forks, stars, etc.)</li>\n<li><code>metadata</code>, which contains information about generated metrics</li>\n</ul>\n<p>These are all enabled by default, but it is possible to explicitly opt out from them.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> header, activity, community, repositories, metadata<br>\n<b>allowed values:</b><ul><li>header</li><li>activity</li><li>community</li><li>repositories</li><li>metadata</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode</p>\n<p>Enabling this will consume additional API queries to fetch more data.\nThis currently improves the accuracy of the following statistics:</p>\n<ul>\n<li>total commits</li>\n<li>total issues</li>\n<li>total pull requests</li>\n<li>total pull requests reviews</li>\n<li>total repositories contributed to</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base_hireable</code></h4></td>\n    <td rowspan=\"2\"><p>Show <code>Available for hire!</code> in header section</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base_skip</code></h4></td>\n    <td rowspan=\"2\"><p>Skip base content</p>\n<blockquote>\n<p>⚠️ Any plugin that relies on base content data may break!\nOnly use this option when using a plugin that can be configured with <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Fetched repositories</p>\n<p>A higher value result in more accurate metrics but can hit GitHub API rate-limit more easily (especially with a lot of plugins enabled)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_batch</code></h4></td>\n    <td rowspan=\"2\"><p>Fetched repositories per query</p>\n<p>If you receive <code>Something went wrong while executing your query</code> (which is usually caused by API timeouts), lowering this value may help.\nThis setting may not be supported by all plugins.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_forks</code></h4></td>\n    <td rowspan=\"2\"><p>Include forks</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_affiliations</code></h4></td>\n    <td rowspan=\"2\"><p>Repositories affiliations</p>\n<ul>\n<li><code>owner</code>: owned repositories</li>\n<li><code>collaborator</code>: repositories with push access</li>\n<li><code>organization_member</code>: repositories from an organization where user is a member</li>\n</ul>\n<p>Some plugin outputs may be affected by this setting too.</p>\n<p>Set to <code>&quot;&quot;</code> to disable and fetch all repositories related to given account.\nBroad affiliations will result in less representative metrics.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> owner<br>\n<b>allowed values:</b><ul><li>owner</li><li>collaborator</li><li>organization_member</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Default skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>users_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Default ignored users</p>\n<p>Note that emails are only supported in commits-related elements.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> github-actions[bot], dependabot[bot], dependabot-preview[bot], actions-user, action@github.com<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>commits_authoring</code></h4></td>\n    <td rowspan=\"2\"><p>Identifiers that has been used for authoring commits</p>\n<p>Specify names, surnames, username, email addresses that has been used in the past that can be used to detect commits ownerships in some plugins</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Default metrics\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.base.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: header, activity, community, repositories, metadata\n\n```\n<!--/examples-->\n","source/plugins/calendar/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📆 Commit calendar</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display commit calendar across several years.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details><summary>Current year</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.calendar.svg\" alt=\"\"></img></details>\n      <details open><summary>Full history</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.calendar.full.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_calendar</code></h4></td>\n    <td rowspan=\"2\"><p>Enable calendar plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_calendar_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Years to display</p>\n<p>This option has different behaviours depending on its value:</p>\n<ul>\n<li><code>n &gt; 0</code> will display the last <code>n</code> years, relative to current year</li>\n<li><code>n == 0</code> will display all years starting from GitHub account registration date</li>\n<li><code>n &lt; 0</code> will display all years plus <code>n</code> additional years, relative to GitHub account registration date<ul>\n<li>Use this when there are commits pushed before GitHub registration</li>\n</ul>\n</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Current year calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.calendar.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_calendar: yes\n\n```\n```yaml\nname: Full history calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.calendar.full.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_calendar: yes\n  plugin_calendar_limit: 0\n\n```\n<!--/examples-->\n","source/plugins/code/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>♐ Random code snippet</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays a random code snippet from recent activity history.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ When improperly configured, this plugin could display private code.\nIf you work with sensitive data or company code, it is advised to keep this plugin disabled.\nUse at your own risk, <em>metrics</em> and its authors cannot be held responsible for any resulting code leaks.</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.code.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code</code></h4></td>\n    <td rowspan=\"2\"><p>Enable code plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_lines</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (lines per code snippets)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 128)</i>\n<br>\n<b>default:</b> 12<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_load</code></h4></td>\n    <td rowspan=\"2\"><p>Events to load</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(100 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 400<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_days</code></h4></td>\n    <td rowspan=\"2\"><p>Events maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 365)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 3<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_visibility</code></h4></td>\n    <td rowspan=\"2\"><p>Events visibility</p>\n<p>Can be used to toggle private activity visibility when using a token with <code>repo</code> scope</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> public<br>\n<b>allowed values:</b><ul><li>public</li><li>all</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Showcased languages</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: JavaScript or TypeScript snippet of the day\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.code.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_code: yes\n  plugin_code_languages: javascript, typescript\n  plugin_code_load: 400\n\n```\n<!--/examples-->\n","source/plugins/community/16personalities/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧠 16personalities</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays personality profile from a <a href=\"https://www.16personalities.com/profile\">16personalities profile</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://www.16personalities.com\">16personalities</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.16personalities.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities</code></h4></td>\n    <td rowspan=\"2\"><p>Enable 16personalities plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities_url</code></h4></td>\n    <td rowspan=\"2\"><p>Profile URL</p>\n<p>This can be obtained after doing the <a href=\"https://www.16personalities.com/free-personality-test\">test on 16personalities</a> and registering an email.\nLogin with the generated password received in your mailbox and copy the link that is displayed when sharing the profile.</p>\n<img src=\"/.github/readme/imgs/plugin_16personalities_profile.png\" width=\"800\" />\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>personality</code> will display personality type</li>\n<li><code>profile</code> will display role and strategy</li>\n<li><code>traits</code> will display mind, energy, nature, tactics and identity traits</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> personality<br>\n<b>allowed values:</b><ul><li>personality</li><li>profile</li><li>traits</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities_scores</code></h4></td>\n    <td rowspan=\"2\"><p>Display traits scores</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: MBTI Personality profile\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.16personalities.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_16personalities: yes\n  plugin_16personalities_url: ${{ secrets.SIXTEEN_PERSONALITIES_URL }}\n  plugin_16personalities_sections: personality, traits\n  plugin_16personalities_scores: no\n\n```\n<!--/examples-->\n","source/plugins/community/README.md":"<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎲 Community plugins</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\">Additional plugins maintained by community for even more features!</td></tr>\n  <tr>\n    <th><a href=\"/source/plugins/community/16personalities/README.md\">🧠 16personalities</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n    <th><a href=\"/source/plugins/community/chess/README.md\">♟️ Chess</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.16personalities.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.chess.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/crypto/README.md\">🪙 Crypto</a><br><sup>by <a href=\"https://github.com/dajneem23\">@dajneem23</a></sup></th>\n    <th><a href=\"/source/plugins/community/fortune/README.md\">🥠 Fortune</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://via.placeholder.com/468x60?text=No%20preview%20available\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.fortune.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/nightscout/README.md\">💉 Nightscout</a><br><sup>by <a href=\"https://github.com/legoandmars\">@legoandmars</a></sup></th>\n    <th><a href=\"/source/plugins/community/poopmap/README.md\">💩 PoopMap plugin</a><br><sup>by <a href=\"https://github.com/matievisthekat\">@matievisthekat</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/legoandmars/legoandmars/blob/master/metrics.plugin.nightscout.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/matievisthekat/matievisthekat/blob/master/metrics.plugin.poopmap.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/screenshot/README.md\">📸 Website screenshot</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n    <th><a href=\"/source/plugins/community/splatoon/README.md\">🦑 Splatoon</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.screenshot.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.splatoon.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/stock/README.md\">💹 Stock prices</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n    <th></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stock.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n<td align=\"center\"><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n</table>\n\n## 📪 Creating community plugins\n\nPlugins creation requires you to be comfortable with JavaScript, HTML, CSS and [EJS](https://github.com/mde/ejs).\n\n### 💬 Before creating a new plugin\n\nBe sure to read [contribution guide](/CONTRIBUTING.md) and [architecture](/ARCHITECTURE.md) first.\n\n> ℹ️ *metrics* maintainers have no obligation towards community plugins support and may redirect any help, feature or fix requests from other users to you. Of course you are not bound to work on it, but it would be great if you plan to merge a plugin in the main repository\n\nPlease respect the following guidelines:\n\n- A plugin should be independent and should not rely on other plugins\n  - [🧱 core](/source/plugins/core/README.md) and [🗃️ base](/source/plugins/base/README.md) output can be reused though\n- A plugin should never edit its original arguments, as it is shared amongst other plugins and would create unattended side effects\n- Use `imports.metadata.plugins.{plugin-name}.inputs()` to automatically type check and default user inputs through defined `metadata.yml`\n- Plugin options should respect the \"lexical field\" of existing option to keep consistency\n- Plugin errors should be handled gracefully by partials with error message\n- New dependencies should be avoided, consider using existing `imports`\n- Spawning sub-process should be avoided, unless absolute necessity\n  - Use `imports.which()` to detect whether a command is available\n  - Use `imports.run()` to run a command\n    - Pass `{prefixed: true}` to wrap automatically command with [WSL](https://docs.microsoft.com/windows/wsl/about) on Windows\n  - It is required to work on Linux Ubuntu (as the GitHub action run on it)\n\n> 💡 While the following guide intend to explain the creation process of new plugin, it may also be a good idea to see what existing plugins looks like and see if you want to embark on the adventure!\n\n### 💬 Quick-start\n\nTo create a new plugin, clone and setup this repository first:\n```shell\ngit clone https://github.com/lowlighter/metrics.git\ncd metrics/\nnpm install\n```\n\nFind a cool name and an [unused emoji](https://emojipedia.org) for your new plugin and run the following:\n```shell\nnpm run quickstart plugin <plugin_name>\n```\n\n> ⚠️ Community plugins cannot have the same name as official plugins. *metrics* maintainers may also reserve a plugin name for future usage and may ask you to rename it in case of conflicts\n\nIt will create a new directory in `/source/plugins/community` with the following file structure:\n* `/source/plugins/community/{plugin-name}`\n  * `README.md`\n  * `metadata.yml`\n  * `examples.mjs`\n  * `index.mjs`\n\nPlugins are auto-loaded based on their folder existence, so there's no need to register them somewhere.\n\n### 💬 Filling `metadata.yml`\n\n`metadata.yml` is a required file which describes supported account types, output formats, scopes, etc.\n\nThe default file looks like below:\n```yaml\nname: \"🧩 Plugin name\"\ncategory: community\ndescription: Short description\nexamples:\n  default: https://via.placeholder.com/468x60?text=No%20preview%20available\nauthors:\n  - octocat\nsupports:\n  - user\n  - organization\n  - repository\nscopes: []\ninputs:\n\n  plugin_{name}:\n    description: Enable {name} plugin\n    type: boolean\n    default: no\n```\n\n> 💡 It is important to correctly define `metadata.yml` because *metrics* will use its content for various usage\n\n[`🧱 core`](/source/plugins/core/README.md) plugin (which is always called) will automatically verify user inputs against `supports` and `inputs` values and throw an error in case of incompatibility.\n\n`name`, `description`, `scopes`, `examples` are used to auto-generate documentation in the `README.md`. For community plugins, `examples` should be set with auto-generated examples of your own profile.\n\n`authors` should contain your GitHub username\n\n`category` should be set to `community`.\n\nBecause of GitHub Actions original limitations, only strings, numbers and boolean were actually supported by `action.yml`. *metrics* implemented its own `inputs` validator to circumvent this. It should be pretty simple to use.\n\n*Example: boolean type, defaults to `false`*\n```yml\n  plugin_{name}_{option}:\n    description: Boolean type\n    type: boolean\n    default: no\n```\n\n```yml\n  plugin_{name}_{option}:\n    description: String type\n    type: string\n    default: .user.login\n```\n\n> 💡 `.user.login`, `.user.twitter` and `.user.website` are special default values that will be respectively replaced by user's login, Twitter username and attached website. Note that these are not available if `token: NOT_NEEDED` is set by user\n\n*Example: string type, defaults to `foo` with `foo` or `bar` as allowed values*\n```yml\n  plugin_{name}_{option}:\n    description: Select type\n    type: string\n    values:\n      - foo\n      - bar\n    default: foo\n```\n\n> 💡 `values` restricts what can be passed by user\n\n*Example: number type, defaults to `1` and expected to be between `0` and `100`*\n```yml\n  plugin_{name}_{option}:\n    description: Number type\n    type: number\n    default: 1\n    min: 0\n    max: 100\n```\n\n> 💡 `min` and `max` restricts what can be passed by user. Omit these to respectively remove lower and upper limits.\n\n> 💡 Zero may have a special behaviour (usually to disable limitations), if that's the case add a `zero` attribute (e.g. `zero: disable`) to reference this in documentation\n\n*Example: array type, with comma-separated elements*\n```yml\n  plugin_{name}_{option}:\n    description: Array type\n    type: array\n    format: comma-separated\n    values:\n      - foo\n      - bar\n    default: foo, bar\n```\n\n> 💡 An array can be either `comma-separated` or `space-separated`, and will split user input by mentioned separator. Each value is trimmed and lowercased.\n\n*Example: json type*\n```yml\n  plugin_{name}_{option}:\n    description: JSON type\n    type: json\n    default: |\n      {\n        \"foo\": \"bar\"\n      }\n```\n\n> 💡 JSON types should be avoided when possible, as they're usually kind of unpractical to write within a YAML document\n\nFor complex inputs, pass an `example` that will be displayed as a placeholder on web instances.\n\nWhen calling `imports.metadata.plugins.{plugin-name}.inputs({data, account, q})`, an object with verified user inputs and correct typing will be returned.\n\nAny invalid input will use have the `default` value instead.\n\n> ⚠️ Returned object will use the web syntax for options rather than the action one. It means that `plugin_` prefix is dropped, and all underscores (`_`) are replaced by dots (`.`)\n\n*Example: validating user inputs*\n```javascript\nlet {limit, \"limit.field\":limit_field} = imports.metadata.plugins.myplugin.inputs({data, account, q})\nconsole.assert(limit === true)\n```\n\n### 💬 Filling `index.mjs`\n\nPlugins use [JavaScript modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules).\n\nThe default exported module of `index.mjs` will be auto-loaded when *metrics* start.\n\nBelow is a breakdown of basic `index.mjs` content\n```js\nexport default async function(\n  //Shared inputs\n  {\n    login, //GitHub username\n    q, //Raw user inputs (dot notation without plugin_ prefix, don't use it directly)\n    imports, //Various utilities (axios, puppeteer, fs, etc., see /source/app/metrics/utils.mjs)\n    data, //Raw data from core/base plugin\n    computed, //Computed data from core/base plugin\n    rest, //Rest authenticated GitHub octokit\n    graphql, //Graph QL authenticated GitHub octokit\n    queries, //Autoloaded queries from ./queries\n    account, //Account type (\"user\" or \"organization\")\n  },\n  //Settings and tokens\n  {\n    enabled = false,\n    extras = false,\n  } = {}) {\n    //Plugin execution\n    try {\n      //Check if plugin is enabled and requirements are met\n      if ((!q.my_plugin)||(imports.metadata.plugins.my_plugin.enabled(enabled, {extras})))\n        return null\n\n      //Automatically validate user inputs\n      //An error will be thrown if `account` type is not supported\n      //Inputs will have correct typing from `metadata.yml` and unset or invalid options will be set to default\n      let {option} = imports.metadata.plugins.my_plugin.inputs({data, account, q})\n\n      //Automatically template query from /source/plugins/myplugin/queries/myquery.graph ql\n      const {[account]:stuff} = await graphql(queries.myplugin.myquery({login, account, option}))\n\n      //Results\n      return {stuff}\n    }\n    //Handle errors\n    catch (error) {\n      throw imports.format.error(error)\n    }\n}\n```\n\n> ⚠️ Remember, a plugin should never edit its original arguments, as it is shared amongst other plugins and would create unattended side effects\n\n### 💬 Creating partials\n\nJust create a new `.ejs` file in `partials` folder from templates you wish to support, and reference it into their `partials/_.json`.\n\nPlugin partials should be able to handle gracefully their own state and errors.\n\nBelow is a minimal snippet of a partial:\n```ejs\n<% if (plugins.{plugin_name}) { %>\n  <% if (plugins.{plugin_name}.error) { %>\n    <%= plugins.{plugin_name}.error.message %>\n  <% } else { %>\n    <%# content %>\n  <% } %>\n<% } %>\n```\n\nPartials should have the match the same name as plugin handles, as they're used to display plugin compatibility in auto-generated header.\n\n[EJS](https://github.com/mde/ejs) framework is used to template content through templating tags (``).\n\n### 💬 Filling `README.md`\n\n`README.md` is used as documentation.\n\nMost of it will is auto-generated by `metadata.yml` and `examples.yml` content, so usually it is not required to manually edit it.\n\nThe default content looks like below:\n```markdown\n<ǃ--header-->\n<ǃ--/header-->\n\n## ➡️ Available options\n\n<ǃ--options-->\n<ǃ--/options-->\n\n## ℹ️ Examples workflows\n\n<ǃ--examples-->\n<ǃ--/examples-->\n```\n\n- `<ǃ--header-->` will be replaced by an auto-generated header containing plugin name, supported features and output examples based on `metadata.yml`\n- `<ǃ--options-->` will be replaced by an auto-generated table containing all referenced option from `metadata.yml`\n- `<ǃ--examples-->` will be replaced by workflows from `examples.yml`\n\n> ⚠️ Do not replace these auto-generated placeholder yet! They will be built by the ci workflow and will help making your pull request easier to read\n\nWhen a plugin requires a token, please add a `## 🗝️ Obtaining a {service} token` section after the available options section.\n\nComplex features may also be documented in additional sections after available options section options if required.\n\nTry to respect current format of `README.md` from other plugins and use a neutral and impersonal writing style if possible.\n\n### 💬 Filling `examples.yml`\n\nWorkflow examples from `examples.yml` are used as unit testing and to auto-generate documentation in the `README.md`.\n\nIt uses the same syntax as GitHub action and looks like below:\n```yml\n- name: Test name\n  uses: lowlighter/metrics@latest\n  with:\n    filename: metrics.plugin.{name}.svg\n    token: ${{ secrets.METRICS_TOKEN }}\n    base: \"\"\n    plugin_{name}: yes\n  prod:\n    skip: true\n  test:\n    timeout: 1800000\n    modes:\n      - action\n      - web\n      - placeholder\n```\n\n> 💡 Tests are executed in a mocked environment to avoid causing charges on external services. It may be required to create mock testing files.\n\n`test` is usually not needed and optional but can be set to set a custom timeout (for plugins with a high execution time) and `modes` can be used to restrict which environment should be used.\n\n`prod` should keep `skip: true` as you should use your own render outputs as examples.\n\n### 💬 Testing locally and creating mocked data\n\nThe easiest way to test a new plugin is to setup a web instance locally ([see documentation](.github/readme/partials/documentation/setup/local.md)).\n\nOnce server is started, open a browser and try to generate an output with your new plugin enabled and check if it works as expected:\n```\nhttp://localhost:3000/username?base=0&my-plugin=1\n```\n\n> 💡 You may need to configure your server first by editing `settings.json`. Ensure that:\n> - `token` is correctly set when working with GitHub APIs\n> - `plugins.default` is set to `true` as plugins are disabled by default\n>   - or enable your plugins by manually in `plugins`.`my-plugin`.`enabled`\n> -  `debug` is set to `true` for more verbose output\n\nWhen your plugin is finalized, you may need to create mocked data if it either uses GitHub APIs or any external service.\n\nThey must be created in `tests/mocks/api`:\n- use `github` directory for all related GitHub APIs data\n- use `axios` directory for all external service that you call using `imports.axios`\n\n> 💡 Files from these directories are auto-loaded, so it is just required to create them with faked data.\n\nFinally [/source/app/web/statics/app.placeholder.js](/source/app/web/statics/app.placeholder.js) to add mocked placeholder data to make users using the shared instance able to preview a render locally without any server computation.\n\n### 💬 Submitting a pull request\n\nIf you made it until there, congratulations 🥳!\n\nYou're almost done, review the following checklist before submitting a pull request:\n- [x] I have correctly filled `metadata.yml`\n  - [x] `name` is set with an unused emoji and plugin name\n  - [x] `category` is set to `community`\n  - [x] `examples` contains links towards a rendered output hosted by you\n  - [x] `authors` contains my GitHub username\n  - [x] `supports` list which account type are supported\n  - [x] `scopes` are correctly listed with their associated names on GitHub (leave an empty array if not applicable)\n  - [x] `inputs` are correctly filled\n- [x] I have implemented my plugin\n  - [x] `index.mjs` respects the plugins guidelines\n- [x] I have tested my plugin locally\n  - [x] `tests/mocks` ... have been created\n  - [x] `app.placeholder.js` has been updated for preview from web instances\n  - [x] `examples.yml` contains workflows examples (at least one is required)\n    - [x] `skip: true` has been set for `prod` attribute in each test\n  - [x] `npm run linter` yields no errors\n- [x] I have documented my plugin\n  - [x] `README.md` eventually describes complex setup or options (if applicable)\n- [x] I am ready!\n  - [x] Checkout any generated files (in fact, don't run `npm run build`)\n  - [x] Commit and push your changes (commits are squashed, no need to rebase)\n  - [x] Open a new [pull request](https://github.com/lowlighter/metrics/pulls)\n  - [x] Post a screenshot or a render in the pull request so it can be previewed\n\n> 💡 A pull request **will need** to have passing builds and an example screenshot if you want to get it merged.\n> Maintainers may request changes in some cases\n\n> 🎊 Thanks a lot for your contribution!\n\n","source/plugins/community/chess/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>♟️ Chess</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the last game you played on a supported chess platform.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with any of the supported provider.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_chess_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.chess.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess</code></h4></td>\n    <td rowspan=\"2\"><p>Enable chess plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_token</code></h4></td>\n    <td rowspan=\"2\"><p>Chess platform token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.chess.any</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_user</code></h4></td>\n    <td rowspan=\"2\"><p>Chess platform login</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_platform</code></h4></td>\n    <td rowspan=\"2\"><p>Chess platform</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>lichess.org</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_animation</code></h4></td>\n    <td rowspan=\"2\"><p>Animation settings</p>\n<ul>\n<li><code>size</code> is the size of a single chessboard square in pixels (board will be 8 times larger)</li>\n<li><code>delay</code> is the delay before starting animation (in seconds)</li>\n<li><code>duration</code> is the duration of the animation of a move (in seconds)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"size\": 40,\n  \"delay\": 3,\n  \"duration\": 0.6\n}\n</code></pre></details><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a lichess.org token\n\nCreate a [lichess.org account](https://lichess.org) and select [API access tokens](https://lichess.org/account/oauth/token) to get a token.\n\n![lichess.org token](/.github/readme/imgs/plugin_chess_lichess_token_0.png)\n\nIt is not necessary to add additional scopes:\n\n![lichess.org token](/.github/readme/imgs/plugin_chess_lichess_token_1.png)\n\nCreate token and store it in your secrets:\n\n![lichess.org token](/.github/readme/imgs/plugin_chess_lichess_token_0.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Last chess game from lichess.org\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.chess.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_chess: yes\n  plugin_chess_token: ${{ secrets.CHESS_TOKEN }}\n  plugin_chess_platform: lichess.org\n\n```\n<!--/examples-->\n","source/plugins/community/crypto/README.md":"<!-- Header -->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🪙 Crypto</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\">\n    <p>This plugin generates an SVG image containing crypto metrics from a given address. It uses the CoinGecko API to fetch crypto prices.</p>\n    <p>For more information, check the <a href=\"https://www.coingecko.com/vi/api/documentation\">CoinGecko API documentation</a>.</p>\n  </td></tr>\n  <tr><th>Authors</th><td><a href=\"https://github.com/dajneem23\">@dajneem23</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported Features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td>\n      <ul>\n        <li><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></li>\n        <li><a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></li>\n      </ul>\n    </td>\n  </tr>\n  <tr>\n    <td>\n      <ul>\n        <li><code>👤 Users</code></li>\n        <li><code>👥 Organizations</code></li>\n        <li><code>📓 Repositories</code></li>\n      </ul>\n    </td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_crypto</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://via.placeholder.com/468x60?text=No%20preview%20available\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!-- /Header -->\n\n## ➡️ Available Options\n\n<!-- Options -->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto</code></h4></td>\n    <td rowspan=\"2\"><p>Enable crypto plugin</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>boolean</code><br>Default: <code>no</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_id</code></h4></td>\n    <td rowspan=\"2\"><p>Crypto id (from Coingecko)</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>string</code><br>Default: \"\"<br>Example: bitcoin<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_vs_currency</code></h4></td>\n    <td rowspan=\"2\"><p>The target currency of market data (usd, eur, jpy, etc.)</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>string</code><br>Default: \"usd\"<br>Example: \"usd\"<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_days</code></h4></td>\n    <td rowspan=\"2\"><p>Data up to number of days ago (eg. 1,14,30,max)</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>string</code><br>Default: \"1\"<br>Example: 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_precision</code></h4></td>\n    <td rowspan=\"2\"><p>The number of decimal places to use</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>number</code><br>Default: 2<br>Example: 2<br></td>\n  </tr>\n</table>\n<!-- /Options -->\n\n<!--examples-->\n```yaml\nname: Crypto Metrics\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.crypto.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_crypto: yes\n  plugin_crypto_id: bitcoin\n  plugin_crypto_vs_currency: usd\n  plugin_crypto_days: 1\n  plugin_crypto_precision: 2\n\n```\n<!--/examples-->\n","source/plugins/community/fortune/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🥠 Fortune</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugins displays a random fortune message</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.fortune.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_fortune</code></h4></td>\n    <td rowspan=\"2\"><p>Enable fortune plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Fortune\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.fortune.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_fortune: yes\n\n```\n<!--/examples-->\n","source/plugins/community/nightscout/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💉 Nightscout</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays blood sugar values from a <a href=\"http://nightscout.info\">Nightscout</a> site.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"http://nightscout.info\">Nightscout</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/legoandmars\">@legoandmars</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/legoandmars/legoandmars/blob/master/metrics.plugin.nightscout.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout</code></h4></td>\n    <td rowspan=\"2\"><p>Enable nightscout plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_url</code></h4></td>\n    <td rowspan=\"2\"><p>Nightscout URL</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> https://example.herokuapp.com<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_datapoints</code></h4></td>\n    <td rowspan=\"2\"><p>Number of datapoints shown the graph</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 12<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_lowalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for low blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 80<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_highalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for high blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 180<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_urgentlowalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for urgently low blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 50<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_urgenthighalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for urgently high blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 250<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🌐 Setup a Nightscout instance\n\nThe [nightscout website](http://www.nightscout.info/) details how to self-host a nightscout site.\nCheck out the instructions there.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  plugin_nightscout: yes\n  plugin_nightscout_url: ${{ secrets.NIGHTSCOUT_URL }}\n\n```\n<!--/examples-->\n","source/plugins/community/poopmap/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💩 PoopMap plugin</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays statistics from a <a href=\"https://poopmap.net\">PoopMap</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://poopmap.net\">PoopMap</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/matievisthekat\">@matievisthekat</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_poopmap_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/matievisthekat/matievisthekat/blob/master/metrics.plugin.poopmap.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_poopmap</code></h4></td>\n    <td rowspan=\"2\"><p>Enable poopmap plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_poopmap_token</code></h4></td>\n    <td rowspan=\"2\"><p>PoopMap API token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_poopmap_days</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>default:</b> 7<br>\n<b>allowed values:</b><ul><li>7</li><li>30</li><li>180</li><li>365</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a PoopMap token\n\nInstall PoopMap app ([iOS](https://itunes.apple.com/us/app/poop-map/id1303269455?mt=8)/[Android](https://play.google.com/store/apps/details?id=net.poopmap)) and create an account.\n\nNavigate to your profile in the app\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/45036977/143533812-c2776bcc-1fda-441e-bc96-cf21d4c69ca1.jpg\" width=\"150\" />\n</div>\n\nTap \"Share Profile\" in the top right\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/45036977/143533849-b7e03b4d-2903-4339-bbb7-e1fc0ea9724e.jpg\" width=\"150\" />\n</div>\n\nTap \"Copy to Clipboard\"\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/45036977/143533856-f4a9fc0d-7bde-48c2-b579-e8ee91804d78.jpg\" width=\"150\" />\n</div>\n\nIt should result in something like `Haha, check out the places I've pooped on Poop Map https://api.poopmap.net/map?token=xxxxxxxxxx` copied.\n\nExtract the `token` query parameter from the link and use it in `plugin_poopmap_token`.\nThis token will not expire and it will be able to access only public details.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  plugin_poopmap_token: ${{ secrets.POOPMAP_TOKEN }}\n  plugin_poopmap: yes\n\n```\n<!--/examples-->\n","source/plugins/community/screenshot/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📸 Website screenshot</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays a screenshot from any website.</p>\n<p>It can either show the full page or a portion restricted by a <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors\">CSS selector</a>.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.screenshot.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot</code></h4></td>\n    <td rowspan=\"2\"><p>Enable screenshot plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_title</code></h4></td>\n    <td rowspan=\"2\"><p>Title caption</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> Screenshot<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_url</code></h4></td>\n    <td rowspan=\"2\"><p>Website URL</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_selector</code></h4></td>\n    <td rowspan=\"2\"><p>CSS Selector</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> body<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_mode</code></h4></td>\n    <td rowspan=\"2\"><p>Output mode</p>\n<ul>\n<li><code>image</code>: screenshot of selected element</li>\n<li><code>text</code>: keep <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText\"><code>innerText</code></a> of selected element<ul>\n<li><em>⚠️ Any CSS style applied to text such as font size, weight or color will be removed</em></li>\n</ul>\n</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> image<br>\n<b>allowed values:</b><ul><li>image</li><li>text</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_viewport</code></h4></td>\n    <td rowspan=\"2\"><p>Viewport options</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"width\": 1280,\n  \"height\": 1280\n}\n</code></pre></details><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_wait</code></h4></td>\n    <td rowspan=\"2\"><p>Wait time before taking screenshot (ms)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_background</code></h4></td>\n    <td rowspan=\"2\"><p>Background</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: XKCD of the day\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.screenshot.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_screenshot: yes\n  plugin_screenshot_title: XKCD of the day\n  plugin_screenshot_url: https://xkcd.com\n  plugin_screenshot_selector: \"#comic img\"\n\n```\n<!--/examples-->\n","source/plugins/community/splatoon/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🦑 Splatoon</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays your Splatoon 3 recent matches based on data fetched from Splatnet.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://www.nintendo.com\">Nintendo</a> or <a href=\"https://splatoon.nintendo.com\">Splatoon</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n<p>This specific plugin is licensed under GPL-3.0 rather than MIT to comply with <a href=\"https://github.com/spacemeowx2/s3si.ts\">spacemeowx2/s3si.ts</a> license.</p>\n<p>Note that <em>Nintendo Switch Online</em> web tokens usage are not explicitly allowed by <em>Nintendo</em>, use at your own risk.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_splatoon_token</code> <code>🗝️ plugin_splatoon_statink_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.splatoon.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon</code></h4></td>\n    <td rowspan=\"2\"><p>Enable splatoon plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_token</code></h4></td>\n    <td rowspan=\"2\"><p>Splatnet token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.nintendo.splatnet</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>player</code> for overall player recap</li>\n<li><code>versus</code> for <em>Turf war</em> and <em>Anarchy battle</em> matches</li>\n<li><code>salmon-run</code> for <em>Salmon run next wave</em> matches</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> player, versus, salmon-run<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_versus_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Versus)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 6)</i>\n<br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_salmon_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Salmon run)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 6)</i>\n<br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_statink</code></h4></td>\n    <td rowspan=\"2\"><p>stat.ink integration</p>\n<p>If set, fetched data will also be uploaded to stat.ink\nRequires <a href=\"/source/plugins/community/splatoon/README.md#plugin_splatoon_statink_token\"><code>plugin_splatoon_statink_token</code></a> to be set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.statink</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_statink_token</code></h4></td>\n    <td rowspan=\"2\"><p>stat.ink token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_source</code></h4></td>\n    <td rowspan=\"2\"><p>Source</p>\n<ul>\n<li><code>splatnet</code> will fetch data from Splatnet using <a href=\"https://github.com/spacemeowx2/s3si.ts\">spacemeowx2/s3si.ts</a> tool</li>\n<li><code>local</code> will assume <code>s3si/export</code> directory already exists and is populated (use this when developping new features for this plugin to save network resources and time)</li>\n<li><code>mocks</code> will use <code>s3si/mocks</code> directory (use this when developping new features for this plugin to avoid setting up a NSO token)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> splatnet<br>\n<b>allowed values:</b><ul><li>splatnet</li><li>local</li><li>mocks</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a *Nintendo Switch Online* token\n\nThe helper script is intended to be run by [deno runtime](https://deno.land/). Either [install it locally](https://deno.land/manual/getting_started/installation) or use its [docker image](https://hub.docker.com/r/denoland/deno).\n\nRun the following command in your terminal and follow instructions:\n```bash\ndeno run --allow-run=deno --allow-read=profile.json --allow-write=profile.json --unstable https://raw.githubusercontent.com/lowlighter/metrics/master/source/plugins/community/splatoon/token.ts\n```\n\n![Script](/.github/readme/imgs/plugin_splatoon_script.png)\n\n![Authentication](/.github/readme/imgs/plugin_splatoon_auth.png)\n\n## 🐙 [stat.ink](https://stat.ink) integration\n\nIt is possible to make this plugin automatically export fetched games to [stat.ink](https://stat.ink) by adding the following:\n\n```yaml\nplugin_splatoon_statink: yes\nplugin_splatoon_statink_token: ${{ secrets.SPLATOON_STATINK_TOKEN }}\n```\n\n[stat.ink](https://stat.ink) API key can be found on user profile:\n\n![stat.ink](/.github/readme/imgs/plugin_splatoon_statink.png)\n\n## 👨‍💻 About\n\nData are fetched using [spacemeowx2/s3si.ts](https://github.com/spacemeowx2/s3si.ts) tool (which is itself based on [frozenpandaman/s3s](https://github.com/frozenpandaman/s3s)).\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Splatnet data\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.splatoon.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_splatoon: yes\n  plugin_splatoon_token: ${{ secrets.SPLATOON_TOKEN }}\n\n```\n```yaml\nname: Splatnet data with stat.ink integration\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.splatoon.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_splatoon: yes\n  plugin_splatoon_token: ${{ secrets.SPLATOON_TOKEN }}\n  plugin_splatoon_statink: yes\n  plugin_splatoon_statink_token: ${{ secrets.SPLATOON_STATINK_TOKEN }}\n  extras_css: |\n    h2 { display: none !important; }\n\n```\n<!--/examples-->\n","source/plugins/community/stock/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💹 Stock prices</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the stock market price of a given company.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_stock_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stock.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stock plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.d3</i></li>\n<li><i>metrics.api.yahoo.finance</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_token</code></h4></td>\n    <td rowspan=\"2\"><p>Yahoo Finance token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_symbol</code></h4></td>\n    <td rowspan=\"2\"><p>Company stock symbol</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_duration</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<ul>\n<li><code>1d</code>: Today</li>\n<li><code>5d</code>: 5 days</li>\n<li><code>1mo</code>: 1 month</li>\n<li><code>3mo</code>: 3 months</li>\n<li><code>6mo</code>: 6 months</li>\n<li><code>1y</code>: 1 year</li>\n<li><code>2y</code>: 2 years</li>\n<li><code>5y</code>: 5 years</li>\n<li><code>10y</code>: 10 years</li>\n<li><code>ytd</code>: Year to date</li>\n<li><code>max</code>: All time</li>\n</ul>\n<p>This is relative to current date</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 1d<br>\n<b>allowed values:</b><ul><li>1d</li><li>5d</li><li>1mo</li><li>3mo</li><li>6mo</li><li>1y</li><li>2y</li><li>5y</li><li>10y</li><li>ytd</li><li>max</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_interval</code></h4></td>\n    <td rowspan=\"2\"><p>Time interval between points</p>\n<ul>\n<li><code>1m</code>: 1 minute</li>\n<li><code>2m</code>: 2 minutes</li>\n<li><code>5m</code>: 5 minutes</li>\n<li><code>15m</code>: 15 minutes</li>\n<li><code>60m</code>: 60 minutes</li>\n<li><code>1d</code>: 1 day</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 5m<br>\n<b>allowed values:</b><ul><li>1m</li><li>2m</li><li>5m</li><li>15m</li><li>60m</li><li>1d</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a RapidAPI Yahoo Finance token\n\nCreate a [RapidAPI account](https://rapidapi.com) and subscribe to [Yahoo Finance API](https://rapidapi.com/apidojo/api/yahoo-finance1) to get a token.\n\n![RapidAPI token](/.github/readme/imgs/plugin_stock_token.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Stock prices from Tesla\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stock.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_stock: yes\n  plugin_stock_token: ${{ secrets.STOCK_TOKEN }}\n  plugin_stock_symbol: TSLA\n\n```\n<!--/examples-->\n","source/plugins/contributors/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🏅 Repository contributors</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin display repositories contributors from a commit range along with additional stats.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>By contribution types</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.contributors.categories.svg\" alt=\"\"></img></details>\n      <details><summary>By number of contributions</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.contributors.contributions.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors</code></h4></td>\n    <td rowspan=\"2\"><p>Enable contributors plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_base</code></h4></td>\n    <td rowspan=\"2\"><p>Base reference</p>\n<p>Can be a commit, tag, branch, etc.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_head</code></h4></td>\n    <td rowspan=\"2\"><p>Head reference</p>\n<p>Can be a commit, tag, branch, etc.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> master<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored users</p>\n<p>Can be used to ignore bots activity</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>users_ignored</code><br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_contributions</code></h4></td>\n    <td rowspan=\"2\"><p>Contributions count</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>contributors</code>: all contributors</li>\n<li><code>categories</code>: contributors sorted by contributions categories (must be configured with <a href=\"/source/plugins/contributors/README.md#plugin_contributors_categories\"><code>plugin_contributors_categories</code></a>)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> contributors<br>\n<b>allowed values:</b><ul><li>contributors</li><li>categories</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Contribution categories</p>\n<p>This option requires <a href=\"/source/plugins/contributors/README.md#plugin_contributors_sections\"><code>plugin_contributors_sections</code></a> to have <code>categories</code> in it to be effective.\nPass a JSON object mapping category with file globs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n</ul>\n<b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"📚 Documentation\": [\"README.md\", \"docs/**\"],\n  \"💻 Code\": [\"source/**\", \"src/**\"],\n  \"#️⃣ Others\": [\"*\"]\n}\n</code></pre></details><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗂️ Setting up contribution categories\n\nPass a JSON object to `plugin_contributors_categories` with categories names as keys and arrays of file globs as values to configure contributions categories.\n\nEach modified file by a contributor matching a file glob will add them in said category.\n\n> 💡 File matching respect keys order\n\n> 💡 Use `|` YAML multiline operator for better readability\n\n*Example: *\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_contributors: yes\n    plugin_contributors_categories: |\n      {\n        \"📚 Documentation\": [\"README.md\", \"docs/**\"],\n        \"💻 Code\": [\"source/**\", \"src/**\"],\n        \"#️⃣ Others\": [\"*\"]\n      }\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Contributors with contributions count\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.contributors.contributions.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_contributors: yes\n  plugin_contributors_contributions: yes\n\n```\n```yaml\nname: Contributors by categories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.contributors.categories.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_contributors: yes\n  plugin_contributors_sections: categories\n  plugin_contributors_categories: |\n    {\n      \"🧩 Plugins / 🖼️ templates\":[\"source/plugins/**\", \"source/templates/**\"],\n      \"📚 Documentation\":[\"README.md\", \"**/README.md\", \"**/metadata.yml\"],\n      \"💻 Code (other)\":[\"source/**\", \"Dockerfile\"]\n    }\n\n```\n<!--/examples-->\n","source/plugins/core/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧱 Core</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>Global configuration and options</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ token</code> <code>🗝️ committer_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n[➡️ Jump to all available options](#%EF%B8%8F-available-options)\n\n## 🌐 Configure used timezone\n\nBy default, dates use Greenwich meridian (GMT/UTC).\n\nConfigure `config_timezone` (see [supported timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) to avoid time offsets.\n\n*Example: configuring timezone*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_timezone: Europe/Paris\n```\n\n## 📦 Ordering content\n\nContent can be manually ordered using `config_order` option.\n\n*Example: display base.header, isocalendar, languages and stars in this specific order*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    base: header\n    plugin_isocalendar: yes\n    plugin_languages: yes\n    plugin_stars: yes\n    config_order: base.header, isocalendar, languages, stars\n```\n\n> 💡 Omitted sections will be appended at the end using default order\n\n> ℹ️ The handles to use for each plugin and sections is based on the [`partials/_.json`](/source/templates/classic/partials/_.json) of the template.\n> It may not necessarily be the plugin id (e.g. `base.header`, `base.activity+community`, `base.repositories`, etc.).\n\n## 🔕 Skipping repositories in plugins\n\nSome plugins support a `plugin_*_skipped` option which is used to skipped repositories from result. It inherits the global option [`repositories_skipped`](/source/plugins/base/README.md#repositories_skipped) which makes it easier to ignore repositories from all plugins at once.\n\nThese options support two different syntaxes:\n\n### Basic pattern matching\n\nSkip repositories by:\n- using their full handle (e.g. `user/repo`)\n- using only their name (e.g. `repo`)\n  - *in this case, the owner may be implicitly set to current `user` option*\n\n*Example: skipping repositories with basic pattern matching*\n```yml\nrepositories_skipped: my-repo, user/my-repo\n```\n\n> 💡 Either comma or newlines can be used to separate basic patterns\n\n### Advanced pattern matching\n\nTo enable advanced pattern matching to skip repositories, include `@use.patterns` at the beginning of the option value.\n\nSkip repositories by writing file-glob patterns, with any of the supported operation:\n- `#` to write comments\n- `-` to exclude repositories\n  - *the `-` is implicit and may be omitted from excluding patterns*\n- `+` to include back repositories\n\n> ℹ️ *metrics* use [isaacs/minimatch](https://github.com/isaacs/minimatch) as its file-glob matcher\n\n*Example: skipping repositories with basic advanced matching*\n```yml\nrepositories_skipped: |\n  @use.patterns\n\n  # Skip a specific repository (both patterns are equivalent)\n  user/repo\n  -user/repo\n\n  # Skip repositories matching a given pattern\n  user/repo-*\n  {user1, user2, user3}/*\n\n  # Include back a previously skipped repository\n  org/repo\n  +org/include-this-repo\n```\n\n> ℹ️ Unlike basic pattern matching, patterns are always tested against the full repository handle (the user will not be implicitly added)\n\n> ⚠️ As patterns may contain commas, be sure to use newlines rather than commas as separator to ensure patterns are correctly parsed\n\n## 🪛 Using presets\n\nIt is possible to reuse the same configuration across different repositories and workflows using configuration presets.\nA preset override the default values of inputs, and multiple presets can be provided at once through URLs or file paths.\n\nOptions resolution is done in the following order:\n- default values\n- presets, from first to last\n- user values\n\n*Example: using a configuration preset from an url*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_presets: https://raw.githubusercontent.com/lowlighter/metrics/presets/lunar-red/preset.yaml\n```\n\nSome presets are hosted on this repository on the [`@presets`](https://github.com/lowlighter/metrics/tree/presets) branch and can be used directly by using their identifier prefixed by an arobase (`@`).\n\n*Example: using a pre-defined configuration preset*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_presets: \"@lunar-red\"\n```\n\n> ⚠️ `🔐 Tokens` and options marked with `⏯️ Cannot be preset`, as they suggest, cannot be preset and thus requires to be explicitly defined to be set.\n\n> ℹ️ Presets configurations use [schemas](https://github.com/lowlighter/metrics/tree/presets/%40schema) to ensure compatibility between format changes\n\n## 🎨 Custom CSS styling\n\nAdditional CSS can be injected using `extras_css` option.\n\n*Example: changing the color of `h2`*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    base: header\n    extras_css: |\n      h2 {\n        color: red;\n      }\n```\n\n> 💡 *metrics* does not use `!important` keyword, so use it when having trouble when styling is not applied\n\n> 💡 If you make an heavy use of this option, creating a [community templates](/source/templates/community/README.md) may be a better alternative\n\n> ⚠️ CSS styles may slightly change between releases, backward compatibility is not guaranteed!\n\n## 🗳️ Custom JavaScript scripting\n\nAdditional JavaScript can be injected using `extras_js` option.\n\n*Example: removing all `h2`*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    base: header\n    extras_js: |\n      document.querySelectorAll(\"h2\")?.forEach(h2 => h2.remove())\n```\n\n> ℹ️ JavaScript is executed in puppeteer context during the rendering phase, **not** in *metrics* context.\n> It will be possible to access `document` and all other features accessible like if the SVG was opened in a browser page\n\n> 💡 If you make an heavy use of this option, creating a [community templates](/source/templates/community/README.md) may be a better alternative\n\n> ⚠️ HTML elements may slightly change between releases, backward compatibility is not guaranteed!\n\n## 🔲 Adjusting padding\n\nSVG rendering is dependent on operating system, browser and fonts combination and may look different across different platforms.\n\nIt may not look like it, but computing the height of a SVG is not trivial. *metrics* spawns an headless browser and try to do its best to resize the result, but it may sometimes ends up in either cropped or oversized images.\n\nTweak `config_padding` option to manually adjust padding and solve this issue.\n\nThis settings supports the following format:\n- 1 value for both width and height\n- 2 values for width first and height second, separated by a comma (`,`)\n\n> 💡 Both negative and positive values are allowed\n\nEach value need to respect the following format:\n- {number}\n- {number} + {number}%\n- {number}%\n\n> 💡 Percentage based values are relative to the height computed by puppeteer\n\n*Example: add 10px padding for both width and height*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_padding: 10\n```\n\n*Example: add 10px padding to height and increase it by 8%*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_padding: 0, 10 + 8%\n```\n\n*Example: remove 10% from height*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_padding: 0, -10%\n```\n\n## ↔️ Controlling display size\n\nSome templates may support different output display size.\n\nA `regular` display size will render a medium-sized image suitable for both desktop and mobile displays, while a `large` one will be more suitable only for desktop and some plugins (like [`📌 topics`](/source/plugins/topics/README.md) or [`🏅 contributors`](/source/plugins/contributors/README.md))\n\nThe `columns` display will render a full-width image with automatic resizing: two columns for desktop and a single one column for mobiles.\n\n*Example: output a PNG image*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_display: large\n```\n\n## 💱 Configuring output format\n\nUse `config_output` to change output format.\n\n*Example: output a PNG image*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_output: png\n```\n\nA JSON output can be used to retrieved collected data and use it elsewhere.\n\n*Example: output a JSON data dump*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_output: json\n```\n\nWhen using a PDF output, it is advised to set `config_base64: yes` to encode embed images in base64 in order to make self-contained documents.\n\n*Example: output a self-contained PDF document*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    markdown: TEMPLATE.md\n    config_output: markdown-pdf\n    config_base64: yes\n```\n\n## ✨ Render `Metrics insights` statically\n\nIt is possible to generate a self-contained HTML file containing `✨ Metrics insights` output by using `config_output: insights`.\n\n> 💡 Note that like `✨ Metrics insights` content is not configurable, thus any other plugin option will actually be ignored\n\n*Example: output `✨ Metrics insights` report*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_output: insights\n```\n\n## 🧶 Configuring output action\n\nBefore configuring output action, ensure that workflows permissions are properly set.\nThese can be changed either through repository settings in Actions tab:\n\n![Setting workflows permissions](/.github/readme/imgs/setup_workflow_permissions.light.png#gh-light-mode-only)\n![Setting workflows permissions](/.github/readme/imgs/setup_workflow_permissions.dark.png#gh-dark-mode-only)\n\nOr more granulary [at job or workflow level](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token).\n\n### Using commits (default)\n\nUse `output_action: commit` to make the action directly push changes to `committer_branch` with a commit.\nA custom commit message can be used through `committer_message`.\n\n> 💡 *metrics* will automatically ignore push events with a commit message containing `[Skip GitHub Action]` or `Auto-generated metrics for run #` to avoid infinite loops. Note that by default, GitHub already ignore events pushed by `${{ github.token }}` or containing `[skip ci]` in commit message\n\n*Example: push output to metrics-renders branch rather than the default branch*\n```yaml\nmetrics:\n  permissions:\n    contents: write\n  steps:\n    - uses: lowlighter/metrics@latest\n      with:\n        output_action: commit\n        committer_branch: metrics-renders\n        committer_message: \"chore: update metrics\"\n```\n\n### Using pull requests\n\nUse `output_action: pull-request` to make the action open a new pull request and push changes from the same run on it.\n\nThe last step should use either `pull-request-merge`, `pull-request-squash` or `pull-request-rebase` to merge changes to `committer_branch`.\n\n> 💡 When using `pull-request` output action, do not forget to change `filename` too or previous output will be overwritten!\n\n*Example: push two outputs using a merge pull request*\n```yaml\nmetrics:\n  permissions:\n    contents: write\n    pull-requests: write\n  steps:\n    - uses: lowlighter/metrics@latest\n      with:\n        filename: my-metrics-0.svg\n        output_action: pull-request\n\n    - uses: lowlighter/metrics@latest\n      with:\n        filename: my-metrics-1.svg\n        output_action: pull-request-merge\n```\n\n### Using gists\n\nUse `output_action: gist` to push output to a [GitHub gist](https://gist.github.com) instead.\nIt is required to provide a gist id to `committer_gist` option to make it work.\n\n> 💡 This feature will use `token` instead of `committer_token` to push changes, so `gists` scope must be granted to the original `token` first\n\n*Example: push output to a gist*\n```yaml\nmetrics:\n  steps:\n    - uses: lowlighter/metrics@latest\n      with:\n        output_action: gist\n        committer_gist: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n### Manual handling\n\nUse `output_action: none` to perform custom processing with outputs.\nThey will be available under `/metrics_renders/{filename}` in the runner.\n\n*Example: generate outputs and manually push them*\n```yaml\nmetrics:\n  permissions:\n    contents: write\n  steps:\n    - name: Checkout repository\n      uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n\n    - uses: lowlighter/metrics@latest\n      with:\n        output_action: none\n\n    - uses: lowlighter/metrics@latest\n      run: |\n        set +e\n        git checkout metrics-renders\n        git config user.name github-actions[bot]\n        git config user.email 41898282+github-actions[bot]@users.noreply.github.com\n        sudo mv /metrics_renders/* ./\n        git add --all\n        git commit -m \"chore: push metrics\"\n        git push\n```\n\n## ♻️ Retrying automatically failed rendering and output action\n\nRendering is subject to external factors and can fail occasionally.\nUse `retries` and `retries_delay` options to automatically retry rendering.\n\n*Example: retry render up to 3 times (wait 5 minutes between each fail)*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    retries: 3\n    retries_delay: 300\n```\n\nOutput action is also subject to GitHub API rate-limiting and overall health status and can fail occasionally.\nUse `retries_output_action` and `retries_delay_output_action` options to automatically retry output action.\n\n> 💡 As output action is a separate step from rendering, render step won't be called again\n\n*Example: retry output action up to 5 times (wait 2 minutes between each fail)*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    retries_output_action: 5\n    retries_delay_output_action: 120\n```\n\n## 🗜️ Optimize SVG output\n\nTo reduce filesize and decrease loading time, *metrics* offers several optimization options, such as purging unused CSS and style minification, XML pretty-printing (which also reduce diffs between changes) and general SVG optimization (still experimental).\n\n> 💡 This option is enabled by default!\n\n*Example: optimize CSS and XML*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    optimize: css, xml\n```\n\n*Example: optimize SVG (experimental)*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    optimize: svg\n    experimental_features: --optimize-svg\n```\n\n## 🐳 Faster execution with prebuilt docker images\n\nWhen using `lowlighter/metrics` official releases as a GitHub Action, a prebuilt docker container image will be pulled from [GitHub Container Registry](https://github.com/users/lowlighter/packages/container/package/metrics). It allows to significantly reduce workflow execution time.\n\n> 💡 This option is enabled by default!\n\nOn forks, this feature is disable to take into account any changes you made on it.\n\n*Example: using prebuilt docker image*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    use_prebuilt_image: yes\n```\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>token</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub Personal Access Token</p>\n<p>No scopes are required by default, though some plugins and features may require additional scopes.</p>\n<p>When using a configuration which does not requires a GitHub PAT, it is possible to pass <code>NOT_NEEDED</code> instead.\nWhen doing so, any settings which defaults on user fetched values will not be templated (e.g. <code>.user.*</code>) and will usually need to be set manually.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">✔️ Required<br>\n🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>user</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub username</p>\n<p>Defaults to <a href=\"/source/plugins/core/README.md#token\"><code>token</code></a> owner username.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repo</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub repository</p>\n<p>This option is only revelant for repositories templates</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_token</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub Token used to commit metrics</p>\n<p>Leave this to <code>${{ github.token }}</code> or <code>${{ secrets.GITHUB_TOKEN }}</code>, which is a special auto-generated token restricted to current repository scope.</p>\n<blockquote>\n<p>💡 When using <a href=\"/source/plugins/core/README.md#output_action\"><code>output_action: gist</code></a>, it will use <a href=\"/source/plugins/core/README.md#token\"><code>token</code></a> instead, since gists are outside of scope</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br>\n<b>default:</b> ${{ github.token }}<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_branch</code></h4></td>\n    <td rowspan=\"2\"><p>Target branch</p>\n<p>Defaults to current repository default branch</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_message</code></h4></td>\n    <td rowspan=\"2\"><p>Commit message</p>\n<p>Use <code>${filename}</code> to display filename</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> Update ${filename} - [Skip GitHub Action]<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_gist</code></h4></td>\n    <td rowspan=\"2\"><p>Gist id</p>\n<p>Specify an existing gist id (can be retrieved from its URL) when using <a href=\"/source/plugins/core/README.md#output_action\"><code>output_action: gist</code></a>.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>filename</code></h4></td>\n    <td rowspan=\"2\"><p>Output path</p>\n<p>When using an asterisk (<code>*</code>), correct extension will automatically be applied according to <a href=\"/source/plugins/core/README.md#config_output\"><code>config_output</code></a> value</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> github-metrics.*<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>markdown</code></h4></td>\n    <td rowspan=\"2\"><p>Markdown template path</p>\n<p>It can be either a local path or a full link (e.g. <a href=\"https://raw.githubusercontent.com\">https://raw.githubusercontent.com</a>)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> TEMPLATE.md<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>markdown_cache</code></h4></td>\n    <td rowspan=\"2\"><p>Markdown file cache</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> .cache<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>output_action</code></h4></td>\n    <td rowspan=\"2\"><p>Output action</p>\n<ul>\n<li><code>none</code>: just create file in <code>/metrics_renders</code> directory of action runner</li>\n<li><code>commit</code>: push output to <code>committer_branch</code></li>\n<li><code>pull-request</code>: push output to a new branch and open a pull request to <code>committer_branch</code></li>\n<li><code>pull-request-merge</code>: same as <code>pull-request</code> and additionally merge pull request</li>\n<li><code>pull-request-squash</code>: same as <code>pull-request</code> and additionally squash and merge pull request</li>\n<li><code>pull-request-rebase</code>: same as <code>pull-request</code> and additionally rebase and merge pull request</li>\n<li><code>gist</code>: push output to <code>committer_gist</code></li>\n</ul>\n<blockquote>\n<p>💡 When using <code>pull-request</code>, you will need to set the last job with a <code>pull-request-*</code> action instead, else it won&#39;t be merged</p>\n</blockquote>\n<blockquote>\n<p>⚠️ As GitHub gists API does not support binary files upload, <code>gist</code> does not support <a href=\"/source/plugins/core/README.md#config_output\"><code>config_output</code></a> set to either <code>png</code>, <code>jpeg</code> or <code>markdown-pdf</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> commit<br>\n<b>allowed values:</b><ul><li>none</li><li>commit</li><li>pull-request</li><li>pull-request-merge</li><li>pull-request-squash</li><li>pull-request-rebase</li><li>gist</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>output_condition</code></h4></td>\n    <td rowspan=\"2\"><p>Output condition</p>\n<ul>\n<li><code>always</code>: always try to push changes</li>\n<li><code>data-changed</code>: skip changes if no data changed (e.g. like when only metadata changed)</li>\n</ul>\n<blockquote>\n<p>ℹ️ This option is only revelant when <a href=\"/source/plugins/core/README.md#config_output\"><code>config_output: svg</code></a> is set</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> always<br>\n<b>allowed values:</b><ul><li>always</li><li>data-changed</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>optimize</code></h4></td>\n    <td rowspan=\"2\"><p>Optimization features</p>\n<ul>\n<li><code>css</code>: purge and minify CSS styles</li>\n<li><code>xml</code>: pretty-print XML (useful to reduce diff)</li>\n<li><code>svg</code>: optimization with SVGO (experimental, requires <a href=\"/source/plugins/core/README.md#experimental_features\"><code>experimental_features: --optimize-svg</code></a>)</li>\n</ul>\n<p>Templates may not always honour all provided options</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> css, xml<br>\n<b>allowed values:</b><ul><li>css</li><li>xml</li><li>svg</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>setup_community_templates</code></h4></td>\n    <td rowspan=\"2\"><p>Community templates to setup</p>\n<p>See <a href=\"https://github.com/lowlighter/metrics/blob/master/source/templates/community/README.md\">community templates guide</a> for more informations</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.setup.community.templates</i></li>\n</ul>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>template</code></h4></td>\n    <td rowspan=\"2\"><p>Template</p>\n<p>Community templates must be prefixed by at sign (<code>@</code>)\nSee <a href=\"https://github.com/lowlighter/metrics/blob/master/README.md#%EF%B8%8F-templates\">list of supported templates</a></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> classic<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>query</code></h4></td>\n    <td rowspan=\"2\"><p>Query parameters</p>\n<p>Pass additional parameters to templates.\nThis is mostly useful for custom templates.</p>\n<blockquote>\n<p>⚠️ <strong>Do not</strong> use this option to pass other existing parameters, they will be overwritten</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{}</code></pre></details><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>extras_css</code></h4></td>\n    <td rowspan=\"2\"><p>Extra CSS</p>\n<p>Custom CSS that will be injected in used template.\nUseful to avoid creating a new template just to tweak some styling</p>\n<blockquote>\n<p>💡 <em>metrics</em> tends to avoid using <code>!important</code> rules, which means that most styling can be overridden by this option when using <code>!important</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.user.css</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>extras_js</code></h4></td>\n    <td rowspan=\"2\"><p>Extra JavaScript</p>\n<p>Custom JavaScript that will be executed during puppeteer rendering.\nUseful to avoid creating a new template just to tweak some content.</p>\n<blockquote>\n<p>⚠️ Note that is it executed within puppeteer context and <strong>not</strong> within <em>metrics</em> context.\nNo access to fetched data or configuration will be offered through this context.\nIt is run after transformations and optimizations, but just before resizing.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.user.js</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>github_api_rest</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub REST API endpoint</p>\n<p>Can be used to support <a href=\"https://github.com/enterprise\">GitHub enterprises server</a>.\nLeave empty to use default endpoint.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>github_api_graphql</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub GraphQL API endpoint</p>\n<p>Can be used to support <a href=\"https://github.com/enterprise\">GitHub enterprises server</a>.\nLeave empty to use default endpoint.</p>\n<blockquote>\n<p>ℹ️ GraphQL octokit will automatically append <code>/graphql</code> to provided endpoint</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_timezone</code></h4></td>\n    <td rowspan=\"2\"><p>Timezone for dates</p>\n<p>See <a href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\">list of supported timezone</a></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_order</code></h4></td>\n    <td rowspan=\"2\"><p>Plugin order</p>\n<p>By default, templates use <code>partials/_.json</code> ordering.\nYou can override the content order by using this setting.</p>\n<p>If some partials are omitted, they will be appended at the end with default ordering</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_twemoji</code></h4></td>\n    <td rowspan=\"2\"><p>Use twemojis</p>\n<p>Replace emojis by <a href=\"%5Btwemojis%5D(https://github.com/twitter/twemoji)\">twemojis</a> to have a consistent render across all platforms\nMay increase filesize.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_gemoji</code></h4></td>\n    <td rowspan=\"2\"><p>Use GitHub custom emojis</p>\n<p>GitHub supports additional emojis which are not registered in Unicode standard (:octocat:, :shipit:, :trollface:, ...)\nSee full list at <a href=\"https://api.github.com/emojis\">https://api.github.com/emojis</a>.</p>\n<p>This option has no effect when [`token: NOT_NEEDED``](/source/plugins/core/README.md#token) is set.</p>\n<p>May increase filesize</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_octicon</code></h4></td>\n    <td rowspan=\"2\"><p>Use GitHub octicons</p>\n<p>Octicons are open-sourced icons provided by GitHub.\nSee full list at <a href=\"https://primer.style/octicons\">https://primer.style/octicons</a>.</p>\n<p>To include an octicon, use the following syntax: <code>:octicon-{name}-{size}:</code>.\nSize must be a supported icon size (12, 16 or 24).\n16px octicons can omit size and directly use <code>:octicon-{name}:</code> syntax.</p>\n<p>May increase filesize</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_display</code></h4></td>\n    <td rowspan=\"2\"><p>Display width (for image output formats)</p>\n<ul>\n<li><code>regular</code>: 480px width</li>\n<li><code>large</code>: 960px width (may not be supported by all templates)</li>\n<li><code>columns</code>: Full width with auto-sizing (two columns for desktops, and one column for mobile)<ul>\n<li>known issue: <a href=\"https://github.com/lowlighter/metrics/issues/374\">https://github.com/lowlighter/metrics/issues/374</a></li>\n</ul>\n</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> regular<br>\n<b>allowed values:</b><ul><li>regular</li><li>large</li><li>columns</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_animations</code></h4></td>\n    <td rowspan=\"2\"><p>Use CSS animations</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_base64</code></h4></td>\n    <td rowspan=\"2\"><p>Base64-encoded images</p>\n<p>Enable this option to make self-contained output (i.e. with no external links)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_padding</code></h4></td>\n    <td rowspan=\"2\"><p>Output padding</p>\n<p>Although <em>metrics</em> try to auto-guess resulting height, rendering is still dependent on OS and browser settings.\nIt can result in cropped or oversized outputs.</p>\n<p>This settings let you manually adjust padding with the following format:</p>\n<ul>\n<li>1 value for both width and height</li>\n<li>2 values for width fist and height second, separated by a comma (<code>,</code>)</li>\n</ul>\n<p>Each value need to respect the following format:</p>\n<ul>\n<li><code>{number}</code></li>\n<li><code>{number} + {number}%</code></li>\n<li><code>{number}%</code></li>\n</ul>\n<p>Percentage are relative to computed dimensions</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 0, 8 + 11%<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_output</code></h4></td>\n    <td rowspan=\"2\"><p>Output format</p>\n<ul>\n<li><code>auto</code>: Template default (usually <code>svg</code> or <code>markdown</code>)</li>\n<li><code>svg</code>: SVG image</li>\n<li><code>png</code>: PNG image (animations not supported)</li>\n<li><code>jpeg</code>: JPEG image (animations and transparency not supported)</li>\n<li><code>json</code>: JSON data dump</li>\n<li><code>markdown</code>: Markdown rendered file</li>\n<li><code>markdown-pdf</code>: PDF from markdown rendered file</li>\n<li><code>insights</code>: Metrics Insights self-contained HTML file (not configurable)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> auto<br>\n<b>allowed values:</b><ul><li>auto</li><li>svg</li><li>png</li><li>jpeg</li><li>json</li><li>markdown</li><li>markdown-pdf</li><li>insights</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_presets</code></h4></td>\n    <td rowspan=\"2\"><p>Configuration presets</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.setup.community.presets</i></li>\n</ul>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries</code></h4></td>\n    <td rowspan=\"2\"><p>Retries in case of failures (for rendering)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 10)</i>\n<br>\n<b>default:</b> 3<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries_delay</code></h4></td>\n    <td rowspan=\"2\"><p>Delay between each retry (in seconds, for rendering)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 3600)</i>\n<br>\n<b>default:</b> 300<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries_output_action</code></h4></td>\n    <td rowspan=\"2\"><p>Retries in case of failures (for output action)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 10)</i>\n<br>\n<b>default:</b> 5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries_delay_output_action</code></h4></td>\n    <td rowspan=\"2\"><p>Delay between each retry (in seconds, for output action)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 3600)</i>\n<br>\n<b>default:</b> 120<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>clean_workflows</code></h4></td>\n    <td rowspan=\"2\"><p>Clean previous workflows jobs</p>\n<p>This can be used to clean up Action tabs from previous workflows runs.</p>\n<p>Use <code>all</code> to clean up workflows runs in any state.</p>\n<blockquote>\n<p>⚠️ When reporting issues, it is <strong>required</strong> to provide logs so it can be investigated and reproduced.\nBe sure to disable this option when asking for help or submitting bug reports.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>cancelled</li><li>failure</li><li>success</li><li>skipped</li><li>startup_failure</li><li>timed_out</li><li>all</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>delay</code></h4></td>\n    <td rowspan=\"2\"><p>Job delay</p>\n<p>This can be used to avoid triggering GitHub abuse mechanics on large workflows</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 3600)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>quota_required_rest</code></h4></td>\n    <td rowspan=\"2\"><p>Minimum GitHub REST API requests quota required to run</p>\n<p>Action will cancel itself without any errors if requirements are not met</p>\n<p>This option has no effect when <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a> is set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 5000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>quota_required_graphql</code></h4></td>\n    <td rowspan=\"2\"><p>Minimum GitHub GraphQL API requests quota required to run</p>\n<p>Action will cancel itself without any errors if requirements are not met</p>\n<p>This option has no effect when <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a> is set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 5000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>quota_required_search</code></h4></td>\n    <td rowspan=\"2\"><p>Minimum GitHub Search API requests quota required to run</p>\n<p>Action will cancel itself without any errors if requirements are not met</p>\n<p>This option has no effect when <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a> is set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>notice_releases</code></h4></td>\n    <td rowspan=\"2\"><p>Notice about new releases of metrics</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>use_prebuilt_image</code></h4></td>\n    <td rowspan=\"2\"><p>Use pre-built docker image from <a href=\"https://github.com/lowlighter/metrics/pkgs/container/metrics\">GitHub container registry</a></p>\n<p>It allows to save build time and make job significantly faster, and there is almost no reason to disable this settings.\nThis option has no effects on forks (images will always be rebuilt from Dockerfile)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugins_errors_fatal</code></h4></td>\n    <td rowspan=\"2\"><p>Fatal plugin errors</p>\n<p>When enabled, the job will fail in case of plugin errors, else it will be handled gracefully in output with an error message</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>debug</code></h4></td>\n    <td rowspan=\"2\"><p>Debug mode</p>\n<p>This setting is automatically enable if a job fail (useful with <a href=\"/source/plugins/core/README.md#plugins_errors_fatal\"><code>plugins_errors_fatal: yes</code></a>)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>verify</code></h4></td>\n    <td rowspan=\"2\"><p>SVG validity check</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.libxml2</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>debug_flags</code></h4></td>\n    <td rowspan=\"2\"><p>Debug flags</p>\n<ul>\n<li><code>--cakeday</code>: simulate registration anniversary</li>\n<li><code>--halloween</code>: enable halloween colors <em>(only first color scheme will be applied if multiple are specified)</em></li>\n<li><code>--winter</code>: enable winter colors <em>(only first color scheme will be applied if multiple are specified)</em></li>\n<li><code>--error</code>: force render error</li>\n<li><code>--puppeteer-debug</code>: enable puppeteer debug mode*</li>\n<li><code>--puppeteer-disable-headless</code>: disable puppeteer headless mode <em>(requires a graphical environment)</em>*</li>\n<li><code>--puppeteer-wait-load</code>: override puppeteer wait events*</li>\n<li><code>--puppeteer-wait-domcontentloaded</code>: override puppeteer wait events*</li>\n<li><code>--puppeteer-wait-networkidle0</code>: override puppeteer wait events*</li>\n<li><code>--puppeteer-wait-networkidle2</code>: override puppeteer wait events*</li>\n</ul>\n<blockquote>\n<p><em>* 🌐 Web instances needs to have <a href=\"/source/plugins/core/README.md#debug\"><code>debug</code></a> set in <code>settings.json</code> for these flags to be supported.</em></p>\n</blockquote>\n<blockquote>\n<p>⚠️ No backward compatibility is guaranteed for these features, they are only meant for debugging purposes.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>array</code>\n<i>(space-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>--cakeday</li><li>--halloween</li><li>--winter</li><li>--error</li><li>--puppeteer-debug</li><li>--puppeteer-disable-headless</li><li>--puppeteer-wait-load</li><li>--puppeteer-wait-domcontentloaded</li><li>--puppeteer-wait-networkidle0</li><li>--puppeteer-wait-networkidle2</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>debug_print</code></h4></td>\n    <td rowspan=\"2\"><p>Print output in console</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>dryrun</code></h4></td>\n    <td rowspan=\"2\"><p>Dry-run</p>\n<blockquote>\n<p>⚠️ Unlike <a href=\"/source/plugins/core/README.md#output_action\"><code>output_action: none</code></a>, output file won&#39;t be available in <code>/metrics_renders</code> directory</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>experimental_features</code></h4></td>\n    <td rowspan=\"2\"><p>Experimental features</p>\n<blockquote>\n<p>⚠️ No backward compatibility is guaranteed for these features</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>array</code>\n<i>(space-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>--optimize-svg</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>use_mocked_data</code></h4></td>\n    <td rowspan=\"2\"><p>Use mocked data instead of live APIs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n","source/plugins/discussions/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💬 Discussions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays GitHub discussions stats.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.discussions.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_discussions</code></h4></td>\n    <td rowspan=\"2\"><p>Enable discussions plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_discussions_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Discussion categories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_discussions_categories_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (categories)</p>\n<p>Note that categories are sorted from highest to lowest count</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: GitHub Discussions\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.discussions.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_discussions: yes\n  plugin_discussions_categories_limit: 8\n\n```\n<!--/examples-->\n","source/plugins/followup/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎟️ Follow-up of issues and pull requests</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the ratio of open/closed issues and the ratio of open/merged pull requests across repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Indepth analysis</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.followup.indepth.svg\" alt=\"\"></img></details>\n      <details><summary>Created on a user's repositories</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.followup.svg\" alt=\"\"></img></details>\n      <details><summary>Created by a user</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.followup.user.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup</code></h4></td>\n    <td rowspan=\"2\"><p>Enable followup plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>repositories</code>: overall status of issues and pull requests on your repositories</li>\n<li><code>user</code>: overall status of issues and pull requests you have created on GitHub</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> repositories<br>\n<b>allowed values:</b><ul><li>repositories</li><li>user</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth analysis</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup_archived</code></h4></td>\n    <td rowspan=\"2\"><p>Include archived repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔎 `indepth` mode\n\nThe `plugin_followup_indepth` option collects additional stats to differentiate issues and pull requests opened by maintainers and users.\n\nIt helps knowing whether repositories are also maintained by other users and give an overall health status of repositories.\n\n> ⚠️ This mode will try to list users with push access to know who are the maintainers in order to place issues in the correct category, which requires a `repo` scope. If not available, it will consider that only the owner is a maintainer.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Opened on user's repositories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n\n```\n```yaml\nname: Opened by user\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.user.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n  plugin_followup_sections: user\n\n```\n```yaml\nname: Indepth analysis\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.indepth.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n  plugin_followup_indepth: yes\n\n```\n```yaml\nname: Exclude Archived\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.archived.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n  plugin_followup_archived: no\n\n```\n<!--/examples-->\n","source/plugins/gists/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎫 Gists</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays <a href=\"https://gist.github.com\">gists</a> stats.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.gists.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_gists</code></h4></td>\n    <td rowspan=\"2\"><p>Enable gists plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Gists\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.gists.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_gists: yes\n\n```\n<!--/examples-->\n","source/plugins/habits/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💡 Coding habits and activity</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays coding habits based on recent activity, such as active hours and languages recently used.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Recent activity charts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.habits.charts.svg\" alt=\"\"></img></details>\n      <details open><summary>Mildly interesting facts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.habits.facts.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits</code></h4></td>\n    <td rowspan=\"2\"><p>Enable habits plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_from</code></h4></td>\n    <td rowspan=\"2\"><p>Events to use</p>\n<p>A higher number will increase stats accuracy</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_days</code></h4></td>\n    <td rowspan=\"2\"><p>Event maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 14<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_facts</code></h4></td>\n    <td rowspan=\"2\"><p>Mildly interesting facts</p>\n<p>It includes indentation type, average number of characters per line of code, and most active time and day</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_charts</code></h4></td>\n    <td rowspan=\"2\"><p>Charts</p>\n<p>It includes commit activity per hour of day and commit activity per day of week\nRecent language activity may also displayed (it requires extras features to be enabled for web instances) for historical reasons</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_charts_type</code></h4></td>\n    <td rowspan=\"2\"><p>Charts display type</p>\n<ul>\n<li><code>classic</code>: <code>&lt;div&gt;</code> based charts, simple and lightweight</li>\n<li><code>graph</code>: <code>&lt;svg&gt;</code> based charts, smooth</li>\n</ul>\n<blockquote>\n<p>⚠️ <code>chartist</code> option has been deprecated and is now equivalent to <code>graph</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.d3</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> classic<br>\n<b>allowed values:</b><ul><li>classic</li><li>graph</li><li>chartist</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_trim</code></h4></td>\n    <td rowspan=\"2\"><p>Trim unused hours on charts</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_languages_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (languages)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 8)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 8<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_languages_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Display threshold (percentage)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 0%<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🌐 Configure used timezone\n\nBy default, dates use Greenwich meridian (GMT/UTC).\n\nConfigure `config_timezone` (see [supported timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) to avoid time offsets.\n\n*Example: configuring timezone*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_timezone: Europe/Paris\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Mildly interesting facts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.habits.facts.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_habits: yes\n  plugin_habits_facts: yes\n  plugin_habits_charts: no\n  config_timezone: Europe/Paris\n\n```\n```yaml\nname: Recent activity charts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.habits.charts.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_habits: yes\n  plugin_habits_facts: no\n  plugin_habits_charts: yes\n  config_timezone: Europe/Paris\n\n```\n<!--/examples-->\n\n\n","source/plugins/introduction/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🙋 Introduction</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays account bio or organization/repository description.</p>\n<p>Since account bio is already displayed on account profile, this plugin is mostly intended for external usage.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>For a user or an organization</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.introduction.svg\" alt=\"\"></img></details>\n      <details><summary>For a repository</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.introduction.repository.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_introduction</code></h4></td>\n    <td rowspan=\"2\"><p>Enable introduction plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_introduction_title</code></h4></td>\n    <td rowspan=\"2\"><p>Section title</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Organization introduction\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.introduction.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  user: github\n  base: header\n  plugin_introduction: yes\n\n```\n```yaml\nname: Repository introduction\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.introduction.repository.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  template: repository\n  repo: metrics\n  base: header\n  plugin_introduction: yes\n\n```\n<!--/examples-->\n","source/plugins/isocalendar/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📅 Isometric commit calendar</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays an isometric view of a user commit calendar along with a few additional statistics like current streak and average number of commit per day.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Full year calendar</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.isocalendar.fullyear.svg\" alt=\"\"></img></details>\n      <details><summary>Half year calendar</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.isocalendar.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_isocalendar</code></h4></td>\n    <td rowspan=\"2\"><p>Enable isocalendar plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_isocalendar_duration</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<ul>\n<li><code>half-year</code>: 180 days</li>\n<li><code>full-year</code>: 1 year</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> half-year<br>\n<b>allowed values:</b><ul><li>half-year</li><li>full-year</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Half-year calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.isocalendar.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_isocalendar: yes\n\n```\n```yaml\nname: Full-year calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.isocalendar.fullyear.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_isocalendar: yes\n  plugin_isocalendar_duration: full-year\n\n```\n<!--/examples-->\n","source/plugins/languages/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🈷️ Languages activity</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display which languages you use across all repositories you contributed to.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Indepth analysis (clone and analyze repositories)</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.indepth.svg\" alt=\"\"></img></details>\n      <details open><summary>Recently used (analyze recent activity events)</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.recent.svg\" alt=\"\"></img></details>\n      <details><summary>Default algorithm</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.svg\" alt=\"\"></img></details>\n      <details><summary>Default algorithm (with details)</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.details.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Enable languages plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored languages</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 8)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 8<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Display threshold (percentage)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 0%<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_other</code></h4></td>\n    <td rowspan=\"2\"><p>Group unknown, ignored and over-limit languages into &quot;Other&quot; category</p>\n<p>If this option is enabled, &quot;Other&quot; category will not be subject to <a href=\"/source/plugins/languages/README.md#plugin_languages_threshold\"><code>plugin_languages_threshold</code></a>.\nIt will be automatically hidden if empty.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_colors</code></h4></td>\n    <td rowspan=\"2\"><p>Custom languages colors</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> github<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_aliases</code></h4></td>\n    <td rowspan=\"2\"><p>Custom languages names</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<p>Note that <code>recently-used</code> is only available when <a href=\"/source/plugins/languages/README.md#plugin_languages_indepth\"><code>plugin_languages_indepth</code></a> is enabled</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> most-used<br>\n<b>allowed values:</b><ul><li>most-used</li><li>recently-used</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_details</code></h4></td>\n    <td rowspan=\"2\"><p>Additional details</p>\n<p>Note that <code>lines</code> is only available when <a href=\"/source/plugins/languages/README.md#plugin_languages_indepth\"><code>plugin_languages_indepth</code></a> is enabled</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>bytes-size</li><li>percentage</li><li>lines</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode</p>\n<blockquote>\n<p>⚠️ read documentation first</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.cpu.overuse</i></li>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> false<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_indepth_custom</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Custom repositories</p>\n<p>Specify a list of additional repositories to analyze.</p>\n<p>Below are the supported syntax formats:</p>\n<ul>\n<li><code>owner/repo</code> (e.g. <code>lowlighter/metrics</code>)</li>\n<li><code>owner/repo@branch</code> (e.g. <code>lowlighter/metrics@main</code>)</li>\n<li><code>owner/repo@branch:commits</code> (e.g. <code>lowlighter/metrics@main:v1.0..v1.1</code>)<ul>\n<li>See <a href=\"https://git-scm.com/docs/git-rev-list#_description\"><code>git rev-list</code></a> documentation for more information about <code>commits</code> syntax</li>\n</ul>\n</li>\n</ul>\n<p>It is possible to specify repositories that are not hosted on <a href=\"https://github.com\">github.com</a> by passing a full url instead.\nIn this case the repository must be accessible directly.</p>\n<blockquote>\n<p>ℹ️ This option bypass <a href=\"/source/plugins/languages/README.md#plugin_languages_skipped\"><code>plugin_languages_skipped</code></a></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_analysis_timeout</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Analysis timeout</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 60)</i>\n<br>\n<b>default:</b> 15<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_analysis_timeout_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Analysis timeout (repositories)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 15)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 7.5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Displayed categories (most-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> markup, programming<br>\n<b>allowed values:</b><ul><li>data</li><li>markup</li><li>programming</li><li>prose</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_recent_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Displayed categories (recently-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> markup, programming<br>\n<b>allowed values:</b><ul><li>data</li><li>markup</li><li>programming</li><li>prose</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_recent_load</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Events to load (recently-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(100 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 300<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_recent_days</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Events maximum age (day, recently-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 365)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 14<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔎 `indepth` mode\n\nThe default algorithm uses the top languages from each repository you contributed to using GitHub GraphQL API (which is similar to the displayed languages bar on github.com). When working in collaborative projects with a lot of people, these numbers may be less representative of your actual work.\n\nThe `plugin_languages_indepth` option lets you use a more advanced algorithm for more accurate statistics.\nUnder the hood, it will clone your repositories, run [linguist-js](https://github.com/Nixinova/Linguist) (a JavaScript port of [GitHub linguist](https://github.com/github/linguist)) and iterate over patches matching your `commits_authoring` setting.\n\nSince git lets you use any email and username for commits, *metrics* may not be able to detect a commit ownership if it isn't the same as your GitHub personal data. By default, it will use your GitHub username, but you can configure additional matching usernames and email addresses using `commits_authoring` option.\n\n*Example: configuring `indepth` mode*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_indepth: yes\n    commits_authoring: firstname lastname, username, username@users.noreply.github.com\n```\n\n> 💡 This feature unlocks the `lines` option in `plugin_languages_details`\n\n> ⚠️ This feature significantly increase workflow time\n\n> ⚠️ Since this mode iterates over **each matching commit of each repository**, it is not suited for large code base, especially those with a large amount of commits and the ones containing binaries. While `plugin_languages_analysis_timeout` and `plugin_languages_analysis_timeout_repositories` can be used to increase the default timeout for analysis, please be responsible and keep this feature disabled if it cannot work on your account to save GitHub resources and our planet 🌏\n\n> ⚠️ Although *metrics* does not send any code to external sources, repositories are temporarily cloned on the GitHub Action runner. It is advised to keep this option disabled when working with sensitive data or company code. Use at your own risk, *metrics* and its authors **cannot** be held responsible for any resulting code leaks. Source code is available for auditing at [analyzers.mjs](/source/plugins/languages/analyzers.mjs).\n\n> 🌐 Web instances must enable this feature in `settings.json`\n\nBelow is a summary of the process used to compute indepth statistics:\n\n## Most used mode\n\n1. Fetch GPG keys linked to your GitHub account\n  - automatically add attached emails to `commits_authoring`\n  - *web-flow* (GitHub's public key for changes made through web-ui) is also fetched\n2. Import GPG keys so they can be used to verify commits later\n3. Iterate through repositories\n  - early break if `plugin_languages_analysis_timeout` is reached\n  - skip repository if it matches `plugin_languages_skipped`\n  - include repositories from `plugin_languages_indepth_custom`\n    - a specific branch and commit range can be used\n    - a source other than github.com can be used\n4. Clone repository\n  - target branch is checkout\n5. List of authored commits is computed\n  - using `git log --author` and `commits_authoring` to search in commit headers\n  - using `git log --grep` and `commits_authoring` to search in commit body\n  - ensure these are within the range specified by `plugin_languages_indepth_custom` (if applicable)\n6. Process authored commits\n  - early break if `plugin_languages_analysis_timeout_repositories` is reached\n  - using `git verify-commit` to check authenticity against imported GPG keys\n  - using `git log --patch` to extract added/deleted lines/bytes from each file\n  - using [GitHub linguist](https://github.com/github/linguist) ([linguist-js](https://github.com/Nixinova/LinguistJS)) to detect language for each file\n    - respect `plugin_languages_categories` option\n    - if a file has since been deleted or moved, checkout on the last commit file was present and run linguist again\n7. Aggregate results\n\n## Recently used mode\n\n1. Fetch push events linked to your account (or target repository)\n  - matching `plugin_languages_recent_load` and `plugin_languages_recent_days` options\n  - matching committer emails from `commits_authoring`\n2. Process authored commits\n  - using [GitHub linguist](https://github.com/github/linguist) ([linguist-js](https://github.com/Nixinova/LinguistJS)) to detect language for each file\n    - respect `plugin_languages_recent_categories` option\n    - directly pass file content rather than performing I/O and simulating a git repository\n3. Aggregate results\n\n## 📅 Recently used languages\n\nThis feature uses a similar algorithm as `indepth` mode, but uses patches from your events feed instead.\nIt will fetch a specified amount of recent push events and perform linguistic analysis on it.\n\n> ⚠️ Note that *metrics* won't be able to use more events than GitHub API is able to provide\n\n*Example: display recently used languages from 400 GitHub events from last 2 weeks*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_sections: recently-used\n    plugin_languages_recent_load: 400\n    plugin_languages_recent_days: 14\n```\n\n> 🌐 Web instances must enable this feature in `settings.json`\n\n## 🥽 Controling which languages are displayed\n\nSeveral options lets you customize which languages should be displayed.\nIt is possible to ignore completely languages or those lower than a given threshold, skip repositories, and filter by language categories.\n\n*Example: hide HTML and CSS languages, skip lowlighter/metrics repository*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_ignored: html, css\n    plugin_languages_skipped: lowlighter/metrics\n```\n\n*Example: hide languages with less than 2% usage*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_threshold: 2%\n```\n\n> 💡 The threshold feature will automatically scale remaining languages so the total percentage is always 100%. However, other stats like bytes count and lines are not affected.\n\nWhen using `indepth` mode, it is possible to hide languages per category.\nSupported categories are `data`, `markup`, `programming` and `prose`.\n\n*Example: hide data and prose languages from stats*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_categories: data, prose\n    plugin_languages_recent_categories: data, prose\n```\n\n## 🎨 Using custom colors\n\nThe plugin uses GitHub language colors, but it may be hard to distinguish them depending on which languages you use.\nIt is possible to use custom colors using `plugin_languages_colors` option.\n\nThe following syntaxes are supported:\n- A predefined set from [colorsets.json](colorsets.json) *(support limited to 8 languages max)*\n- `${language}:${color}` to change the color of a language *(case insensitive)*\n- `${n}:${color}` to change the color of the n-th language\n\nBoth hexadecimal and [named color](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value) are supported.\n\n*Example: using a predefined color set*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_colors: rainbow\n    plugin_languages_limit: 8\n```\n\n*Example: setting JavaScript to red, the first language to blue and the second one to `#ff00aa`*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_colors: javascript:red, 0:blue, 1:#ff00aa\n```\n\n## ✍️ Using custom languages name\n\nThis plugin is limited by [GitHub linguist](https://github.com/github/linguist) capabilities, meaning that some languages may be mislabeled in some cases.\n\nTo mitigate this, it is possible to use `plugin_languages_aliases` option and provide a list of overrides using the following syntax: `${language}:${alias}` *(case insensitive)*.\n\n*Example: display JavaScript as JS and TypeScript as TS*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_aliases: javascript:JS typescript:TS\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Most used\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_limit: 4\n\n```\n```yaml\nname: Most used (with details)\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.details.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_details: bytes-size, percentage\n  plugin_languages_limit: 4\n\n```\n```yaml\nname: Recently used\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.recent.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_sections: recently-used\n  plugin_languages_details: bytes-size, percentage\n  plugin_languages_limit: 4\n\n```\n```yaml\nname: Indepth analysis\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.indepth.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_indepth: yes\n  plugin_languages_details: lines, bytes-size\n  plugin_languages_limit: 4\n  plugin_languages_analysis_timeout: 15\n\n```\n<!--/examples-->\n","source/plugins/leetcode/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗳️ Leetcode</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays statistics from a <a href=\"https://leetcode.com\">LeetCode</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://leetcode.com\">LeetCode</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.leetcode.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode</code></h4></td>\n    <td rowspan=\"2\"><p>Enable leetcode plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_user</code></h4></td>\n    <td rowspan=\"2\"><p>LeetCode login</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>solved</code> will display solved problems scores</li>\n<li><code>skills</code> will display solved problems tagged skills</li>\n<li><code>recent</code> will display recent submissions</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> solved<br>\n<b>allowed values:</b><ul><li>solved</li><li>skills</li><li>recent</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_limit_skills</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (skills)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 10<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_ignored_skills</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored skills</p>\n<p>It is possible to ignore entires categories by passing <code>fundamental</code>, <code>intermediate</code> or <code>advanced</code></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_limit_recent</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (recent)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 15)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: LeetCode\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.leetcode.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_leetcode: yes\n  plugin_leetcode_sections: solved, skills, recent\n\n```\n<!--/examples-->\n","source/plugins/licenses/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📜 Repository licenses</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin display repository license informations like permissions, limitations and conditions along with additional stats about dependencies.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ This is <strong>NOT</strong> legal advice, use at your own risk</p>\n</blockquote>\n<blockquote>\n<p>💣 This plugin <strong>SHOULD NOT</strong> be enabled on web instances, since it allows raw command injection.\nThis could result in compromised server!</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Permissions, limitations and conditions</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.licenses.svg\" alt=\"\"></img></details>\n      <details open><summary>Licenses overview</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.licenses.ratio.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## 🔎 Licenses analysis\n\nUse to `plugin_licenses_setup` command to setup project dependencies.\n\n*Example: setup a NodeJS project using `npm ci`*\n```yml\n- name: Licenses and permissions\n  with:\n    repo: metrics\n    plugin_licenses: yes\n    plugin_licenses_setup: npm ci\n```\n\nDependencies will be analyzed by [GitHub licensed](https://github.com/github/licensed) and compared against GitHub known licenses.\n\n> ⚠️ This is **NOT** legal advice, use at your own risk\n\n> 💣 This plugin **SHOULD NOT** be enabled on web instances, since it allows raw command injection.\n> This could result in compromised server!\n\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses</code></h4></td>\n    <td rowspan=\"2\"><p>Enable licenses plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.cpu.overuse</i></li>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n<li><i>metrics.run.licensed</i></li>\n<li><i>metrics.run.user.cmd</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses_setup</code></h4></td>\n    <td rowspan=\"2\"><p>Setup command</p>\n<blockquote>\n<p>ℹ️ Depending on the project, this may not be required.\nThe example command is intended for NodeJs projects that use <code>npm</code> to install their dependencies.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses_ratio</code></h4></td>\n    <td rowspan=\"2\"><p>Used licenses ratio</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses_legal</code></h4></td>\n    <td rowspan=\"2\"><p>Permissions, limitations and conditions about used licenses</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Licenses and permissions\nwith:\n  filename: metrics.plugin.licenses.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_licenses: yes\n  plugin_licenses_setup: bash -c '[[ -f package.json ]] && npm ci || true'\n\n```\n```yaml\nname: Licenses with open-source ratio graphs\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.licenses.ratio.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_licenses: yes\n  plugin_licenses_setup: bash -c '[[ -f package.json ]] && npm ci || true'\n  plugin_licenses_legal: no\n  plugin_licenses_ratio: yes\n\n```\n<!--/examples-->\n","source/plugins/lines/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>👨‍💻 Lines of code changed</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the number of lines of code added and removed across repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Repositories and diff history</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.lines.history.svg\" alt=\"\"></img></details>\n      <details><summary>Compact display in base plugin</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.lines.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines</code></h4></td>\n    <td rowspan=\"2\"><p>Enable lines plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>base</code> will display the total lines added and removed in <code>base.repositories</code> section</li>\n<li><code>repositories</code> will display repositories with the most lines added and removed</li>\n<li><code>history</code> will display a graph displaying lines added and removed over time</li>\n</ul>\n<blockquote>\n<p>ℹ️ <code>base</code> requires at least <a href=\"/source/plugins/base/README.md#base\"><code>base: repositories</code></a> to be set</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> base<br>\n<b>allowed values:</b><ul><li>base</li><li>repositories</li><li>history</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_repositories_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_history_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Years to display</p>\n<p>Will display the last <code>n</code> years, relative to current year</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_delay</code></h4></td>\n    <td rowspan=\"2\"><p>Delay before performing a second query</p>\n<p>When non-zero, will perform a second query after specified delay (in seconds).\nThe GitHub endpoint used may return inaccurate results on first query (these values seems to be cached on the fly),\nafter returning correct results upon performing another query.</p>\n<p>Using this option may mitigate the occurrence of weird values.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Compact display in base plugin\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.lines.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: repositories\n  plugin_lines: yes\n  plugin_lines_delay: 30\n\n```\n```yaml\nname: Repositories and diff history\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.lines.history.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_lines: yes\n  plugin_lines_delay: 30\n  plugin_lines_sections: repositories, history\n  plugin_lines_repositories_limit: 2\n  plugin_lines_history_limit: 1\n  repositories_skipped: |\n    @use.patterns\n    */*\n    +lowlighter/metrics\n\n```\n<!--/examples-->\n","source/plugins/music/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎼 Music activity and suggestions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display top and recently listened music tracks or titles from a random playlist.</p>\n<p>Different music providers are supported.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with any of the supported provider.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_music_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Random tracks from a playlist</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.playlist.svg\" alt=\"\"></img></details>\n      <details open><summary>Recently listened</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.recent.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n#### ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music</code></h4></td>\n    <td rowspan=\"2\"><p>Enable music plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_provider</code></h4></td>\n    <td rowspan=\"2\"><p>Music provider</p>\n<ul>\n<li><code>apple</code>: Apple Music</li>\n<li><code>spotify</code>: Spotify</li>\n<li><code>lastfm</code>: Last.fm</li>\n<li><code>youtube</code>: YouTube Music</li>\n</ul>\n<p>This setting is optional when using <a href=\"/source/plugins/music/README.md#plugin_music_mode\"><code>plugin_music_mode: playlist</code></a> (provider will be auto-detected from <a href=\"/source/plugins/music/README.md#plugin_music_playlist\"><code>plugin_music_playlist</code></a> URL)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>apple</li><li>spotify</li><li>lastfm</li><li>youtube</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_token</code></h4></td>\n    <td rowspan=\"2\"><p>Music provider token</p>\n<p>Below is the expected token format for each provider:</p>\n<ul>\n<li><code>apple</code>: <em>(not supported)</em></li>\n<li><code>spotify</code>: &quot;client_id, client_secret, refresh_token&quot;</li>\n<li><code>lastfm</code>: &quot;api_key&quot;</li>\n<li><code>youtube</code>: &quot;cookie&quot;</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.music.any</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_user</code></h4></td>\n    <td rowspan=\"2\"><p>Music provider username</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_mode</code></h4></td>\n    <td rowspan=\"2\"><p>Display mode</p>\n<ul>\n<li><code>playlist</code>: display random tracks from an URL playlist</li>\n<li><code>recent</code>: display recently listened tracks</li>\n<li><code>top</code>: display top listened artists/tracks</li>\n</ul>\n<p>If <a href=\"/source/plugins/music/README.md#plugin_music_playlist\"><code>plugin_music_playlist</code></a> is specified, the default value is <code>playlist</code>, else it is <code>recent</code></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>playlist</li><li>recent</li><li>top</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_playlist</code></h4></td>\n    <td rowspan=\"2\"><p>Playlist URL</p>\n<p>It must be from an &quot;embed url&quot; (i.e. music player iframes that can be integrated in other websites)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_played_at</code></h4></td>\n    <td rowspan=\"2\"><p>Recently played - Last played timestamp</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_time_range</code></h4></td>\n    <td rowspan=\"2\"><p>Top tracks - Time range</p>\n<ul>\n<li><code>short</code>: 4 weeks</li>\n<li><code>medium</code>: 6 months</li>\n<li><code>long</code>: several years</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> short<br>\n<b>allowed values:</b><ul><li>short</li><li>medium</li><li>long</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_top_type</code></h4></td>\n    <td rowspan=\"2\"><p>Top tracks - Display type</p>\n<ul>\n<li><code>tracks</code>: display track</li>\n<li><code>artists</code>: display artists</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> tracks<br>\n<b>allowed values:</b><ul><li>tracks</li><li>artists</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🎺 Configuring music provider\n\nSelect a music provider below for additional instructions.\n\n## 🎙️ Spotify\n\n### 🗝️ Obtaining a token\n\nSpotify does not have *personal tokens*, so it makes the process a bit longer because it is required to follow the [authorization workflow](https://developer.spotify.com/documentation/general/guides/authorization-guide/)... Follow the instructions below for a *TL;DR* to obtain a `refresh_token`.\n\nSign in to the [developer dashboard](https://developer.spotify.com/dashboard/) and create a new app.\nKeep your `client_id` and `client_secret` and let this tab open for now.\n\n![Add a redirect url](/.github/readme/imgs/plugin_music_recent_spotify_token_0.png)\n\nOpen the settings and add a new *Redirect url*. Normally it is used to setup callbacks for apps, but just put `https://localhost` instead (it is mandatory as per the [authorization guide](https://developer.spotify.com/documentation/general/guides/authorization-guide/), even if not used).\n\nForge the authorization url with your `client_id` and the encoded `redirect_uri` you whitelisted, and access it from your browser:\n\n```\nhttps://accounts.spotify.com/authorize?client_id=********&response_type=code&scope=user-read-recently-played%20user-top-read&redirect_uri=https%3A%2F%2Flocalhost\n```\n\nWhen prompted, authorize application.\n\n![Authorize application](/.github/readme/imgs/plugin_music_recent_spotify_token_1.png)\n\nOnce redirected to `redirect_uri`, extract the generated authorization `code` from your url bar.\n\n![Extract authorization code from url](/.github/readme/imgs/plugin_music_recent_spotify_token_2.png)\n\nGo back to developer dashboard tab, and open the web console of your browser to paste the following JavaScript code, with your own `client_id`, `client_secret`, authorization `code` and `redirect_uri`.\n\n```js\n(async () => {\n  console.log(await (await fetch(\"https://accounts.spotify.com/api/token\", {\n    method:\"POST\",\n    headers:{\"Content-Type\":\"application/x-www-form-urlencoded\"},\n    body:new URLSearchParams({\n      grant_type:\"authorization_code\",\n      redirect_uri:\"https://localhost\",\n      client_id:\"********\",\n      client_secret:\"********\",\n      code:\"********\",\n    })\n  })).json())\n})()\n```\n\nIt should return a JSON response with the following content:\n```json\n{\n  \"access_token\":\"********\",\n  \"expires_in\": 3600,\n  \"scope\":\"user-read-recently-played user-top-read\",\n  \"token_type\":\"Bearer\",\n  \"refresh_token\":\"********\"\n}\n```\n\nRegister your `client_id`, `client_secret` and `refresh_token` in secrets to finish setup.\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\nConnect to [spotify.com](https://www.spotify.com) and select the playlist you want to share.\nFrom `...` menu, select `Share` and `Copy embed code`.\n\n![Copy embed code of playlist](/.github/readme/imgs/plugin_music_playlist_spotify.png)\n\nExtract the source link from the code pasted in your clipboard:\n```html\n<iframe src=\"https://open.spotify.com/embed/playlist/********\" width=\"\" height=\"\" frameborder=\"0\" allowtransparency=\"\" allow=\"\"></iframe>\n```\n\n## 🍎 Apple Music\n\n### 🗝️ Obtaining a token\n\n*(Not available)*\n\n> 😥 Unfortunately I wasn't able to find a workaround to avoid paying the $99 fee for the developer program, even using workarounds like *smart playlists*, *shortcuts* and other stuff. However if you really want this feature, you could [sponsor me](github.com/sponsors/lowlighter) and I could eventually invest in a developer account with enough money, implement it and also eventually offer service on the shared instance\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\nConnect to [music.apple.com](https://music.apple.com/) and select the playlist you want to share.\nFrom `...` menu, select `Share` and `Copy embed code`.\n\n![Copy embed code of playlist](/.github/readme/imgs/plugin_music_playlist_apple.png)\n\nExtract the source link from the code pasted in your clipboard:\n```html\n<iframe allow=\"\" frameborder=\"\" height=\"\" style=\"\" sandbox=\"\" src=\"https://embed.music.apple.com/**/playlist/********\"></iframe>\n```\n\n## ⏯️ Youtube Music\n\n### 🗝️ Obtaining a token\n\nLogin to [YouTube Music](https://music.youtube.com) on any modern browser.\n\nOpen the developer tools (Ctrl-Shift-I) and select the “Network” tab\n\n![Open developer tools](/.github/readme/imgs/plugin_music_recent_youtube_cookie_1.png)\n\nFind an authenticated POST request. The simplest way is to filter by /browse using the search bar of the developer tools. If you don’t see the request, try scrolling down a bit or clicking on the library button in the top bar.\n\nClick on the Name of any matching request. In the “Headers” tab, scroll to the “Cookie” and copy this by right-clicking on it and selecting “Copy value”.\n\n![Copy cookie value](/.github/readme/imgs/plugin_music_recent_youtube_cookie_2.png)\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\nExtract the *playlist* URL of the playlist you want to share.\n\nConnect to [music.youtube.com](https://music.youtube.com) and select the playlist you want to share.\n\nExtract the source link from the code pasted in your clipboard:\n```\nhttps://music.youtube.com/playlist?list=********\n```\n\n## 📻 Last.fm\n\n### 🗝️ Obtaining a token\n\n[Create an API account](https://www.last.fm/api/account/create) or [use an existing one](https://www.last.fm/api/accounts) to obtain a Last.fm API key.\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\n*(Not available)*\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Apple Music - Random track from playlist\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.music.playlist.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_playlist: https://embed.music.apple.com/fr/playlist/usr-share/pl.u-V9D7m8Etjmjd0D\n  plugin_music_limit: 2\n\n```\n```yaml\nname: Spotify - Random track from playlist\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.music.playlist.spotify.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_playlist: https://open.spotify.com/embed/playlist/3nfA87oeJw4LFVcUDjRcqi\n\n```\n```yaml\nname: Spotify - Recently listed\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.music.recent.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_provider: spotify\n  plugin_music_mode: recent\n  plugin_music_token: ${{ secrets.SPOTIFY_TOKENS }}\n  plugin_music_limit: 2\n\n```\n```yaml\nname: Spotify - Top tracks\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_mode: top\n  plugin_music_provider: spotify\n  plugin_music_token: ${{ secrets.SPOTIFY_TOKENS }}\n  plugin_music_time_range: short\n  plugin_music_top_type: tracks\n\n```\n```yaml\nname: Spotify - Top artists\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_mode: top\n  plugin_music_provider: spotify\n  plugin_music_token: ${{ secrets.SPOTIFY_TOKENS }}\n  plugin_music_time_range: long\n  plugin_music_top_type: artists\n\n```\n```yaml\nname: Youtube Music - Random track from playlist\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_playlist: >-\n    https://music.youtube.com/playlist?list=OLAK5uy_kU_uxp9TUOl9zVdw77xith8o9AknVwz9U\n\n```\n```yaml\nname: Youtube Music - Recently listed\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music_token: ${{ secrets.YOUTUBE_MUSIC_TOKENS }}\n  plugin_music: yes\n  plugin_music_mode: recent\n  plugin_music_provider: youtube\n\n```\n```yaml\nname: Last.fm  - Recently listed\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music_token: ${{ secrets.LASTFM_TOKEN }}\n  plugin_music: yes\n  plugin_music_provider: lastfm\n  plugin_music_user: RJ\n\n```\n<!--/examples-->\n","source/plugins/notable/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎩 Notable contributions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays badges for notable contributions on repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Indepth analysis</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.notable.indepth.svg\" alt=\"\"></img></details>\n      <details><summary>Contributions in organizations only</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.notable.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable</code></h4></td>\n    <td rowspan=\"2\"><p>Enable notable plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_filter</code></h4></td>\n    <td rowspan=\"2\"><p>Query filter</p>\n<p>Based on <a href=\"https://docs.github.com/en/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax\">GitHub search syntax</a>.\nSupported fields are <code>stars</code>, <code>forks</code> and <code>watchers</code></p>\n<p>If <a href=\"/source/plugins/notable/README.md#plugin_notable_indepth\"><code>plugin_notable_indepth</code></a> is enabled, <code>commits</code>, <code>commits.user</code>, <code>commits.user%</code> and <code>maintainer</code> fields are also supported.\nSome repositories may not be able to reported advanced stats and in the case the default behaviour will be to bypass filtering</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_from</code></h4></td>\n    <td rowspan=\"2\"><p>Repository owner account type filter</p>\n<ul>\n<li><code>all</code>: no filtering</li>\n<li><code>organization</code>: only organization accounts repositories</li>\n<li><code>user</code>: only user accounts repositories</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> organization<br>\n<b>allowed values:</b><ul><li>all</li><li>organization</li><li>user</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Repository name</p>\n<p>Repositories hosted by user account will always have their full handle displayed</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_types</code></h4></td>\n    <td rowspan=\"2\"><p>Contribution types filter</p>\n<p>Use a combination of below values to include repositories where:</p>\n<ul>\n<li><code>commit</code>: a commit on default branch was made</li>\n<li><code>pull_request</code>: a pull request was opened</li>\n<li><code>issue</code>: an issue was opened</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> commit<br>\n<b>allowed values:</b><ul><li>commit</li><li>pull_request</li><li>issue</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_self</code></h4></td>\n    <td rowspan=\"2\"><p>Include own repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔎 `indepth` mode\n\nThe `plugin_notable_indepth` option collects additional stats about your contributions, such as:\n- Total number of commits within a repository or organization.\n\nFor each of the above, a badge is awarded. Its color and progress depends of the associated value.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Contributions\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.notable.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_notable: yes\n\n```\n```yaml\nname: Indepth analysis\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.notable.indepth.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_notable: yes\n  plugin_notable_indepth: yes\n  plugin_notable_repositories: yes\n\n```\n<!--/examples-->\n","source/plugins/pagespeed/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>⏱️ Google PageSpeed</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays performance statistics of a website.</p>\n<p>It uses <a href=\"https://developers.google.com/speed/docs/insights/v5/get-started\">Google&#39;s PageSpeed API</a> (same as <a href=\"https://web.dev\">web.dev</a>), see <a href=\"https://web.dev/performance-scoring/\">performance scoring</a> and <a href=\"https://googlechrome.github.io/lighthouse/scorecalc/\">score calculator</a> for more informations about results.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://pagespeed.web.dev/\">Google PageSpeed</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_pagespeed_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>PageSpeed scores</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.pagespeed.svg\" alt=\"\"></img></details>\n      <details><summary>PageSpeed scores with detailed report</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.pagespeed.detailed.svg\" alt=\"\"></img></details>\n      <details><summary>PageSpeed scores with a website screenshot</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.pagespeed.screenshot.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed</code></h4></td>\n    <td rowspan=\"2\"><p>Enable pagespeed plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_token</code></h4></td>\n    <td rowspan=\"2\"><p>PageSpeed token</p>\n<blockquote>\n<p>⚠️ While not mandatory, it is strongly advised pass a token to avoid triggering the rate limiter. See <a href=\"https://developers.google.com/speed/docs/insights/v5/get-started\">PageSpeed documentation</a> for more informations.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.google.pagespeed</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_url</code></h4></td>\n    <td rowspan=\"2\"><p>Audited website</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User attached website</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_detailed</code></h4></td>\n    <td rowspan=\"2\"><p>Detailed results</p>\n<p>The following additional stats will be displayed:</p>\n<ul>\n<li>First Contentful Paint</li>\n<li>Speed Index</li>\n<li>Largest Contentful Paint</li>\n<li>Time to Interactive</li>\n<li>Total Blocking Time</li>\n<li>Cumulative Layout Shift</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_screenshot</code></h4></td>\n    <td rowspan=\"2\"><p>Website screenshot</p>\n<p>Significantly increase filesize</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_pwa</code></h4></td>\n    <td rowspan=\"2\"><p>PWA Status</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Succinct report\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.pagespeed.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_pagespeed: yes\n  plugin_pagespeed_token: ${{ secrets.PAGESPEED_TOKEN }}\n  plugin_pagespeed_url: https://lecoq.io\n\n```\n```yaml\nname: Detailed report\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.pagespeed.detailed.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_pagespeed: yes\n  plugin_pagespeed_detailed: yes\n  plugin_pagespeed_token: ${{ secrets.PAGESPEED_TOKEN }}\n  plugin_pagespeed_url: https://lecoq.io\n\n```\n```yaml\nname: Screenshot\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.pagespeed.screenshot.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_pagespeed: yes\n  plugin_pagespeed_screenshot: yes\n  plugin_pagespeed_token: ${{ secrets.PAGESPEED_TOKEN }}\n  plugin_pagespeed_url: https://lecoq.io\n\n```\n```yaml\nname: Succinct report with PWA\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.pagespeed.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_pagespeed: yes\n  plugin_pagespeed_token: ${{ secrets.PAGESPEED_TOKEN }}\n  plugin_pagespeed_url: https://lecoq.io\n  plugin_pagespeed_pwa: yes\n\n```\n<!--/examples-->\n","source/plugins/people/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧑‍🤝‍🧑 People</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display relationships with users, such as followers, sponsors, contributors, stargazers, watchers, members, etc.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Related to a user</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.people.followers.svg\" alt=\"\"></img></details>\n      <details><summary>Related to a repository</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.people.repository.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people</code></h4></td>\n    <td rowspan=\"2\"><p>Enable people plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 24<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_identicons</code></h4></td>\n    <td rowspan=\"2\"><p>Force identicons pictures</p>\n<p>Can be used to mask profile pictures for privacy</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_identicons_hide</code></h4></td>\n    <td rowspan=\"2\"><p>Hide identicons pictures</p>\n<p>Can be used to mask users without a personal profile picture.</p>\n<p>When used with <a href=\"/source/plugins/people/README.md#plugin_people_identicons\"><code>plugin_people_identicons</code></a>, users without a personal profile picture will still be filtered out, but their picture will be replaced by an identicon instead</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_size</code></h4></td>\n    <td rowspan=\"2\"><p>Profile picture display size</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(8 ≤\n𝑥\n≤ 64)</i>\n<br>\n<b>default:</b> 28<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_types</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<p>User and organization accounts support the following values:</p>\n<ul>\n<li><code>followers</code></li>\n<li><code>following</code>/<code>followed</code></li>\n<li><code>sponsoring</code>/<code>sponsored</code></li>\n<li><code>sponsors</code></li>\n<li><code>members</code> (organization only)</li>\n<li><code>thanks</code>(to be configured with <a href=\"/source/plugins/people/README.md#plugin_people_thanks\"><code>plugin_people_thanks</code></a>)</li>\n</ul>\n<p>Repositories support the following values:</p>\n<ul>\n<li><code>sponsors</code> (same as owner sponsors)</li>\n<li><code>contributors</code></li>\n<li><code>stargazers</code></li>\n<li><code>watchers</code></li>\n<li><code>thanks</code>(to be configured with <a href=\"/source/plugins/people/README.md#plugin_people_thanks\"><code>plugin_people_thanks</code></a>)</li>\n</ul>\n<p>Specified order is honored</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> followers, following<br>\n<b>allowed values:</b><ul><li>followers</li><li>following</li><li>followed</li><li>sponsoring</li><li>members</li><li>sponsored</li><li>sponsors</li><li>contributors</li><li>stargazers</li><li>watchers</li><li>thanks</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_thanks</code></h4></td>\n    <td rowspan=\"2\"><p>Special thanks</p>\n<p>Can be used to thank specific users</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_sponsors_custom</code></h4></td>\n    <td rowspan=\"2\"><p>Custom sponsors</p>\n<p>This list can be used to add users from unsupported GitHub sponsors sources.\nThe option <a href=\"/source/plugins/people/README.md#plugin_people_types\"><code>plugin_people_types</code></a> must contain the <code>sponsors</code> section in order for this setting to be effective</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_shuffle</code></h4></td>\n    <td rowspan=\"2\"><p>Shuffle data</p>\n<p>Can be used to create varied outputs\nThis will fetch additional data (10 times <a href=\"/source/plugins/people/README.md#plugin_people_limit\"><code>plugin_people_limit</code></a>) to ensure output is always different</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Followers\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.people.followers.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_people: yes\n  plugin_people_types: followers\n\n```\n```yaml\nname: Contributors and sponsors\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.people.repository.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_people: yes\n  plugin_people_types: contributors, stargazers, watchers, sponsors\n\n```\n<!--/examples-->\n","source/plugins/posts/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>✒️ Recent posts</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays recent articles from a specified and supported external source.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Latest posts width description and cover image</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.posts.full.svg\" alt=\"\"></img></details>\n      <details><summary>Latest posts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.posts.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts</code></h4></td>\n    <td rowspan=\"2\"><p>Enable posts plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_source</code></h4></td>\n    <td rowspan=\"2\"><p>External source</p>\n<ul>\n<li><code>dev.to</code>: <a href=\"https://dev.to\">dev.to</a></li>\n<li><code>hashnode</code>: <a href=\"https://hashnode.com\">hashnode.com</a></li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>dev.to</li><li>hashnode</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_user</code></h4></td>\n    <td rowspan=\"2\"><p>External source username</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_descriptions</code></h4></td>\n    <td rowspan=\"2\"><p>Posts descriptions</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_covers</code></h4></td>\n    <td rowspan=\"2\"><p>Posts cover images</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recent posts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.posts.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_posts: yes\n  plugin_posts_source: dev.to\n\n```\n```yaml\nname: Recent posts with descriptions and cover images\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.posts.full.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_posts: yes\n  plugin_posts_source: dev.to\n  plugin_posts_limit: 2\n  plugin_posts_descriptions: yes\n  plugin_posts_covers: yes\n\n```\n<!--/examples-->\n","source/plugins/projects/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗂️ GitHub projects</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays progress of profile and repository projects.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>🔑 public_repo</code> <code>🔑 read:project</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.projects.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_projects</code></h4></td>\n    <td rowspan=\"2\"><p>Enable projects plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_projects_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<p>Projects defined by <a href=\"/source/plugins/projects/README.md#plugin_projects_repositories\"><code>plugin_projects_repositories</code></a> are not affected by this option</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_projects_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Featured repositories projects</p>\n<p>Use the following syntax for each project <code>:user/:repo/projects/:project_id</code></p>\n<blockquote>\n<p>ℹ️ <a href=\"https://docs.github.com/en/issues/trying-out-the-new-projects-experience/about-projects\">GitHub projects (beta)</a> needs to use the same syntax as above and repository must specified repository must be linked to given project.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_projects_descriptions</code></h4></td>\n    <td rowspan=\"2\"><p>Projects descriptions</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔄 Enabling progress tracking\n\nBy default, projects have progress tracking disabled.\n\nTo enable it, open the `≡ Menu` from the project page and opt-in to `Track project progress`.\n\n![Enable \"Track project progress\"](/.github/readme/imgs/plugin_projects_track_progress.png)\n\n## 👤 Use personal projects\n\nTo create a personal project, select the `Projects` tab from your profile:\n![Create a new project](/.github/readme/imgs/plugin_projects_create.png)\n\nFill informations and set visibility to *public*:\n![Configure project](/.github/readme/imgs/plugin_projects_setup.png)\n\n## 📓 Use repositories projects\n\nRepositories projects are created from the `Projects` tab of a repository.\n\nTo use it with this plugin, retrieve the last section of the project URL (it should match the format `:user/:repository/projects/:project_id`) and add it in the `plugin_projects_repositories`.\n\nBe sure to tick `Track project progress` in project settings to display a progress bar.\n\n![Add a repository project](/.github/readme/imgs/plugin_projects_repositories.png)\n\n*Example: include a project repository*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_projects: yes\n    plugin_projects_repositories: lowlighter/metrics/projects/1\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Project from a repository\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.projects.svg\n  token: ${{ secrets.METRICS_TOKEN_WITH_SCOPES }}\n  base: \"\"\n  plugin_projects: yes\n  plugin_projects_repositories: lowlighter/metrics/projects/1\n  plugin_projects_descriptions: yes\n\n```\n<!--/examples-->\n","source/plugins/reactions/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎭 Comment reactions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays overall user reactions on recent issues, comments and discussions.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.reactions.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions</code></h4></td>\n    <td rowspan=\"2\"><p>Enable reactions plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (issues and pull requests comments)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_limit_issues</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (issues and pull requests, first comment)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_limit_discussions</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (discussions, first comment)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_limit_discussions_comments</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (discussions comments)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_days</code></h4></td>\n    <td rowspan=\"2\"><p>Comments maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_display</code></h4></td>\n    <td rowspan=\"2\"><p>Display mode</p>\n<ul>\n<li><code>absolute</code>: scale percentages using total reactions count</li>\n<li><code>relative</code>: scale percentages using highest reaction count</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> absolute<br>\n<b>allowed values:</b><ul><li>absolute</li><li>relative</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_details</code></h4></td>\n    <td rowspan=\"2\"><p>Additional details</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>count</li><li>percentage</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored users</p>\n<p>Can be used to ignore bots activity</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>users_ignored</code><br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Comment reactions\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.reactions.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_reactions: yes\n  plugin_reactions_limit: 100\n  plugin_reactions_details: percentage\n\n```\n<!--/examples-->\n","source/plugins/repositories/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📓 Featured repositories</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays a list of chosen featured repositories.</p>\n<p>Since it is possible to <a href=\"https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/pinning-items-to-your-profile\">pin repositories</a> on GitHub, this plugin is mostly intended for external usage.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ Due to limitations of using SVG images inside <code>&lt;img&gt;</code> tags, clicking on a repository card will not redirect to repository page.</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Featured</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.repositories.svg\" alt=\"\"></img></details>\n      <details><summary>Pinned</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.repositories.pinned.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Enable repositories plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_featured</code></h4></td>\n    <td rowspan=\"2\"><p>Featured repositories</p>\n<p>Current <a href=\"/source/plugins/core/README.md#user\"><code>user</code></a> will be used when no owner is specified</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_pinned</code></h4></td>\n    <td rowspan=\"2\"><p>Pinned repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 6)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_starred</code></h4></td>\n    <td rowspan=\"2\"><p>Featured most starred repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_random</code></h4></td>\n    <td rowspan=\"2\"><p>Featured random repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_order</code></h4></td>\n    <td rowspan=\"2\"><p>Featured repositories display order</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<br>\n<b>default:</b> featured, pinned, starred, random<br>\n<b>allowed values:</b><ul><li>featured</li><li>pinned</li><li>starred</li><li>random</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_forks</code></h4></td>\n    <td rowspan=\"2\"><p>Include repositories forks</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_affiliations</code></h4></td>\n    <td rowspan=\"2\"><p>Repositories affiliations</p>\n<ul>\n<li><code>owner</code>: owned repositories</li>\n<li><code>collaborator</code>: repositories with push access</li>\n<li><code>organization_member</code>: repositories from an organization where user is a member</li>\n</ul>\n<p>Set to <code>&quot;&quot;</code> to disable and fetch all repositories related to given account.</p>\n<p>This option changes which repositories will be fetched by <a href=\"/source/plugins/projects/README.md#plugin_repositories_starred\"><code>plugin_repositories_starred</code></a> and <a href=\"/source/plugins/projects/README.md#plugin_repositories_random\"><code>plugin_repositories_random</code></a> options</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> owner<br>\n<b>allowed values:</b><ul><li>owner</li><li>collaborator</li><li>organization_member</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Featured repositories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.repositories.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_repositories: yes\n  plugin_repositories_featured: lowlighter/metrics\n\n```\n```yaml\nname: Pinned repositories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.repositories.pinned.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_repositories: yes\n  plugin_repositories_pinned: 2\n\n```\n<!--/examples-->\n","source/plugins/rss/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗼 Rss feed</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays news from a given RSS feed.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.rss.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_rss</code></h4></td>\n    <td rowspan=\"2\"><p>Enable rss plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_rss_source</code></h4></td>\n    <td rowspan=\"2\"><p>RSS feed source</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_rss_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 4<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: News from hackernews\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.rss.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_rss: yes\n  plugin_rss_source: https://news.ycombinator.com/rss\n  plugin_rss_limit: 4\n\n```\n<!--/examples-->\n","source/plugins/skyline/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🌇 GitHub Skyline</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the 3D commits calendar from <a href=\"https://skyline.github.com/\">skyline.github.com</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ This plugin significantly increase file size, consider using it as standalone.</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>GitHub Skyline</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.skyline.svg\" alt=\"\"></img></details>\n      <details><summary>GitHub City</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.skyline.city.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline</code></h4></td>\n    <td rowspan=\"2\"><p>Enable skyline plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.cpu.overuse</i></li>\n<li><i>metrics.npm.optional.gifencoder</i></li>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_year</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed year</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(2008 ≤\n𝑥)</i>\n<br>\n<b>default:</b> current-year<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_frames</code></h4></td>\n    <td rowspan=\"2\"><p>Frames count</p>\n<p>Use 120 for a full-loop and 60 for a half-loop.\nA higher number of frames will increase file size.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 120)</i>\n<br>\n<b>default:</b> 60<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_quality</code></h4></td>\n    <td rowspan=\"2\"><p>Image quality</p>\n<p>A higher image quality will increase file size.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0.1 ≤\n𝑥\n≤ 1)</i>\n<br>\n<b>default:</b> 0.5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_compatibility</code></h4></td>\n    <td rowspan=\"2\"><p>Compatibility mode</p>\n<p>This uses CSS animations rather than embedded GIF to support a wider range of browsers, like Firefox and Safari.\nUsing this mode significantly increase file size as each frame is encoded separately</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_settings</code></h4></td>\n    <td rowspan=\"2\"><p>Advanced settings</p>\n<p>Can be configured to use alternate skyline websites different from <a href=\"https://skyline.github.com\">skyline.github.com</a>, such as <a href=\"https://github.com/honzaap/GithubCity\">honzaap&#39;s GitHub City</a>.</p>\n<ul>\n<li><code>url</code>: Target URL (mandatory)</li>\n<li><code>ready</code>: Readiness condition (A JS function that returns a boolean)</li>\n<li><code>wait</code>: Time to wait after readiness condition is met (in seconds)</li>\n<li><code>hide</code>: HTML elements to hide (A CSS selector)</li>\n</ul>\n<p>For <code>url</code> and <code>ready</code> options, <code>${login}</code> and <code>${year}</code> will be respectively templated to user&#39;s login and specified year</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.user.js</i></li>\n</ul>\n<b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"url\": \"https://skyline.github.com/${login}/${year}\",\n  \"ready\": \"[...document.querySelectorAll('span')].map(span => span.innerText).includes('Share on Twitter')\",\n  \"wait\": 1,\n  \"hide\": \"button, footer, a\"\n}\n</code></pre></details><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: GitHub Skyline\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.skyline.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_skyline: yes\n  plugin_skyline_year: 2020\n  plugin_skyline_frames: 6\n  plugin_skyline_quality: 1\n\n```\n```yaml\nname: GitHub City\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.skyline.city.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_skyline: yes\n  plugin_skyline_year: 2020\n  plugin_skyline_frames: 6\n  plugin_skyline_quality: 1\n  plugin_skyline_settings: |\n    {\n      \"url\": \"https://honzaap.github.io/GithubCity?name=${login}&year=${year}\",\n      \"ready\": \"[...document.querySelectorAll('.display-info span')].map(span => span.innerText).includes('${login}')\",\n      \"wait\": 4,\n      \"hide\": \".github-corner, .footer-link, .buttons-options, .mobile-rotate, .display-info span:first-child\"\n    }\n\n```\n<!--/examples-->\n","source/plugins/sponsors/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💕 GitHub Sponsors</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays sponsors and introduction text from <a href=\"https://github.com/sponsors/\">GitHub sponsors</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 read:user</code> <code>🔑 read:org</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>GitHub sponsors card</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.sponsors.svg\" alt=\"\"></img></details>\n      <details><summary>GitHub sponsors full introduction</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.sponsors.full.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors</code></h4></td>\n    <td rowspan=\"2\"><p>Enable sponsors plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>goal</code>: display GitHub active goal</li>\n<li><code>about</code>: display GitHub sponsors introduction</li>\n<li><code>list</code>: display GitHub sponsors list</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> goal, list, about<br>\n<b>allowed values:</b><ul><li>goal</li><li>about</li><li>list</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors_past</code></h4></td>\n    <td rowspan=\"2\"><p>Past sponsorships</p>\n<p>A <a href=\"/source/plugins/core/README.md#token\"><code>token</code></a> from target <a href=\"/source/plugins/core/README.md#user\"><code>user</code></a> must be specified to use this feature, as past sponsorships are gathered from sponsors activity which is private data.</p>\n<blockquote>\n<p>⚠️ Past sponsorships does not respect sponsors privacy because of current GitHub API limitations. This may be fixed in a future release.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors_size</code></h4></td>\n    <td rowspan=\"2\"><p>Profile picture display size</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(8 ≤\n𝑥\n≤ 64)</i>\n<br>\n<b>default:</b> 24<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors_title</code></h4></td>\n    <td rowspan=\"2\"><p>Title caption</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> Sponsor Me!<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Sponsors goal\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.sponsors.svg\n  token: ${{ secrets.METRICS_TOKEN_PERSONAL }}\n  base: \"\"\n  plugin_sponsors: yes\n  plugin_sponsors_sections: goal, list\n  plugin_sponsors_past: yes\n\n```\n```yaml\nname: Sponsors introduction\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.sponsors.full.svg\n  token: ${{ secrets.METRICS_TOKEN_WITH_SCOPES }}\n  base: \"\"\n  plugin_sponsors: yes\n\n```\n<!--/examples-->\n","source/plugins/sponsorships/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💝 GitHub Sponsorships</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays sponsorships funded through <a href=\"https://github.com/sponsors/\">GitHub sponsors</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 read:user</code> <code>🔑 read:org</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.sponsorships.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsorships</code></h4></td>\n    <td rowspan=\"2\"><p>Enable sponsorships plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsorships_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>amount</code>: display total amount sponsored</li>\n<li><code>sponsorships</code>: display GitHub sponsorships</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> amount, sponsorships<br>\n<b>allowed values:</b><ul><li>amount</li><li>sponsorships</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsorships_size</code></h4></td>\n    <td rowspan=\"2\"><p>Profile picture display size</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(8 ≤\n𝑥\n≤ 64)</i>\n<br>\n<b>default:</b> 24<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: 💝 GitHub Sponsorships\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.sponsorships.svg\n  token: ${{ secrets.METRICS_TOKEN_PERSONAL }}\n  base: \"\"\n  plugin_sponsorships: yes\n\n```\n<!--/examples-->\n","source/plugins/stackoverflow/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗨️ Stack Overflow</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays stats, questions and answer from <a href=\"https://stackoverflow.com/\">Stack Overflow</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://stackoverflow.com/\">Stack Overflow</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stackoverflow.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stackoverflow plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_user</code></h4></td>\n    <td rowspan=\"2\"><p>Stackoverflow user id</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>number</code>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>answers-top</code>: display most popular answers</li>\n<li><code>answers-recent</code>: display recent answers</li>\n<li><code>questions-top</code>: display most popular questions</li>\n<li><code>questions-recent</code>: display recent questions</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> answers-top, questions-recent<br>\n<b>allowed values:</b><ul><li>answers-top</li><li>answers-recent</li><li>questions-top</li><li>questions-recent</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (entries per section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_lines</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (lines per questions and answers)</p>\n<p>Code snippets count as a single line and must be configured with <a href=\"/source/plugins/stackoverflow/README.md#plugin_stackoverflow_lines_snippet\"><code>plugin_stackoverflow_lines_snippet</code></a> instead</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_lines_snippet</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (lines per code snippets)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Top answers from stackoverflow\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stackoverflow.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_stackoverflow: yes\n  plugin_stackoverflow_user: 1\n  plugin_stackoverflow_sections: answers-top\n  plugin_stackoverflow_limit: 2\n\n```\n<!--/examples-->\n","source/plugins/stargazers/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>✨ Stargazers</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays stargazers evolution across affiliated repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>🗝️ plugin_stargazers_worldmap_token</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Classic charts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stargazers.svg\" alt=\"\"></img></details>\n      <details><summary>Graph charts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stargazers.graph.svg\" alt=\"\"></img></details>\n      <details open><summary>Worldmap</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stargazers.worldmap.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## 🗝️ Obtaining a Google Maps API token\n\nSome features like `plugin_stagazers_worldmap` require a Google Geocoding API token.\nFollow instructions from their [documentation](https://developers.google.com/maps/documentation/geocoding/get-api-key) for more informations.\n\n> 💳 A billing account is required to get a token. However a recurring [monthly credit](https://developers.google.com/maps/billing-credits#monthly) is offered which means you should not be charged if you don't exceed the free quota.\n>\n> It is advised to set the quota limit at 1200 requests per day\n>\n> Use at your own risk, *metrics* and its authors cannot be held responsible for anything charged.\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stargazers plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_days</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<p>If set to <code>0</code> the account registration date will be used.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> see description</br>\n<b>default:</b> 14<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_charts</code></h4></td>\n    <td rowspan=\"2\"><p>Charts</p>\n<p>It includes total number of stargazers evolution, along with the number of new stars per day over the last two weeks.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_charts_type</code></h4></td>\n    <td rowspan=\"2\"><p>Charts display type</p>\n<ul>\n<li><code>classic</code>: <code>&lt;div&gt;</code> based charts, simple and lightweight</li>\n<li><code>graph</code>: <code>&lt;svg&gt;</code> based charts, smooth</li>\n</ul>\n<blockquote>\n<p>⚠️ <code>chartist</code> option has been deprecated and is now equivalent to <code>graph</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.d3</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> classic<br>\n<b>allowed values:</b><ul><li>classic</li><li>graph</li><li>chartist</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_worldmap</code></h4></td>\n    <td rowspan=\"2\"><p>Stargazers worldmap</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.google.maps</i></li>\n<li><i>metrics.npm.optional.d3</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_worldmap_token</code></h4></td>\n    <td rowspan=\"2\"><p>Stargazers worldmap token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_worldmap_sample</code></h4></td>\n    <td rowspan=\"2\"><p>Stargazers worldmap sample</p>\n<p>Use this setting to randomly sample and limit your stargazers.\nHelps to avoid consuming too much Google Geocoding API requests while still being representative.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Using classic charts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stargazers.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_stargazers: yes\n\n```\n```yaml\nname: Using graph charts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stargazers.graph.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_stargazers: yes\n  plugin_stargazers_charts_type: graph\n\n```\n```yaml\nname: With worldmap\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stargazers.worldmap.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_stargazers: yes\n  plugin_stargazers_charts: no\n  plugin_stargazers_worldmap: yes\n  plugin_stargazers_worldmap_token: ${{ secrets.GOOGLE_MAP_TOKEN }}\n  plugin_stargazers_worldmap_sample: 200\n\n```\n<!--/examples-->\n","source/plugins/starlists/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💫 Star lists</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays star lists.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Repositories from star lists</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.starlists.svg\" alt=\"\"></img></details>\n      <details open><summary>Languages from star lists</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.starlists.languages.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists</code></h4></td>\n    <td rowspan=\"2\"><p>Enable starlists plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (star lists)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_limit_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (repositories per star list)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Star lists languages statistics</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_limit_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (languages per star list)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 8<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_languages_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored languages in star lists</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_languages_aliases</code></h4></td>\n    <td rowspan=\"2\"><p>Custom languages names in star lists</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_shuffle_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Shuffle data</p>\n<p>Can be used to create varied outputs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped star lists</p>\n<p>Case and emojis insensitive</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_only</code></h4></td>\n    <td rowspan=\"2\"><p>Showcased star lists</p>\n<p>Case and emojis insensitive.</p>\n<p>Equivalent to <a href=\"/source/plugins/starlists/README.md#plugin_starlists_ignored\"><code>plugin_starlists_ignored</code></a> with all star lists except the ones listed in this option</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Featured star list\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.starlists.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_starlists: yes\n  plugin_starlists_limit_repositories: 2\n  plugin_starlists_only: TC39\n\n```\n```yaml\nname: Featured star list languages\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.starlists.languages.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_starlists: yes\n  plugin_starlists_languages: yes\n  plugin_starlists_limit_languages: 8\n  plugin_starlists_limit_repositories: 0\n  plugin_starlists_only: Awesome\n\n```\n<!--/examples-->\n","source/plugins/stars/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🌟 Recently starred repositories</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays recently starred repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stars.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stars</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stars plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stars_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recently starred\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stars.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_stars: yes\n  plugin_stars_limit: 3\n\n```\n<!--/examples-->\n","source/plugins/steam/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🕹️ Steam</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display your player profile and played games from your Steam account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://store.steampowered.com\">Steam</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_steam_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Recently played games</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.steam.svg\" alt=\"\"></img></details>\n      <details><summary>Profile and detailed game history</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.steam.full.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam</code></h4></td>\n    <td rowspan=\"2\"><p>Enable steam plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_token</code></h4></td>\n    <td rowspan=\"2\"><p>Steam token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.steam</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>player</code>: display profile</li>\n<li><code>most-played</code>: display most played games</li>\n<li><code>recently-played</code>: display recently played games</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> player, most-played, recently-played<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_user</code></h4></td>\n    <td rowspan=\"2\"><p>Steam user id</p>\n<p>This can be found on your Steam user account details</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_games_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored games</p>\n<p>Use App id as they are referenced in Steam catalog</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_games_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Most played games)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_recent_games_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Recently played games)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_achievements_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Games achievements)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_playtime_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Display threshold (Game playtime in hours)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a *Steam Web API* token\n\nGo to [steamcommunity.com/dev/apikey](https://steamcommunity.com/dev/apikey) to obtain a Steam Web API token:\n\n![Token](/.github/readme/imgs/plugin_steam_webtoken.png)\n\nTo retrieve your Steam ID, access your user account on [store.steampowered.com/account](https://store.steampowered.com/account) and copy the identifier located behind the header:\n\n![User ID](/.github/readme/imgs/plugin_steam_userid.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recently played games\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.steam.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_steam_token: ${{ secrets.STEAM_TOKEN }}\n  plugin_steam: yes\n  plugin_steam_user: \"0\"\n  plugin_steam_sections: recently-played\n  plugin_steam_achievements_limit: 0\n\n```\n```yaml\nname: Profile and detailed game history\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.steam.full.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_steam_token: ${{ secrets.STEAM_TOKEN }}\n  plugin_steam: yes\n  plugin_steam_user: \"0\"\n\n```\n<!--/examples-->\n","source/plugins/support/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💭 GitHub Community Support</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays statistics from a <a href=\"https://github.community/\">GitHub Support Community</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Deprecated</th><td><p>GitHub Support Community has been moved to <a href=\"https://github.blog/2022-07-26-launching-github-community-powered-by-github-discussions\">GitHub Discussions</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.support.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_support</code></h4></td>\n    <td rowspan=\"2\"><p>Enable support plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: GitHub Community Support\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.support.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_support: yes\n\n```\n<!--/examples-->\n","source/plugins/topics/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📌 Starred topics</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays <a href=\"https://github.com/stars?filter=topics\">starred topics</a>.</p>\n<p>Check out <a href=\"https://github.com/topics\">GitHub topics</a> to search interesting topics.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>With icons</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.topics.icons.svg\" alt=\"\"></img></details>\n      <details open><summary>With labels</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.topics.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_topics</code></h4></td>\n    <td rowspan=\"2\"><p>Enable topics plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_topics_mode</code></h4></td>\n    <td rowspan=\"2\"><p>Display mode</p>\n<ul>\n<li><code>labels</code>: display labels</li>\n<li><code>icons</code>: display icons <em>(topics without icons will not be displayed)</em></li>\n<li><code>starred</code>: alias for <code>labels</code></li>\n<li><code>mastered</code>: alias for <code>icons</code></li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> starred<br>\n<b>allowed values:</b><ul><li>labels</li><li>icons</li><li>starred</li><li>mastered</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_topics_sort</code></h4></td>\n    <td rowspan=\"2\"><p>Sorting method</p>\n<ul>\n<li><code>stars</code>: sort by most stars</li>\n<li><code>activity</code>: sort by recent activity</li>\n<li><code>starred</code>: sort by starred date</li>\n<li><code>random</code>: sort randomly</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> stars<br>\n<b>allowed values:</b><ul><li>stars</li><li>activity</li><li>starred</li><li>random</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_topics_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 20)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 15<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Labels\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.topics.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_topics: yes\n  plugin_topics_limit: 12\n\n```\n```yaml\nname: Icons\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.topics.icons.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_topics: yes\n  plugin_topics_limit: 0\n  plugin_topics_mode: icons\n\n```\n<!--/examples-->\n","source/plugins/traffic/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧮 Repositories traffic</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the number of page views across affiliated repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 repo</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.traffic.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_traffic</code></h4></td>\n    <td rowspan=\"2\"><p>Enable traffic plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_traffic_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Repositories traffic\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.traffic.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: repositories\n  plugin_traffic: yes\n\n```\n<!--/examples-->\n","source/plugins/tweets/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🐤 Latest tweets</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the latest tweets from a <a href=\"https://twitter.com\">Twitter</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Deprecated</th><td><p>As <a href=\"https://twitter.com\">Twitter</a> removed the ability to fetch tweets from their free API as part of their new <a href=\"https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api\">pricing policy</a>, this plugin is no longer maintained.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://twitter.com\">Twitter</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_tweets_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Latest tweets with attachments</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.tweets.attachments.svg\" alt=\"\"></img></details>\n      <details><summary>Latest tweets</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.tweets.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets</code></h4></td>\n    <td rowspan=\"2\"><p>Enable tweets plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.twitter.tweets</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets_token</code></h4></td>\n    <td rowspan=\"2\"><p>Twitter API token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets_user</code></h4></td>\n    <td rowspan=\"2\"><p>Twitter username</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User attached twitter</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets_attachments</code></h4></td>\n    <td rowspan=\"2\"><p>Tweets attachments</p>\n<p>Can be used to display linked images, video thumbnails, etc.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 10)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a Twitter token\n\nTo get a Twitter token, it is required to apply to the [developer program](https://apps.twitter.com).\nIt's a bit tedious, but requests seems to be approved quite quickly.\n\nCreate an app from the [developer dashboard](https://developer.twitter.com/en/portal/dashboard) and register your bearer token in repository secrets.\n\n![Twitter token](/.github/readme/imgs/plugin_tweets_secrets.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Latest tweets\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.tweets.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_tweets: yes\n  plugin_tweets_token: ${{ secrets.TWITTER_TOKEN }}\n  plugin_tweets_user: github\n\n```\n```yaml\nname: Latest tweets including attachments\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.tweets.attachments.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_tweets: yes\n  plugin_tweets_token: ${{ secrets.TWITTER_TOKEN }}\n  plugin_tweets_attachments: yes\n  plugin_tweets_user: github\n  plugin_tweets_limit: 1\n\n```\n<!--/examples-->\n","source/plugins/wakatime/README.md":"<!-- Skill available on-demand via /api/skills/lowlighter/metrics?path=source%2Fplugins%2Fwakatime%2FREADME.md -->"},"files":{"source/plugins/README.md":"## 🧩 Plugins\n\nPlugins provide additional content and lets you customize rendered metrics.\n\n**📦 Maintained by core team**\n\n* **Core plugins**\n  * [🗃️ Base content <sub>`base`</sub>](/source/plugins/base/README.md)\n  * [🧱 Core <sub>`core`</sub>](/source/plugins/core/README.md)\n* **GitHub plugins**\n  * [🏆 Achievements <sub>`achievements`</sub>](/source/plugins/achievements/README.md)\n  * [📰 Recent activity <sub>`activity`</sub>](/source/plugins/activity/README.md)\n  * [📆 Commit calendar <sub>`calendar`</sub>](/source/plugins/calendar/README.md)\n  * [♐ Random code snippet <sub>`code`</sub>](/source/plugins/code/README.md)\n  * [🏅 Repository contributors <sub>`contributors`</sub>](/source/plugins/contributors/README.md)\n  * [💬 Discussions <sub>`discussions`</sub>](/source/plugins/discussions/README.md)\n  * [🎟️ Follow-up of issues and pull requests <sub>`followup`</sub>](/source/plugins/followup/README.md)\n  * [🎫 Gists <sub>`gists`</sub>](/source/plugins/gists/README.md)\n  * [💡 Coding habits and activity <sub>`habits`</sub>](/source/plugins/habits/README.md)\n  * [🙋 Introduction <sub>`introduction`</sub>](/source/plugins/introduction/README.md)\n  * [📅 Isometric commit calendar <sub>`isocalendar`</sub>](/source/plugins/isocalendar/README.md)\n  * [🈷️ Languages activity <sub>`languages`</sub>](/source/plugins/languages/README.md)\n  * [📜 Repository licenses <sub>`licenses`</sub>](/source/plugins/licenses/README.md)\n  * [👨‍💻 Lines of code changed <sub>`lines`</sub>](/source/plugins/lines/README.md)\n  * [🎩 Notable contributions <sub>`notable`</sub>](/source/plugins/notable/README.md)\n  * [🧑‍🤝‍🧑 People <sub>`people`</sub>](/source/plugins/people/README.md)\n  * [🗂️ GitHub projects <sub>`projects`</sub>](/source/plugins/projects/README.md)\n  * [🎭 Comment reactions <sub>`reactions`</sub>](/source/plugins/reactions/README.md)\n  * [📓 Featured repositories <sub>`repositories`</sub>](/source/plugins/repositories/README.md)\n  * [🌇 GitHub Skyline <sub>`skyline`</sub>](/source/plugins/skyline/README.md)\n  * [💕 GitHub Sponsors <sub>`sponsors`</sub>](/source/plugins/sponsors/README.md)\n  * [💝 GitHub Sponsorships <sub>`sponsorships`</sub>](/source/plugins/sponsorships/README.md)\n  * [✨ Stargazers <sub>`stargazers`</sub>](/source/plugins/stargazers/README.md)\n  * [💫 Star lists <sub>`starlists`</sub>](/source/plugins/starlists/README.md)\n  * [🌟 Recently starred repositories <sub>`stars`</sub>](/source/plugins/stars/README.md)\n  * [💭 GitHub Community Support <sub>`support`</sub>](/source/plugins/support/README.md) <sub>`⚠️ deprecated`</sub>\n  * [📌 Starred topics <sub>`topics`</sub>](/source/plugins/topics/README.md)\n  * [🧮 Repositories traffic <sub>`traffic`</sub>](/source/plugins/traffic/README.md)\n* **Social plugins**\n  * [🌸 Anilist watch list and reading list <sub>`anilist`</sub>](/source/plugins/anilist/README.md)\n  * [🗳️ Leetcode <sub>`leetcode`</sub>](/source/plugins/leetcode/README.md)\n  * [🎼 Music activity and suggestions <sub>`music`</sub>](/source/plugins/music/README.md)\n  * [⏱️ Google PageSpeed <sub>`pagespeed`</sub>](/source/plugins/pagespeed/README.md)\n  * [✒️ Recent posts <sub>`posts`</sub>](/source/plugins/posts/README.md)\n  * [🗼 Rss feed <sub>`rss`</sub>](/source/plugins/rss/README.md)\n  * [🗨️ Stack Overflow <sub>`stackoverflow`</sub>](/source/plugins/stackoverflow/README.md)\n  * [🕹️ Steam <sub>`steam`</sub>](/source/plugins/steam/README.md)\n  * [🐤 Latest tweets <sub>`tweets`</sub>](/source/plugins/tweets/README.md) <sub>`⚠️ deprecated`</sub>\n  * [⏰ WakaTime <sub>`wakatime`</sub>](/source/plugins/wakatime/README.md)\n\n**🎲 Maintained by community**\n* **[Community plugins](/source/plugins/community/README.md)**\n  * [🧠 16personalities <sub>`16personalities`</sub>](/source/plugins/community/16personalities/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [♟️ Chess <sub>`chess`</sub>](/source/plugins/community/chess/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [🪙 Crypto <sub>`crypto`</sub>](/source/plugins/community/crypto/README.md) by [@dajneem23](https://github.com/dajneem23)\n  * [🥠 Fortune <sub>`fortune`</sub>](/source/plugins/community/fortune/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [💉 Nightscout <sub>`nightscout`</sub>](/source/plugins/community/nightscout/README.md) by [@legoandmars](https://github.com/legoandmars)\n  * [💩 PoopMap plugin <sub>`poopmap`</sub>](/source/plugins/community/poopmap/README.md) by [@matievisthekat](https://github.com/matievisthekat)\n  * [📸 Website screenshot <sub>`screenshot`</sub>](/source/plugins/community/screenshot/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [🦑 Splatoon <sub>`splatoon`</sub>](/source/plugins/community/splatoon/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [💹 Stock prices <sub>`stock`</sub>](/source/plugins/community/stock/README.md) by [@lowlighter](https://github.com/lowlighter)\n\n","source/plugins/achievements/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🏆 Achievements</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays several highlights about what an account has achieved on GitHub.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Compact display</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.achievements.compact.svg\" alt=\"\"></img></details>\n      <details><summary>Detailed display</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.achievements.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements</code></h4></td>\n    <td rowspan=\"2\"><p>Enable achievements plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Rank threshold filter</p>\n<p>Use <code>X</code> to display achievements not yet unlocked</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> C<br>\n<b>allowed values:</b><ul><li>S</li><li>A</li><li>B</li><li>C</li><li>X</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_secrets</code></h4></td>\n    <td rowspan=\"2\"><p>Secrets achievements</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_display</code></h4></td>\n    <td rowspan=\"2\"><p>Display style</p>\n<ul>\n<li><code>detailed</code>: display icon, name, description and ranking</li>\n<li><code>compact</code>: display icon, name and value</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> detailed<br>\n<b>allowed values:</b><ul><li>detailed</li><li>compact</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored achievements</p>\n<p>Use achievements names without their rank adjective (i.e. without &quot;great&quot;, &quot;super&quot; or &quot;master&quot;)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_only</code></h4></td>\n    <td rowspan=\"2\"><p>Showcased achievements</p>\n<p>Use achievements names without their rank adjective (i.e. without &quot;great&quot;, &quot;super&quot; or &quot;master&quot;)</p>\n<p>This option is equivalent to <a href=\"/source/plugins/achievements/README.md#plugin_achievements_ignored\"><code>plugin_achievements_ignored</code></a> with all existing achievements except the ones listed in this option</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Detailed display\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.achievements.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_achievements: yes\n  plugin_achievements_only: sponsor, maintainer, octonaut\n\n```\n```yaml\nname: Compact display\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.achievements.compact.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_achievements: yes\n  plugin_achievements_only: >-\n    polyglot, stargazer, sponsor, deployer, member, maintainer, developer,\n    scripter, packager, explorer, infographile, manager\n  plugin_achievements_display: compact\n  plugin_achievements_threshold: X\n\n```\n<!--/examples-->","source/plugins/activity/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📰 Recent activity</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays recent activity on GitHub.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.activity.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity</code></h4></td>\n    <td rowspan=\"2\"><p>Enable activity plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_load</code></h4></td>\n    <td rowspan=\"2\"><p>Events to load</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(100 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 300<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_days</code></h4></td>\n    <td rowspan=\"2\"><p>Events maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 365)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 14<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_visibility</code></h4></td>\n    <td rowspan=\"2\"><p>Events visibility</p>\n<p>Can be used to toggle private activity visibility when using a token with <code>repo</code> scope</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> all<br>\n<b>allowed values:</b><ul><li>public</li><li>all</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_timestamps</code></h4></td>\n    <td rowspan=\"2\"><p>Events timestamps</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored users</p>\n<p>Can be used to ignore bots activity</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>users_ignored</code><br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_filter</code></h4></td>\n    <td rowspan=\"2\"><p>Events types</p>\n<p>These are fetched from <a href=\"https://docs.github.com/en/free-pro-team@latest/developers/webhooks-and-events/github-event-types\">GitHub events API</a> and the following types are currently supported:</p>\n<ul>\n<li><code>push</code>: Push of commits</li>\n<li><code>issue</code>: Opening/Reopening/Closing of issues</li>\n<li><code>pr</code>: Opening/Closing of pull requests</li>\n<li><code>ref/create</code>: Creation of git tags or git branches</li>\n<li><code>ref/delete</code>: Deletion of git tags or git branches</li>\n<li><code>release</code>: Publication of new releases</li>\n<li><code>review</code>: Review of pull requests</li>\n<li><code>comment</code>: Comments on commits, issues and pull requests</li>\n<li><code>wiki</code>: Changes of wiki pages</li>\n<li><code>fork</code>: Forking of repositories</li>\n<li><code>star</code>: Starring of repositories</li>\n<li><code>public</code>: Repositories made public</li>\n<li><code>member</code>: Addition of new collaborator in repository</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> all<br>\n<b>allowed values:</b><ul><li>all</li><li>comment</li><li>ref/create</li><li>ref/delete</li><li>release</li><li>push</li><li>issue</li><li>pr</li><li>review</li><li>wiki</li><li>fork</li><li>star</li><li>member</li><li>public</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recent activity\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.activity.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_activity: yes\n  plugin_activity_limit: 5\n  plugin_activity_days: 0\n  plugin_activity_filter: issue, pr, release, fork, review, ref/create\n\n```\n<!--/examples-->\n","source/plugins/anilist/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🌸 Anilist watch list and reading list</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays favorites animes, mangas and characters from a <a href=\"https://anilist.co\">AniList</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://anilist.co\">AniList</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>For anime watchers</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.anilist.svg\" alt=\"\"></img></details>\n      <details><summary>For manga readers</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.anilist.manga.svg\" alt=\"\"></img></details>\n      <details open><summary>For waifus simp</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.anilist.characters.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist</code></h4></td>\n    <td rowspan=\"2\"><p>Enable aniList plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_user</code></h4></td>\n    <td rowspan=\"2\"><p>AniList login</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_medias</code></h4></td>\n    <td rowspan=\"2\"><p>Medias types</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> anime, manga<br>\n<b>allowed values:</b><ul><li>anime</li><li>manga</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>favorites</code> will display favorites from <code>plugin_anilist_medias</code></li>\n<li><code>watching</code> will display animes currently in watching list</li>\n<li><code>reading</code> will display manga currently in reading list</li>\n<li><code>characters</code> will display liked characters</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> favorites<br>\n<b>allowed values:</b><ul><li>favorites</li><li>watching</li><li>reading</li><li>characters</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (medias)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_limit_characters</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (characters)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 22<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_shuffle</code></h4></td>\n    <td rowspan=\"2\"><p>Shuffle data</p>\n<p>Can be used to create varied outputs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Favorites anime and currently watching\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.anilist.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_anilist: yes\n  plugin_anilist_medias: anime\n  plugin_anilist_sections: favorites, watching\n  plugin_anilist_limit: 1\n\n```\n```yaml\nname: Favorites manga and currently reading\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.anilist.manga.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_anilist: yes\n  plugin_anilist_medias: manga\n  plugin_anilist_sections: favorites, reading\n  plugin_anilist_limit: 1\n\n```\n```yaml\nname: Favorites characters\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.anilist.characters.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_anilist: yes\n  plugin_anilist_sections: characters\n  plugin_anilist_limit_characters: 22\n\n```\n<!--/examples-->\n","source/plugins/base/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗃️ Base content</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n<td colspan=\"2\"><table><tr>\n<td align=\"center\">\n<img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.classic.svg\" alt=\"\"></img>\n</td>\n<td align=\"center\">\n<img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.organization.svg\" alt=\"\"></img>\n</td>\n</tr></table></td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base</code></h4></td>\n    <td rowspan=\"2\"><p>Base content</p>\n<p>The following sections are supported:</p>\n<ul>\n<li><code>header</code>, which usually contains username, two-weeks commits calendars and a few additional data</li>\n<li><code>activity</code>, which contains recent activity (commits, pull requests, issues, etc.)</li>\n<li><code>community</code>, which contains community stats (following, sponsors, organizations, etc.)</li>\n<li><code>repositories</code>, which contains repository stats (license, forks, stars, etc.)</li>\n<li><code>metadata</code>, which contains information about generated metrics</li>\n</ul>\n<p>These are all enabled by default, but it is possible to explicitly opt out from them.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> header, activity, community, repositories, metadata<br>\n<b>allowed values:</b><ul><li>header</li><li>activity</li><li>community</li><li>repositories</li><li>metadata</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode</p>\n<p>Enabling this will consume additional API queries to fetch more data.\nThis currently improves the accuracy of the following statistics:</p>\n<ul>\n<li>total commits</li>\n<li>total issues</li>\n<li>total pull requests</li>\n<li>total pull requests reviews</li>\n<li>total repositories contributed to</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base_hireable</code></h4></td>\n    <td rowspan=\"2\"><p>Show <code>Available for hire!</code> in header section</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base_skip</code></h4></td>\n    <td rowspan=\"2\"><p>Skip base content</p>\n<blockquote>\n<p>⚠️ Any plugin that relies on base content data may break!\nOnly use this option when using a plugin that can be configured with <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Fetched repositories</p>\n<p>A higher value result in more accurate metrics but can hit GitHub API rate-limit more easily (especially with a lot of plugins enabled)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_batch</code></h4></td>\n    <td rowspan=\"2\"><p>Fetched repositories per query</p>\n<p>If you receive <code>Something went wrong while executing your query</code> (which is usually caused by API timeouts), lowering this value may help.\nThis setting may not be supported by all plugins.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_forks</code></h4></td>\n    <td rowspan=\"2\"><p>Include forks</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_affiliations</code></h4></td>\n    <td rowspan=\"2\"><p>Repositories affiliations</p>\n<ul>\n<li><code>owner</code>: owned repositories</li>\n<li><code>collaborator</code>: repositories with push access</li>\n<li><code>organization_member</code>: repositories from an organization where user is a member</li>\n</ul>\n<p>Some plugin outputs may be affected by this setting too.</p>\n<p>Set to <code>&quot;&quot;</code> to disable and fetch all repositories related to given account.\nBroad affiliations will result in less representative metrics.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> owner<br>\n<b>allowed values:</b><ul><li>owner</li><li>collaborator</li><li>organization_member</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Default skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>users_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Default ignored users</p>\n<p>Note that emails are only supported in commits-related elements.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> github-actions[bot], dependabot[bot], dependabot-preview[bot], actions-user, action@github.com<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>commits_authoring</code></h4></td>\n    <td rowspan=\"2\"><p>Identifiers that has been used for authoring commits</p>\n<p>Specify names, surnames, username, email addresses that has been used in the past that can be used to detect commits ownerships in some plugins</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Default metrics\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.base.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: header, activity, community, repositories, metadata\n\n```\n<!--/examples-->\n","source/plugins/calendar/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📆 Commit calendar</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display commit calendar across several years.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details><summary>Current year</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.calendar.svg\" alt=\"\"></img></details>\n      <details open><summary>Full history</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.calendar.full.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_calendar</code></h4></td>\n    <td rowspan=\"2\"><p>Enable calendar plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_calendar_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Years to display</p>\n<p>This option has different behaviours depending on its value:</p>\n<ul>\n<li><code>n &gt; 0</code> will display the last <code>n</code> years, relative to current year</li>\n<li><code>n == 0</code> will display all years starting from GitHub account registration date</li>\n<li><code>n &lt; 0</code> will display all years plus <code>n</code> additional years, relative to GitHub account registration date<ul>\n<li>Use this when there are commits pushed before GitHub registration</li>\n</ul>\n</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Current year calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.calendar.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_calendar: yes\n\n```\n```yaml\nname: Full history calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.calendar.full.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_calendar: yes\n  plugin_calendar_limit: 0\n\n```\n<!--/examples-->\n","source/plugins/code/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>♐ Random code snippet</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays a random code snippet from recent activity history.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ When improperly configured, this plugin could display private code.\nIf you work with sensitive data or company code, it is advised to keep this plugin disabled.\nUse at your own risk, <em>metrics</em> and its authors cannot be held responsible for any resulting code leaks.</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.code.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code</code></h4></td>\n    <td rowspan=\"2\"><p>Enable code plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_lines</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (lines per code snippets)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 128)</i>\n<br>\n<b>default:</b> 12<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_load</code></h4></td>\n    <td rowspan=\"2\"><p>Events to load</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(100 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 400<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_days</code></h4></td>\n    <td rowspan=\"2\"><p>Events maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 365)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 3<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_visibility</code></h4></td>\n    <td rowspan=\"2\"><p>Events visibility</p>\n<p>Can be used to toggle private activity visibility when using a token with <code>repo</code> scope</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> public<br>\n<b>allowed values:</b><ul><li>public</li><li>all</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Showcased languages</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: JavaScript or TypeScript snippet of the day\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.code.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_code: yes\n  plugin_code_languages: javascript, typescript\n  plugin_code_load: 400\n\n```\n<!--/examples-->\n","source/plugins/community/16personalities/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧠 16personalities</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays personality profile from a <a href=\"https://www.16personalities.com/profile\">16personalities profile</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://www.16personalities.com\">16personalities</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.16personalities.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities</code></h4></td>\n    <td rowspan=\"2\"><p>Enable 16personalities plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities_url</code></h4></td>\n    <td rowspan=\"2\"><p>Profile URL</p>\n<p>This can be obtained after doing the <a href=\"https://www.16personalities.com/free-personality-test\">test on 16personalities</a> and registering an email.\nLogin with the generated password received in your mailbox and copy the link that is displayed when sharing the profile.</p>\n<img src=\"/.github/readme/imgs/plugin_16personalities_profile.png\" width=\"800\" />\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>personality</code> will display personality type</li>\n<li><code>profile</code> will display role and strategy</li>\n<li><code>traits</code> will display mind, energy, nature, tactics and identity traits</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> personality<br>\n<b>allowed values:</b><ul><li>personality</li><li>profile</li><li>traits</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities_scores</code></h4></td>\n    <td rowspan=\"2\"><p>Display traits scores</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: MBTI Personality profile\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.16personalities.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_16personalities: yes\n  plugin_16personalities_url: ${{ secrets.SIXTEEN_PERSONALITIES_URL }}\n  plugin_16personalities_sections: personality, traits\n  plugin_16personalities_scores: no\n\n```\n<!--/examples-->\n","source/plugins/community/README.md":"<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎲 Community plugins</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\">Additional plugins maintained by community for even more features!</td></tr>\n  <tr>\n    <th><a href=\"/source/plugins/community/16personalities/README.md\">🧠 16personalities</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n    <th><a href=\"/source/plugins/community/chess/README.md\">♟️ Chess</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.16personalities.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.chess.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/crypto/README.md\">🪙 Crypto</a><br><sup>by <a href=\"https://github.com/dajneem23\">@dajneem23</a></sup></th>\n    <th><a href=\"/source/plugins/community/fortune/README.md\">🥠 Fortune</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://via.placeholder.com/468x60?text=No%20preview%20available\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.fortune.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/nightscout/README.md\">💉 Nightscout</a><br><sup>by <a href=\"https://github.com/legoandmars\">@legoandmars</a></sup></th>\n    <th><a href=\"/source/plugins/community/poopmap/README.md\">💩 PoopMap plugin</a><br><sup>by <a href=\"https://github.com/matievisthekat\">@matievisthekat</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/legoandmars/legoandmars/blob/master/metrics.plugin.nightscout.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/matievisthekat/matievisthekat/blob/master/metrics.plugin.poopmap.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/screenshot/README.md\">📸 Website screenshot</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n    <th><a href=\"/source/plugins/community/splatoon/README.md\">🦑 Splatoon</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.screenshot.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.splatoon.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/stock/README.md\">💹 Stock prices</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n    <th></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stock.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n<td align=\"center\"><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n</table>\n\n## 📪 Creating community plugins\n\nPlugins creation requires you to be comfortable with JavaScript, HTML, CSS and [EJS](https://github.com/mde/ejs).\n\n### 💬 Before creating a new plugin\n\nBe sure to read [contribution guide](/CONTRIBUTING.md) and [architecture](/ARCHITECTURE.md) first.\n\n> ℹ️ *metrics* maintainers have no obligation towards community plugins support and may redirect any help, feature or fix requests from other users to you. Of course you are not bound to work on it, but it would be great if you plan to merge a plugin in the main repository\n\nPlease respect the following guidelines:\n\n- A plugin should be independent and should not rely on other plugins\n  - [🧱 core](/source/plugins/core/README.md) and [🗃️ base](/source/plugins/base/README.md) output can be reused though\n- A plugin should never edit its original arguments, as it is shared amongst other plugins and would create unattended side effects\n- Use `imports.metadata.plugins.{plugin-name}.inputs()` to automatically type check and default user inputs through defined `metadata.yml`\n- Plugin options should respect the \"lexical field\" of existing option to keep consistency\n- Plugin errors should be handled gracefully by partials with error message\n- New dependencies should be avoided, consider using existing `imports`\n- Spawning sub-process should be avoided, unless absolute necessity\n  - Use `imports.which()` to detect whether a command is available\n  - Use `imports.run()` to run a command\n    - Pass `{prefixed: true}` to wrap automatically command with [WSL](https://docs.microsoft.com/windows/wsl/about) on Windows\n  - It is required to work on Linux Ubuntu (as the GitHub action run on it)\n\n> 💡 While the following guide intend to explain the creation process of new plugin, it may also be a good idea to see what existing plugins looks like and see if you want to embark on the adventure!\n\n### 💬 Quick-start\n\nTo create a new plugin, clone and setup this repository first:\n```shell\ngit clone https://github.com/lowlighter/metrics.git\ncd metrics/\nnpm install\n```\n\nFind a cool name and an [unused emoji](https://emojipedia.org) for your new plugin and run the following:\n```shell\nnpm run quickstart plugin <plugin_name>\n```\n\n> ⚠️ Community plugins cannot have the same name as official plugins. *metrics* maintainers may also reserve a plugin name for future usage and may ask you to rename it in case of conflicts\n\nIt will create a new directory in `/source/plugins/community` with the following file structure:\n* `/source/plugins/community/{plugin-name}`\n  * `README.md`\n  * `metadata.yml`\n  * `examples.mjs`\n  * `index.mjs`\n\nPlugins are auto-loaded based on their folder existence, so there's no need to register them somewhere.\n\n### 💬 Filling `metadata.yml`\n\n`metadata.yml` is a required file which describes supported account types, output formats, scopes, etc.\n\nThe default file looks like below:\n```yaml\nname: \"🧩 Plugin name\"\ncategory: community\ndescription: Short description\nexamples:\n  default: https://via.placeholder.com/468x60?text=No%20preview%20available\nauthors:\n  - octocat\nsupports:\n  - user\n  - organization\n  - repository\nscopes: []\ninputs:\n\n  plugin_{name}:\n    description: Enable {name} plugin\n    type: boolean\n    default: no\n```\n\n> 💡 It is important to correctly define `metadata.yml` because *metrics* will use its content for various usage\n\n[`🧱 core`](/source/plugins/core/README.md) plugin (which is always called) will automatically verify user inputs against `supports` and `inputs` values and throw an error in case of incompatibility.\n\n`name`, `description`, `scopes`, `examples` are used to auto-generate documentation in the `README.md`. For community plugins, `examples` should be set with auto-generated examples of your own profile.\n\n`authors` should contain your GitHub username\n\n`category` should be set to `community`.\n\nBecause of GitHub Actions original limitations, only strings, numbers and boolean were actually supported by `action.yml`. *metrics* implemented its own `inputs` validator to circumvent this. It should be pretty simple to use.\n\n*Example: boolean type, defaults to `false`*\n```yml\n  plugin_{name}_{option}:\n    description: Boolean type\n    type: boolean\n    default: no\n```\n\n```yml\n  plugin_{name}_{option}:\n    description: String type\n    type: string\n    default: .user.login\n```\n\n> 💡 `.user.login`, `.user.twitter` and `.user.website` are special default values that will be respectively replaced by user's login, Twitter username and attached website. Note that these are not available if `token: NOT_NEEDED` is set by user\n\n*Example: string type, defaults to `foo` with `foo` or `bar` as allowed values*\n```yml\n  plugin_{name}_{option}:\n    description: Select type\n    type: string\n    values:\n      - foo\n      - bar\n    default: foo\n```\n\n> 💡 `values` restricts what can be passed by user\n\n*Example: number type, defaults to `1` and expected to be between `0` and `100`*\n```yml\n  plugin_{name}_{option}:\n    description: Number type\n    type: number\n    default: 1\n    min: 0\n    max: 100\n```\n\n> 💡 `min` and `max` restricts what can be passed by user. Omit these to respectively remove lower and upper limits.\n\n> 💡 Zero may have a special behaviour (usually to disable limitations), if that's the case add a `zero` attribute (e.g. `zero: disable`) to reference this in documentation\n\n*Example: array type, with comma-separated elements*\n```yml\n  plugin_{name}_{option}:\n    description: Array type\n    type: array\n    format: comma-separated\n    values:\n      - foo\n      - bar\n    default: foo, bar\n```\n\n> 💡 An array can be either `comma-separated` or `space-separated`, and will split user input by mentioned separator. Each value is trimmed and lowercased.\n\n*Example: json type*\n```yml\n  plugin_{name}_{option}:\n    description: JSON type\n    type: json\n    default: |\n      {\n        \"foo\": \"bar\"\n      }\n```\n\n> 💡 JSON types should be avoided when possible, as they're usually kind of unpractical to write within a YAML document\n\nFor complex inputs, pass an `example` that will be displayed as a placeholder on web instances.\n\nWhen calling `imports.metadata.plugins.{plugin-name}.inputs({data, account, q})`, an object with verified user inputs and correct typing will be returned.\n\nAny invalid input will use have the `default` value instead.\n\n> ⚠️ Returned object will use the web syntax for options rather than the action one. It means that `plugin_` prefix is dropped, and all underscores (`_`) are replaced by dots (`.`)\n\n*Example: validating user inputs*\n```javascript\nlet {limit, \"limit.field\":limit_field} = imports.metadata.plugins.myplugin.inputs({data, account, q})\nconsole.assert(limit === true)\n```\n\n### 💬 Filling `index.mjs`\n\nPlugins use [JavaScript modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules).\n\nThe default exported module of `index.mjs` will be auto-loaded when *metrics* start.\n\nBelow is a breakdown of basic `index.mjs` content\n```js\nexport default async function(\n  //Shared inputs\n  {\n    login, //GitHub username\n    q, //Raw user inputs (dot notation without plugin_ prefix, don't use it directly)\n    imports, //Various utilities (axios, puppeteer, fs, etc., see /source/app/metrics/utils.mjs)\n    data, //Raw data from core/base plugin\n    computed, //Computed data from core/base plugin\n    rest, //Rest authenticated GitHub octokit\n    graphql, //Graph QL authenticated GitHub octokit\n    queries, //Autoloaded queries from ./queries\n    account, //Account type (\"user\" or \"organization\")\n  },\n  //Settings and tokens\n  {\n    enabled = false,\n    extras = false,\n  } = {}) {\n    //Plugin execution\n    try {\n      //Check if plugin is enabled and requirements are met\n      if ((!q.my_plugin)||(imports.metadata.plugins.my_plugin.enabled(enabled, {extras})))\n        return null\n\n      //Automatically validate user inputs\n      //An error will be thrown if `account` type is not supported\n      //Inputs will have correct typing from `metadata.yml` and unset or invalid options will be set to default\n      let {option} = imports.metadata.plugins.my_plugin.inputs({data, account, q})\n\n      //Automatically template query from /source/plugins/myplugin/queries/myquery.graph ql\n      const {[account]:stuff} = await graphql(queries.myplugin.myquery({login, account, option}))\n\n      //Results\n      return {stuff}\n    }\n    //Handle errors\n    catch (error) {\n      throw imports.format.error(error)\n    }\n}\n```\n\n> ⚠️ Remember, a plugin should never edit its original arguments, as it is shared amongst other plugins and would create unattended side effects\n\n### 💬 Creating partials\n\nJust create a new `.ejs` file in `partials` folder from templates you wish to support, and reference it into their `partials/_.json`.\n\nPlugin partials should be able to handle gracefully their own state and errors.\n\nBelow is a minimal snippet of a partial:\n```ejs\n<% if (plugins.{plugin_name}) { %>\n  <% if (plugins.{plugin_name}.error) { %>\n    <%= plugins.{plugin_name}.error.message %>\n  <% } else { %>\n    <%# content %>\n  <% } %>\n<% } %>\n```\n\nPartials should have the match the same name as plugin handles, as they're used to display plugin compatibility in auto-generated header.\n\n[EJS](https://github.com/mde/ejs) framework is used to template content through templating tags (``).\n\n### 💬 Filling `README.md`\n\n`README.md` is used as documentation.\n\nMost of it will is auto-generated by `metadata.yml` and `examples.yml` content, so usually it is not required to manually edit it.\n\nThe default content looks like below:\n```markdown\n<ǃ--header-->\n<ǃ--/header-->\n\n## ➡️ Available options\n\n<ǃ--options-->\n<ǃ--/options-->\n\n## ℹ️ Examples workflows\n\n<ǃ--examples-->\n<ǃ--/examples-->\n```\n\n- `<ǃ--header-->` will be replaced by an auto-generated header containing plugin name, supported features and output examples based on `metadata.yml`\n- `<ǃ--options-->` will be replaced by an auto-generated table containing all referenced option from `metadata.yml`\n- `<ǃ--examples-->` will be replaced by workflows from `examples.yml`\n\n> ⚠️ Do not replace these auto-generated placeholder yet! They will be built by the ci workflow and will help making your pull request easier to read\n\nWhen a plugin requires a token, please add a `## 🗝️ Obtaining a {service} token` section after the available options section.\n\nComplex features may also be documented in additional sections after available options section options if required.\n\nTry to respect current format of `README.md` from other plugins and use a neutral and impersonal writing style if possible.\n\n### 💬 Filling `examples.yml`\n\nWorkflow examples from `examples.yml` are used as unit testing and to auto-generate documentation in the `README.md`.\n\nIt uses the same syntax as GitHub action and looks like below:\n```yml\n- name: Test name\n  uses: lowlighter/metrics@latest\n  with:\n    filename: metrics.plugin.{name}.svg\n    token: ${{ secrets.METRICS_TOKEN }}\n    base: \"\"\n    plugin_{name}: yes\n  prod:\n    skip: true\n  test:\n    timeout: 1800000\n    modes:\n      - action\n      - web\n      - placeholder\n```\n\n> 💡 Tests are executed in a mocked environment to avoid causing charges on external services. It may be required to create mock testing files.\n\n`test` is usually not needed and optional but can be set to set a custom timeout (for plugins with a high execution time) and `modes` can be used to restrict which environment should be used.\n\n`prod` should keep `skip: true` as you should use your own render outputs as examples.\n\n### 💬 Testing locally and creating mocked data\n\nThe easiest way to test a new plugin is to setup a web instance locally ([see documentation](.github/readme/partials/documentation/setup/local.md)).\n\nOnce server is started, open a browser and try to generate an output with your new plugin enabled and check if it works as expected:\n```\nhttp://localhost:3000/username?base=0&my-plugin=1\n```\n\n> 💡 You may need to configure your server first by editing `settings.json`. Ensure that:\n> - `token` is correctly set when working with GitHub APIs\n> - `plugins.default` is set to `true` as plugins are disabled by default\n>   - or enable your plugins by manually in `plugins`.`my-plugin`.`enabled`\n> -  `debug` is set to `true` for more verbose output\n\nWhen your plugin is finalized, you may need to create mocked data if it either uses GitHub APIs or any external service.\n\nThey must be created in `tests/mocks/api`:\n- use `github` directory for all related GitHub APIs data\n- use `axios` directory for all external service that you call using `imports.axios`\n\n> 💡 Files from these directories are auto-loaded, so it is just required to create them with faked data.\n\nFinally [/source/app/web/statics/app.placeholder.js](/source/app/web/statics/app.placeholder.js) to add mocked placeholder data to make users using the shared instance able to preview a render locally without any server computation.\n\n### 💬 Submitting a pull request\n\nIf you made it until there, congratulations 🥳!\n\nYou're almost done, review the following checklist before submitting a pull request:\n- [x] I have correctly filled `metadata.yml`\n  - [x] `name` is set with an unused emoji and plugin name\n  - [x] `category` is set to `community`\n  - [x] `examples` contains links towards a rendered output hosted by you\n  - [x] `authors` contains my GitHub username\n  - [x] `supports` list which account type are supported\n  - [x] `scopes` are correctly listed with their associated names on GitHub (leave an empty array if not applicable)\n  - [x] `inputs` are correctly filled\n- [x] I have implemented my plugin\n  - [x] `index.mjs` respects the plugins guidelines\n- [x] I have tested my plugin locally\n  - [x] `tests/mocks` ... have been created\n  - [x] `app.placeholder.js` has been updated for preview from web instances\n  - [x] `examples.yml` contains workflows examples (at least one is required)\n    - [x] `skip: true` has been set for `prod` attribute in each test\n  - [x] `npm run linter` yields no errors\n- [x] I have documented my plugin\n  - [x] `README.md` eventually describes complex setup or options (if applicable)\n- [x] I am ready!\n  - [x] Checkout any generated files (in fact, don't run `npm run build`)\n  - [x] Commit and push your changes (commits are squashed, no need to rebase)\n  - [x] Open a new [pull request](https://github.com/lowlighter/metrics/pulls)\n  - [x] Post a screenshot or a render in the pull request so it can be previewed\n\n> 💡 A pull request **will need** to have passing builds and an example screenshot if you want to get it merged.\n> Maintainers may request changes in some cases\n\n> 🎊 Thanks a lot for your contribution!\n\n","source/plugins/community/chess/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>♟️ Chess</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the last game you played on a supported chess platform.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with any of the supported provider.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_chess_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.chess.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess</code></h4></td>\n    <td rowspan=\"2\"><p>Enable chess plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_token</code></h4></td>\n    <td rowspan=\"2\"><p>Chess platform token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.chess.any</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_user</code></h4></td>\n    <td rowspan=\"2\"><p>Chess platform login</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_platform</code></h4></td>\n    <td rowspan=\"2\"><p>Chess platform</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>lichess.org</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_animation</code></h4></td>\n    <td rowspan=\"2\"><p>Animation settings</p>\n<ul>\n<li><code>size</code> is the size of a single chessboard square in pixels (board will be 8 times larger)</li>\n<li><code>delay</code> is the delay before starting animation (in seconds)</li>\n<li><code>duration</code> is the duration of the animation of a move (in seconds)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"size\": 40,\n  \"delay\": 3,\n  \"duration\": 0.6\n}\n</code></pre></details><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a lichess.org token\n\nCreate a [lichess.org account](https://lichess.org) and select [API access tokens](https://lichess.org/account/oauth/token) to get a token.\n\n![lichess.org token](/.github/readme/imgs/plugin_chess_lichess_token_0.png)\n\nIt is not necessary to add additional scopes:\n\n![lichess.org token](/.github/readme/imgs/plugin_chess_lichess_token_1.png)\n\nCreate token and store it in your secrets:\n\n![lichess.org token](/.github/readme/imgs/plugin_chess_lichess_token_0.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Last chess game from lichess.org\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.chess.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_chess: yes\n  plugin_chess_token: ${{ secrets.CHESS_TOKEN }}\n  plugin_chess_platform: lichess.org\n\n```\n<!--/examples-->\n","source/plugins/community/crypto/README.md":"<!-- Header -->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🪙 Crypto</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\">\n    <p>This plugin generates an SVG image containing crypto metrics from a given address. It uses the CoinGecko API to fetch crypto prices.</p>\n    <p>For more information, check the <a href=\"https://www.coingecko.com/vi/api/documentation\">CoinGecko API documentation</a>.</p>\n  </td></tr>\n  <tr><th>Authors</th><td><a href=\"https://github.com/dajneem23\">@dajneem23</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported Features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td>\n      <ul>\n        <li><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></li>\n        <li><a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></li>\n      </ul>\n    </td>\n  </tr>\n  <tr>\n    <td>\n      <ul>\n        <li><code>👤 Users</code></li>\n        <li><code>👥 Organizations</code></li>\n        <li><code>📓 Repositories</code></li>\n      </ul>\n    </td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_crypto</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://via.placeholder.com/468x60?text=No%20preview%20available\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!-- /Header -->\n\n## ➡️ Available Options\n\n<!-- Options -->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto</code></h4></td>\n    <td rowspan=\"2\"><p>Enable crypto plugin</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>boolean</code><br>Default: <code>no</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_id</code></h4></td>\n    <td rowspan=\"2\"><p>Crypto id (from Coingecko)</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>string</code><br>Default: \"\"<br>Example: bitcoin<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_vs_currency</code></h4></td>\n    <td rowspan=\"2\"><p>The target currency of market data (usd, eur, jpy, etc.)</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>string</code><br>Default: \"usd\"<br>Example: \"usd\"<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_days</code></h4></td>\n    <td rowspan=\"2\"><p>Data up to number of days ago (eg. 1,14,30,max)</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>string</code><br>Default: \"1\"<br>Example: 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_precision</code></h4></td>\n    <td rowspan=\"2\"><p>The number of decimal places to use</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>number</code><br>Default: 2<br>Example: 2<br></td>\n  </tr>\n</table>\n<!-- /Options -->\n\n<!--examples-->\n```yaml\nname: Crypto Metrics\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.crypto.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_crypto: yes\n  plugin_crypto_id: bitcoin\n  plugin_crypto_vs_currency: usd\n  plugin_crypto_days: 1\n  plugin_crypto_precision: 2\n\n```\n<!--/examples-->\n","source/plugins/community/fortune/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🥠 Fortune</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugins displays a random fortune message</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.fortune.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_fortune</code></h4></td>\n    <td rowspan=\"2\"><p>Enable fortune plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Fortune\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.fortune.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_fortune: yes\n\n```\n<!--/examples-->\n","source/plugins/community/nightscout/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💉 Nightscout</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays blood sugar values from a <a href=\"http://nightscout.info\">Nightscout</a> site.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"http://nightscout.info\">Nightscout</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/legoandmars\">@legoandmars</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/legoandmars/legoandmars/blob/master/metrics.plugin.nightscout.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout</code></h4></td>\n    <td rowspan=\"2\"><p>Enable nightscout plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_url</code></h4></td>\n    <td rowspan=\"2\"><p>Nightscout URL</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> https://example.herokuapp.com<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_datapoints</code></h4></td>\n    <td rowspan=\"2\"><p>Number of datapoints shown the graph</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 12<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_lowalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for low blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 80<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_highalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for high blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 180<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_urgentlowalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for urgently low blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 50<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_urgenthighalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for urgently high blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 250<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🌐 Setup a Nightscout instance\n\nThe [nightscout website](http://www.nightscout.info/) details how to self-host a nightscout site.\nCheck out the instructions there.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  plugin_nightscout: yes\n  plugin_nightscout_url: ${{ secrets.NIGHTSCOUT_URL }}\n\n```\n<!--/examples-->\n","source/plugins/community/poopmap/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💩 PoopMap plugin</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays statistics from a <a href=\"https://poopmap.net\">PoopMap</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://poopmap.net\">PoopMap</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/matievisthekat\">@matievisthekat</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_poopmap_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/matievisthekat/matievisthekat/blob/master/metrics.plugin.poopmap.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_poopmap</code></h4></td>\n    <td rowspan=\"2\"><p>Enable poopmap plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_poopmap_token</code></h4></td>\n    <td rowspan=\"2\"><p>PoopMap API token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_poopmap_days</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>default:</b> 7<br>\n<b>allowed values:</b><ul><li>7</li><li>30</li><li>180</li><li>365</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a PoopMap token\n\nInstall PoopMap app ([iOS](https://itunes.apple.com/us/app/poop-map/id1303269455?mt=8)/[Android](https://play.google.com/store/apps/details?id=net.poopmap)) and create an account.\n\nNavigate to your profile in the app\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/45036977/143533812-c2776bcc-1fda-441e-bc96-cf21d4c69ca1.jpg\" width=\"150\" />\n</div>\n\nTap \"Share Profile\" in the top right\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/45036977/143533849-b7e03b4d-2903-4339-bbb7-e1fc0ea9724e.jpg\" width=\"150\" />\n</div>\n\nTap \"Copy to Clipboard\"\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/45036977/143533856-f4a9fc0d-7bde-48c2-b579-e8ee91804d78.jpg\" width=\"150\" />\n</div>\n\nIt should result in something like `Haha, check out the places I've pooped on Poop Map https://api.poopmap.net/map?token=xxxxxxxxxx` copied.\n\nExtract the `token` query parameter from the link and use it in `plugin_poopmap_token`.\nThis token will not expire and it will be able to access only public details.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  plugin_poopmap_token: ${{ secrets.POOPMAP_TOKEN }}\n  plugin_poopmap: yes\n\n```\n<!--/examples-->\n","source/plugins/community/screenshot/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📸 Website screenshot</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays a screenshot from any website.</p>\n<p>It can either show the full page or a portion restricted by a <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors\">CSS selector</a>.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.screenshot.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot</code></h4></td>\n    <td rowspan=\"2\"><p>Enable screenshot plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_title</code></h4></td>\n    <td rowspan=\"2\"><p>Title caption</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> Screenshot<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_url</code></h4></td>\n    <td rowspan=\"2\"><p>Website URL</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_selector</code></h4></td>\n    <td rowspan=\"2\"><p>CSS Selector</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> body<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_mode</code></h4></td>\n    <td rowspan=\"2\"><p>Output mode</p>\n<ul>\n<li><code>image</code>: screenshot of selected element</li>\n<li><code>text</code>: keep <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText\"><code>innerText</code></a> of selected element<ul>\n<li><em>⚠️ Any CSS style applied to text such as font size, weight or color will be removed</em></li>\n</ul>\n</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> image<br>\n<b>allowed values:</b><ul><li>image</li><li>text</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_viewport</code></h4></td>\n    <td rowspan=\"2\"><p>Viewport options</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"width\": 1280,\n  \"height\": 1280\n}\n</code></pre></details><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_wait</code></h4></td>\n    <td rowspan=\"2\"><p>Wait time before taking screenshot (ms)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_background</code></h4></td>\n    <td rowspan=\"2\"><p>Background</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: XKCD of the day\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.screenshot.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_screenshot: yes\n  plugin_screenshot_title: XKCD of the day\n  plugin_screenshot_url: https://xkcd.com\n  plugin_screenshot_selector: \"#comic img\"\n\n```\n<!--/examples-->\n","source/plugins/community/splatoon/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🦑 Splatoon</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays your Splatoon 3 recent matches based on data fetched from Splatnet.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://www.nintendo.com\">Nintendo</a> or <a href=\"https://splatoon.nintendo.com\">Splatoon</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n<p>This specific plugin is licensed under GPL-3.0 rather than MIT to comply with <a href=\"https://github.com/spacemeowx2/s3si.ts\">spacemeowx2/s3si.ts</a> license.</p>\n<p>Note that <em>Nintendo Switch Online</em> web tokens usage are not explicitly allowed by <em>Nintendo</em>, use at your own risk.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_splatoon_token</code> <code>🗝️ plugin_splatoon_statink_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.splatoon.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon</code></h4></td>\n    <td rowspan=\"2\"><p>Enable splatoon plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_token</code></h4></td>\n    <td rowspan=\"2\"><p>Splatnet token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.nintendo.splatnet</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>player</code> for overall player recap</li>\n<li><code>versus</code> for <em>Turf war</em> and <em>Anarchy battle</em> matches</li>\n<li><code>salmon-run</code> for <em>Salmon run next wave</em> matches</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> player, versus, salmon-run<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_versus_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Versus)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 6)</i>\n<br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_salmon_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Salmon run)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 6)</i>\n<br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_statink</code></h4></td>\n    <td rowspan=\"2\"><p>stat.ink integration</p>\n<p>If set, fetched data will also be uploaded to stat.ink\nRequires <a href=\"/source/plugins/community/splatoon/README.md#plugin_splatoon_statink_token\"><code>plugin_splatoon_statink_token</code></a> to be set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.statink</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_statink_token</code></h4></td>\n    <td rowspan=\"2\"><p>stat.ink token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_source</code></h4></td>\n    <td rowspan=\"2\"><p>Source</p>\n<ul>\n<li><code>splatnet</code> will fetch data from Splatnet using <a href=\"https://github.com/spacemeowx2/s3si.ts\">spacemeowx2/s3si.ts</a> tool</li>\n<li><code>local</code> will assume <code>s3si/export</code> directory already exists and is populated (use this when developping new features for this plugin to save network resources and time)</li>\n<li><code>mocks</code> will use <code>s3si/mocks</code> directory (use this when developping new features for this plugin to avoid setting up a NSO token)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> splatnet<br>\n<b>allowed values:</b><ul><li>splatnet</li><li>local</li><li>mocks</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a *Nintendo Switch Online* token\n\nThe helper script is intended to be run by [deno runtime](https://deno.land/). Either [install it locally](https://deno.land/manual/getting_started/installation) or use its [docker image](https://hub.docker.com/r/denoland/deno).\n\nRun the following command in your terminal and follow instructions:\n```bash\ndeno run --allow-run=deno --allow-read=profile.json --allow-write=profile.json --unstable https://raw.githubusercontent.com/lowlighter/metrics/master/source/plugins/community/splatoon/token.ts\n```\n\n![Script](/.github/readme/imgs/plugin_splatoon_script.png)\n\n![Authentication](/.github/readme/imgs/plugin_splatoon_auth.png)\n\n## 🐙 [stat.ink](https://stat.ink) integration\n\nIt is possible to make this plugin automatically export fetched games to [stat.ink](https://stat.ink) by adding the following:\n\n```yaml\nplugin_splatoon_statink: yes\nplugin_splatoon_statink_token: ${{ secrets.SPLATOON_STATINK_TOKEN }}\n```\n\n[stat.ink](https://stat.ink) API key can be found on user profile:\n\n![stat.ink](/.github/readme/imgs/plugin_splatoon_statink.png)\n\n## 👨‍💻 About\n\nData are fetched using [spacemeowx2/s3si.ts](https://github.com/spacemeowx2/s3si.ts) tool (which is itself based on [frozenpandaman/s3s](https://github.com/frozenpandaman/s3s)).\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Splatnet data\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.splatoon.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_splatoon: yes\n  plugin_splatoon_token: ${{ secrets.SPLATOON_TOKEN }}\n\n```\n```yaml\nname: Splatnet data with stat.ink integration\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.splatoon.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_splatoon: yes\n  plugin_splatoon_token: ${{ secrets.SPLATOON_TOKEN }}\n  plugin_splatoon_statink: yes\n  plugin_splatoon_statink_token: ${{ secrets.SPLATOON_STATINK_TOKEN }}\n  extras_css: |\n    h2 { display: none !important; }\n\n```\n<!--/examples-->\n","source/plugins/community/stock/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💹 Stock prices</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the stock market price of a given company.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_stock_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stock.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stock plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.d3</i></li>\n<li><i>metrics.api.yahoo.finance</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_token</code></h4></td>\n    <td rowspan=\"2\"><p>Yahoo Finance token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_symbol</code></h4></td>\n    <td rowspan=\"2\"><p>Company stock symbol</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_duration</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<ul>\n<li><code>1d</code>: Today</li>\n<li><code>5d</code>: 5 days</li>\n<li><code>1mo</code>: 1 month</li>\n<li><code>3mo</code>: 3 months</li>\n<li><code>6mo</code>: 6 months</li>\n<li><code>1y</code>: 1 year</li>\n<li><code>2y</code>: 2 years</li>\n<li><code>5y</code>: 5 years</li>\n<li><code>10y</code>: 10 years</li>\n<li><code>ytd</code>: Year to date</li>\n<li><code>max</code>: All time</li>\n</ul>\n<p>This is relative to current date</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 1d<br>\n<b>allowed values:</b><ul><li>1d</li><li>5d</li><li>1mo</li><li>3mo</li><li>6mo</li><li>1y</li><li>2y</li><li>5y</li><li>10y</li><li>ytd</li><li>max</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_interval</code></h4></td>\n    <td rowspan=\"2\"><p>Time interval between points</p>\n<ul>\n<li><code>1m</code>: 1 minute</li>\n<li><code>2m</code>: 2 minutes</li>\n<li><code>5m</code>: 5 minutes</li>\n<li><code>15m</code>: 15 minutes</li>\n<li><code>60m</code>: 60 minutes</li>\n<li><code>1d</code>: 1 day</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 5m<br>\n<b>allowed values:</b><ul><li>1m</li><li>2m</li><li>5m</li><li>15m</li><li>60m</li><li>1d</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a RapidAPI Yahoo Finance token\n\nCreate a [RapidAPI account](https://rapidapi.com) and subscribe to [Yahoo Finance API](https://rapidapi.com/apidojo/api/yahoo-finance1) to get a token.\n\n![RapidAPI token](/.github/readme/imgs/plugin_stock_token.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Stock prices from Tesla\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stock.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_stock: yes\n  plugin_stock_token: ${{ secrets.STOCK_TOKEN }}\n  plugin_stock_symbol: TSLA\n\n```\n<!--/examples-->\n","source/plugins/contributors/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🏅 Repository contributors</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin display repositories contributors from a commit range along with additional stats.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>By contribution types</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.contributors.categories.svg\" alt=\"\"></img></details>\n      <details><summary>By number of contributions</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.contributors.contributions.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors</code></h4></td>\n    <td rowspan=\"2\"><p>Enable contributors plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_base</code></h4></td>\n    <td rowspan=\"2\"><p>Base reference</p>\n<p>Can be a commit, tag, branch, etc.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_head</code></h4></td>\n    <td rowspan=\"2\"><p>Head reference</p>\n<p>Can be a commit, tag, branch, etc.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> master<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored users</p>\n<p>Can be used to ignore bots activity</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>users_ignored</code><br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_contributions</code></h4></td>\n    <td rowspan=\"2\"><p>Contributions count</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>contributors</code>: all contributors</li>\n<li><code>categories</code>: contributors sorted by contributions categories (must be configured with <a href=\"/source/plugins/contributors/README.md#plugin_contributors_categories\"><code>plugin_contributors_categories</code></a>)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> contributors<br>\n<b>allowed values:</b><ul><li>contributors</li><li>categories</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Contribution categories</p>\n<p>This option requires <a href=\"/source/plugins/contributors/README.md#plugin_contributors_sections\"><code>plugin_contributors_sections</code></a> to have <code>categories</code> in it to be effective.\nPass a JSON object mapping category with file globs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n</ul>\n<b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"📚 Documentation\": [\"README.md\", \"docs/**\"],\n  \"💻 Code\": [\"source/**\", \"src/**\"],\n  \"#️⃣ Others\": [\"*\"]\n}\n</code></pre></details><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗂️ Setting up contribution categories\n\nPass a JSON object to `plugin_contributors_categories` with categories names as keys and arrays of file globs as values to configure contributions categories.\n\nEach modified file by a contributor matching a file glob will add them in said category.\n\n> 💡 File matching respect keys order\n\n> 💡 Use `|` YAML multiline operator for better readability\n\n*Example: *\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_contributors: yes\n    plugin_contributors_categories: |\n      {\n        \"📚 Documentation\": [\"README.md\", \"docs/**\"],\n        \"💻 Code\": [\"source/**\", \"src/**\"],\n        \"#️⃣ Others\": [\"*\"]\n      }\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Contributors with contributions count\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.contributors.contributions.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_contributors: yes\n  plugin_contributors_contributions: yes\n\n```\n```yaml\nname: Contributors by categories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.contributors.categories.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_contributors: yes\n  plugin_contributors_sections: categories\n  plugin_contributors_categories: |\n    {\n      \"🧩 Plugins / 🖼️ templates\":[\"source/plugins/**\", \"source/templates/**\"],\n      \"📚 Documentation\":[\"README.md\", \"**/README.md\", \"**/metadata.yml\"],\n      \"💻 Code (other)\":[\"source/**\", \"Dockerfile\"]\n    }\n\n```\n<!--/examples-->\n","source/plugins/core/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧱 Core</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>Global configuration and options</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ token</code> <code>🗝️ committer_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n[➡️ Jump to all available options](#%EF%B8%8F-available-options)\n\n## 🌐 Configure used timezone\n\nBy default, dates use Greenwich meridian (GMT/UTC).\n\nConfigure `config_timezone` (see [supported timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) to avoid time offsets.\n\n*Example: configuring timezone*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_timezone: Europe/Paris\n```\n\n## 📦 Ordering content\n\nContent can be manually ordered using `config_order` option.\n\n*Example: display base.header, isocalendar, languages and stars in this specific order*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    base: header\n    plugin_isocalendar: yes\n    plugin_languages: yes\n    plugin_stars: yes\n    config_order: base.header, isocalendar, languages, stars\n```\n\n> 💡 Omitted sections will be appended at the end using default order\n\n> ℹ️ The handles to use for each plugin and sections is based on the [`partials/_.json`](/source/templates/classic/partials/_.json) of the template.\n> It may not necessarily be the plugin id (e.g. `base.header`, `base.activity+community`, `base.repositories`, etc.).\n\n## 🔕 Skipping repositories in plugins\n\nSome plugins support a `plugin_*_skipped` option which is used to skipped repositories from result. It inherits the global option [`repositories_skipped`](/source/plugins/base/README.md#repositories_skipped) which makes it easier to ignore repositories from all plugins at once.\n\nThese options support two different syntaxes:\n\n### Basic pattern matching\n\nSkip repositories by:\n- using their full handle (e.g. `user/repo`)\n- using only their name (e.g. `repo`)\n  - *in this case, the owner may be implicitly set to current `user` option*\n\n*Example: skipping repositories with basic pattern matching*\n```yml\nrepositories_skipped: my-repo, user/my-repo\n```\n\n> 💡 Either comma or newlines can be used to separate basic patterns\n\n### Advanced pattern matching\n\nTo enable advanced pattern matching to skip repositories, include `@use.patterns` at the beginning of the option value.\n\nSkip repositories by writing file-glob patterns, with any of the supported operation:\n- `#` to write comments\n- `-` to exclude repositories\n  - *the `-` is implicit and may be omitted from excluding patterns*\n- `+` to include back repositories\n\n> ℹ️ *metrics* use [isaacs/minimatch](https://github.com/isaacs/minimatch) as its file-glob matcher\n\n*Example: skipping repositories with basic advanced matching*\n```yml\nrepositories_skipped: |\n  @use.patterns\n\n  # Skip a specific repository (both patterns are equivalent)\n  user/repo\n  -user/repo\n\n  # Skip repositories matching a given pattern\n  user/repo-*\n  {user1, user2, user3}/*\n\n  # Include back a previously skipped repository\n  org/repo\n  +org/include-this-repo\n```\n\n> ℹ️ Unlike basic pattern matching, patterns are always tested against the full repository handle (the user will not be implicitly added)\n\n> ⚠️ As patterns may contain commas, be sure to use newlines rather than commas as separator to ensure patterns are correctly parsed\n\n## 🪛 Using presets\n\nIt is possible to reuse the same configuration across different repositories and workflows using configuration presets.\nA preset override the default values of inputs, and multiple presets can be provided at once through URLs or file paths.\n\nOptions resolution is done in the following order:\n- default values\n- presets, from first to last\n- user values\n\n*Example: using a configuration preset from an url*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_presets: https://raw.githubusercontent.com/lowlighter/metrics/presets/lunar-red/preset.yaml\n```\n\nSome presets are hosted on this repository on the [`@presets`](https://github.com/lowlighter/metrics/tree/presets) branch and can be used directly by using their identifier prefixed by an arobase (`@`).\n\n*Example: using a pre-defined configuration preset*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_presets: \"@lunar-red\"\n```\n\n> ⚠️ `🔐 Tokens` and options marked with `⏯️ Cannot be preset`, as they suggest, cannot be preset and thus requires to be explicitly defined to be set.\n\n> ℹ️ Presets configurations use [schemas](https://github.com/lowlighter/metrics/tree/presets/%40schema) to ensure compatibility between format changes\n\n## 🎨 Custom CSS styling\n\nAdditional CSS can be injected using `extras_css` option.\n\n*Example: changing the color of `h2`*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    base: header\n    extras_css: |\n      h2 {\n        color: red;\n      }\n```\n\n> 💡 *metrics* does not use `!important` keyword, so use it when having trouble when styling is not applied\n\n> 💡 If you make an heavy use of this option, creating a [community templates](/source/templates/community/README.md) may be a better alternative\n\n> ⚠️ CSS styles may slightly change between releases, backward compatibility is not guaranteed!\n\n## 🗳️ Custom JavaScript scripting\n\nAdditional JavaScript can be injected using `extras_js` option.\n\n*Example: removing all `h2`*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    base: header\n    extras_js: |\n      document.querySelectorAll(\"h2\")?.forEach(h2 => h2.remove())\n```\n\n> ℹ️ JavaScript is executed in puppeteer context during the rendering phase, **not** in *metrics* context.\n> It will be possible to access `document` and all other features accessible like if the SVG was opened in a browser page\n\n> 💡 If you make an heavy use of this option, creating a [community templates](/source/templates/community/README.md) may be a better alternative\n\n> ⚠️ HTML elements may slightly change between releases, backward compatibility is not guaranteed!\n\n## 🔲 Adjusting padding\n\nSVG rendering is dependent on operating system, browser and fonts combination and may look different across different platforms.\n\nIt may not look like it, but computing the height of a SVG is not trivial. *metrics* spawns an headless browser and try to do its best to resize the result, but it may sometimes ends up in either cropped or oversized images.\n\nTweak `config_padding` option to manually adjust padding and solve this issue.\n\nThis settings supports the following format:\n- 1 value for both width and height\n- 2 values for width first and height second, separated by a comma (`,`)\n\n> 💡 Both negative and positive values are allowed\n\nEach value need to respect the following format:\n- {number}\n- {number} + {number}%\n- {number}%\n\n> 💡 Percentage based values are relative to the height computed by puppeteer\n\n*Example: add 10px padding for both width and height*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_padding: 10\n```\n\n*Example: add 10px padding to height and increase it by 8%*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_padding: 0, 10 + 8%\n```\n\n*Example: remove 10% from height*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_padding: 0, -10%\n```\n\n## ↔️ Controlling display size\n\nSome templates may support different output display size.\n\nA `regular` display size will render a medium-sized image suitable for both desktop and mobile displays, while a `large` one will be more suitable only for desktop and some plugins (like [`📌 topics`](/source/plugins/topics/README.md) or [`🏅 contributors`](/source/plugins/contributors/README.md))\n\nThe `columns` display will render a full-width image with automatic resizing: two columns for desktop and a single one column for mobiles.\n\n*Example: output a PNG image*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_display: large\n```\n\n## 💱 Configuring output format\n\nUse `config_output` to change output format.\n\n*Example: output a PNG image*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_output: png\n```\n\nA JSON output can be used to retrieved collected data and use it elsewhere.\n\n*Example: output a JSON data dump*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_output: json\n```\n\nWhen using a PDF output, it is advised to set `config_base64: yes` to encode embed images in base64 in order to make self-contained documents.\n\n*Example: output a self-contained PDF document*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    markdown: TEMPLATE.md\n    config_output: markdown-pdf\n    config_base64: yes\n```\n\n## ✨ Render `Metrics insights` statically\n\nIt is possible to generate a self-contained HTML file containing `✨ Metrics insights` output by using `config_output: insights`.\n\n> 💡 Note that like `✨ Metrics insights` content is not configurable, thus any other plugin option will actually be ignored\n\n*Example: output `✨ Metrics insights` report*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_output: insights\n```\n\n## 🧶 Configuring output action\n\nBefore configuring output action, ensure that workflows permissions are properly set.\nThese can be changed either through repository settings in Actions tab:\n\n![Setting workflows permissions](/.github/readme/imgs/setup_workflow_permissions.light.png#gh-light-mode-only)\n![Setting workflows permissions](/.github/readme/imgs/setup_workflow_permissions.dark.png#gh-dark-mode-only)\n\nOr more granulary [at job or workflow level](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token).\n\n### Using commits (default)\n\nUse `output_action: commit` to make the action directly push changes to `committer_branch` with a commit.\nA custom commit message can be used through `committer_message`.\n\n> 💡 *metrics* will automatically ignore push events with a commit message containing `[Skip GitHub Action]` or `Auto-generated metrics for run #` to avoid infinite loops. Note that by default, GitHub already ignore events pushed by `${{ github.token }}` or containing `[skip ci]` in commit message\n\n*Example: push output to metrics-renders branch rather than the default branch*\n```yaml\nmetrics:\n  permissions:\n    contents: write\n  steps:\n    - uses: lowlighter/metrics@latest\n      with:\n        output_action: commit\n        committer_branch: metrics-renders\n        committer_message: \"chore: update metrics\"\n```\n\n### Using pull requests\n\nUse `output_action: pull-request` to make the action open a new pull request and push changes from the same run on it.\n\nThe last step should use either `pull-request-merge`, `pull-request-squash` or `pull-request-rebase` to merge changes to `committer_branch`.\n\n> 💡 When using `pull-request` output action, do not forget to change `filename` too or previous output will be overwritten!\n\n*Example: push two outputs using a merge pull request*\n```yaml\nmetrics:\n  permissions:\n    contents: write\n    pull-requests: write\n  steps:\n    - uses: lowlighter/metrics@latest\n      with:\n        filename: my-metrics-0.svg\n        output_action: pull-request\n\n    - uses: lowlighter/metrics@latest\n      with:\n        filename: my-metrics-1.svg\n        output_action: pull-request-merge\n```\n\n### Using gists\n\nUse `output_action: gist` to push output to a [GitHub gist](https://gist.github.com) instead.\nIt is required to provide a gist id to `committer_gist` option to make it work.\n\n> 💡 This feature will use `token` instead of `committer_token` to push changes, so `gists` scope must be granted to the original `token` first\n\n*Example: push output to a gist*\n```yaml\nmetrics:\n  steps:\n    - uses: lowlighter/metrics@latest\n      with:\n        output_action: gist\n        committer_gist: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n### Manual handling\n\nUse `output_action: none` to perform custom processing with outputs.\nThey will be available under `/metrics_renders/{filename}` in the runner.\n\n*Example: generate outputs and manually push them*\n```yaml\nmetrics:\n  permissions:\n    contents: write\n  steps:\n    - name: Checkout repository\n      uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n\n    - uses: lowlighter/metrics@latest\n      with:\n        output_action: none\n\n    - uses: lowlighter/metrics@latest\n      run: |\n        set +e\n        git checkout metrics-renders\n        git config user.name github-actions[bot]\n        git config user.email 41898282+github-actions[bot]@users.noreply.github.com\n        sudo mv /metrics_renders/* ./\n        git add --all\n        git commit -m \"chore: push metrics\"\n        git push\n```\n\n## ♻️ Retrying automatically failed rendering and output action\n\nRendering is subject to external factors and can fail occasionally.\nUse `retries` and `retries_delay` options to automatically retry rendering.\n\n*Example: retry render up to 3 times (wait 5 minutes between each fail)*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    retries: 3\n    retries_delay: 300\n```\n\nOutput action is also subject to GitHub API rate-limiting and overall health status and can fail occasionally.\nUse `retries_output_action` and `retries_delay_output_action` options to automatically retry output action.\n\n> 💡 As output action is a separate step from rendering, render step won't be called again\n\n*Example: retry output action up to 5 times (wait 2 minutes between each fail)*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    retries_output_action: 5\n    retries_delay_output_action: 120\n```\n\n## 🗜️ Optimize SVG output\n\nTo reduce filesize and decrease loading time, *metrics* offers several optimization options, such as purging unused CSS and style minification, XML pretty-printing (which also reduce diffs between changes) and general SVG optimization (still experimental).\n\n> 💡 This option is enabled by default!\n\n*Example: optimize CSS and XML*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    optimize: css, xml\n```\n\n*Example: optimize SVG (experimental)*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    optimize: svg\n    experimental_features: --optimize-svg\n```\n\n## 🐳 Faster execution with prebuilt docker images\n\nWhen using `lowlighter/metrics` official releases as a GitHub Action, a prebuilt docker container image will be pulled from [GitHub Container Registry](https://github.com/users/lowlighter/packages/container/package/metrics). It allows to significantly reduce workflow execution time.\n\n> 💡 This option is enabled by default!\n\nOn forks, this feature is disable to take into account any changes you made on it.\n\n*Example: using prebuilt docker image*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    use_prebuilt_image: yes\n```\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>token</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub Personal Access Token</p>\n<p>No scopes are required by default, though some plugins and features may require additional scopes.</p>\n<p>When using a configuration which does not requires a GitHub PAT, it is possible to pass <code>NOT_NEEDED</code> instead.\nWhen doing so, any settings which defaults on user fetched values will not be templated (e.g. <code>.user.*</code>) and will usually need to be set manually.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">✔️ Required<br>\n🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>user</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub username</p>\n<p>Defaults to <a href=\"/source/plugins/core/README.md#token\"><code>token</code></a> owner username.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repo</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub repository</p>\n<p>This option is only revelant for repositories templates</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_token</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub Token used to commit metrics</p>\n<p>Leave this to <code>${{ github.token }}</code> or <code>${{ secrets.GITHUB_TOKEN }}</code>, which is a special auto-generated token restricted to current repository scope.</p>\n<blockquote>\n<p>💡 When using <a href=\"/source/plugins/core/README.md#output_action\"><code>output_action: gist</code></a>, it will use <a href=\"/source/plugins/core/README.md#token\"><code>token</code></a> instead, since gists are outside of scope</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br>\n<b>default:</b> ${{ github.token }}<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_branch</code></h4></td>\n    <td rowspan=\"2\"><p>Target branch</p>\n<p>Defaults to current repository default branch</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_message</code></h4></td>\n    <td rowspan=\"2\"><p>Commit message</p>\n<p>Use <code>${filename}</code> to display filename</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> Update ${filename} - [Skip GitHub Action]<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_gist</code></h4></td>\n    <td rowspan=\"2\"><p>Gist id</p>\n<p>Specify an existing gist id (can be retrieved from its URL) when using <a href=\"/source/plugins/core/README.md#output_action\"><code>output_action: gist</code></a>.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>filename</code></h4></td>\n    <td rowspan=\"2\"><p>Output path</p>\n<p>When using an asterisk (<code>*</code>), correct extension will automatically be applied according to <a href=\"/source/plugins/core/README.md#config_output\"><code>config_output</code></a> value</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> github-metrics.*<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>markdown</code></h4></td>\n    <td rowspan=\"2\"><p>Markdown template path</p>\n<p>It can be either a local path or a full link (e.g. <a href=\"https://raw.githubusercontent.com\">https://raw.githubusercontent.com</a>)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> TEMPLATE.md<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>markdown_cache</code></h4></td>\n    <td rowspan=\"2\"><p>Markdown file cache</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> .cache<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>output_action</code></h4></td>\n    <td rowspan=\"2\"><p>Output action</p>\n<ul>\n<li><code>none</code>: just create file in <code>/metrics_renders</code> directory of action runner</li>\n<li><code>commit</code>: push output to <code>committer_branch</code></li>\n<li><code>pull-request</code>: push output to a new branch and open a pull request to <code>committer_branch</code></li>\n<li><code>pull-request-merge</code>: same as <code>pull-request</code> and additionally merge pull request</li>\n<li><code>pull-request-squash</code>: same as <code>pull-request</code> and additionally squash and merge pull request</li>\n<li><code>pull-request-rebase</code>: same as <code>pull-request</code> and additionally rebase and merge pull request</li>\n<li><code>gist</code>: push output to <code>committer_gist</code></li>\n</ul>\n<blockquote>\n<p>💡 When using <code>pull-request</code>, you will need to set the last job with a <code>pull-request-*</code> action instead, else it won&#39;t be merged</p>\n</blockquote>\n<blockquote>\n<p>⚠️ As GitHub gists API does not support binary files upload, <code>gist</code> does not support <a href=\"/source/plugins/core/README.md#config_output\"><code>config_output</code></a> set to either <code>png</code>, <code>jpeg</code> or <code>markdown-pdf</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> commit<br>\n<b>allowed values:</b><ul><li>none</li><li>commit</li><li>pull-request</li><li>pull-request-merge</li><li>pull-request-squash</li><li>pull-request-rebase</li><li>gist</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>output_condition</code></h4></td>\n    <td rowspan=\"2\"><p>Output condition</p>\n<ul>\n<li><code>always</code>: always try to push changes</li>\n<li><code>data-changed</code>: skip changes if no data changed (e.g. like when only metadata changed)</li>\n</ul>\n<blockquote>\n<p>ℹ️ This option is only revelant when <a href=\"/source/plugins/core/README.md#config_output\"><code>config_output: svg</code></a> is set</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> always<br>\n<b>allowed values:</b><ul><li>always</li><li>data-changed</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>optimize</code></h4></td>\n    <td rowspan=\"2\"><p>Optimization features</p>\n<ul>\n<li><code>css</code>: purge and minify CSS styles</li>\n<li><code>xml</code>: pretty-print XML (useful to reduce diff)</li>\n<li><code>svg</code>: optimization with SVGO (experimental, requires <a href=\"/source/plugins/core/README.md#experimental_features\"><code>experimental_features: --optimize-svg</code></a>)</li>\n</ul>\n<p>Templates may not always honour all provided options</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> css, xml<br>\n<b>allowed values:</b><ul><li>css</li><li>xml</li><li>svg</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>setup_community_templates</code></h4></td>\n    <td rowspan=\"2\"><p>Community templates to setup</p>\n<p>See <a href=\"https://github.com/lowlighter/metrics/blob/master/source/templates/community/README.md\">community templates guide</a> for more informations</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.setup.community.templates</i></li>\n</ul>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>template</code></h4></td>\n    <td rowspan=\"2\"><p>Template</p>\n<p>Community templates must be prefixed by at sign (<code>@</code>)\nSee <a href=\"https://github.com/lowlighter/metrics/blob/master/README.md#%EF%B8%8F-templates\">list of supported templates</a></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> classic<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>query</code></h4></td>\n    <td rowspan=\"2\"><p>Query parameters</p>\n<p>Pass additional parameters to templates.\nThis is mostly useful for custom templates.</p>\n<blockquote>\n<p>⚠️ <strong>Do not</strong> use this option to pass other existing parameters, they will be overwritten</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{}</code></pre></details><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>extras_css</code></h4></td>\n    <td rowspan=\"2\"><p>Extra CSS</p>\n<p>Custom CSS that will be injected in used template.\nUseful to avoid creating a new template just to tweak some styling</p>\n<blockquote>\n<p>💡 <em>metrics</em> tends to avoid using <code>!important</code> rules, which means that most styling can be overridden by this option when using <code>!important</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.user.css</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>extras_js</code></h4></td>\n    <td rowspan=\"2\"><p>Extra JavaScript</p>\n<p>Custom JavaScript that will be executed during puppeteer rendering.\nUseful to avoid creating a new template just to tweak some content.</p>\n<blockquote>\n<p>⚠️ Note that is it executed within puppeteer context and <strong>not</strong> within <em>metrics</em> context.\nNo access to fetched data or configuration will be offered through this context.\nIt is run after transformations and optimizations, but just before resizing.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.user.js</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>github_api_rest</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub REST API endpoint</p>\n<p>Can be used to support <a href=\"https://github.com/enterprise\">GitHub enterprises server</a>.\nLeave empty to use default endpoint.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>github_api_graphql</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub GraphQL API endpoint</p>\n<p>Can be used to support <a href=\"https://github.com/enterprise\">GitHub enterprises server</a>.\nLeave empty to use default endpoint.</p>\n<blockquote>\n<p>ℹ️ GraphQL octokit will automatically append <code>/graphql</code> to provided endpoint</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_timezone</code></h4></td>\n    <td rowspan=\"2\"><p>Timezone for dates</p>\n<p>See <a href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\">list of supported timezone</a></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_order</code></h4></td>\n    <td rowspan=\"2\"><p>Plugin order</p>\n<p>By default, templates use <code>partials/_.json</code> ordering.\nYou can override the content order by using this setting.</p>\n<p>If some partials are omitted, they will be appended at the end with default ordering</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_twemoji</code></h4></td>\n    <td rowspan=\"2\"><p>Use twemojis</p>\n<p>Replace emojis by <a href=\"%5Btwemojis%5D(https://github.com/twitter/twemoji)\">twemojis</a> to have a consistent render across all platforms\nMay increase filesize.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_gemoji</code></h4></td>\n    <td rowspan=\"2\"><p>Use GitHub custom emojis</p>\n<p>GitHub supports additional emojis which are not registered in Unicode standard (:octocat:, :shipit:, :trollface:, ...)\nSee full list at <a href=\"https://api.github.com/emojis\">https://api.github.com/emojis</a>.</p>\n<p>This option has no effect when [`token: NOT_NEEDED``](/source/plugins/core/README.md#token) is set.</p>\n<p>May increase filesize</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_octicon</code></h4></td>\n    <td rowspan=\"2\"><p>Use GitHub octicons</p>\n<p>Octicons are open-sourced icons provided by GitHub.\nSee full list at <a href=\"https://primer.style/octicons\">https://primer.style/octicons</a>.</p>\n<p>To include an octicon, use the following syntax: <code>:octicon-{name}-{size}:</code>.\nSize must be a supported icon size (12, 16 or 24).\n16px octicons can omit size and directly use <code>:octicon-{name}:</code> syntax.</p>\n<p>May increase filesize</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_display</code></h4></td>\n    <td rowspan=\"2\"><p>Display width (for image output formats)</p>\n<ul>\n<li><code>regular</code>: 480px width</li>\n<li><code>large</code>: 960px width (may not be supported by all templates)</li>\n<li><code>columns</code>: Full width with auto-sizing (two columns for desktops, and one column for mobile)<ul>\n<li>known issue: <a href=\"https://github.com/lowlighter/metrics/issues/374\">https://github.com/lowlighter/metrics/issues/374</a></li>\n</ul>\n</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> regular<br>\n<b>allowed values:</b><ul><li>regular</li><li>large</li><li>columns</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_animations</code></h4></td>\n    <td rowspan=\"2\"><p>Use CSS animations</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_base64</code></h4></td>\n    <td rowspan=\"2\"><p>Base64-encoded images</p>\n<p>Enable this option to make self-contained output (i.e. with no external links)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_padding</code></h4></td>\n    <td rowspan=\"2\"><p>Output padding</p>\n<p>Although <em>metrics</em> try to auto-guess resulting height, rendering is still dependent on OS and browser settings.\nIt can result in cropped or oversized outputs.</p>\n<p>This settings let you manually adjust padding with the following format:</p>\n<ul>\n<li>1 value for both width and height</li>\n<li>2 values for width fist and height second, separated by a comma (<code>,</code>)</li>\n</ul>\n<p>Each value need to respect the following format:</p>\n<ul>\n<li><code>{number}</code></li>\n<li><code>{number} + {number}%</code></li>\n<li><code>{number}%</code></li>\n</ul>\n<p>Percentage are relative to computed dimensions</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 0, 8 + 11%<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_output</code></h4></td>\n    <td rowspan=\"2\"><p>Output format</p>\n<ul>\n<li><code>auto</code>: Template default (usually <code>svg</code> or <code>markdown</code>)</li>\n<li><code>svg</code>: SVG image</li>\n<li><code>png</code>: PNG image (animations not supported)</li>\n<li><code>jpeg</code>: JPEG image (animations and transparency not supported)</li>\n<li><code>json</code>: JSON data dump</li>\n<li><code>markdown</code>: Markdown rendered file</li>\n<li><code>markdown-pdf</code>: PDF from markdown rendered file</li>\n<li><code>insights</code>: Metrics Insights self-contained HTML file (not configurable)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> auto<br>\n<b>allowed values:</b><ul><li>auto</li><li>svg</li><li>png</li><li>jpeg</li><li>json</li><li>markdown</li><li>markdown-pdf</li><li>insights</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_presets</code></h4></td>\n    <td rowspan=\"2\"><p>Configuration presets</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.setup.community.presets</i></li>\n</ul>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries</code></h4></td>\n    <td rowspan=\"2\"><p>Retries in case of failures (for rendering)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 10)</i>\n<br>\n<b>default:</b> 3<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries_delay</code></h4></td>\n    <td rowspan=\"2\"><p>Delay between each retry (in seconds, for rendering)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 3600)</i>\n<br>\n<b>default:</b> 300<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries_output_action</code></h4></td>\n    <td rowspan=\"2\"><p>Retries in case of failures (for output action)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 10)</i>\n<br>\n<b>default:</b> 5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries_delay_output_action</code></h4></td>\n    <td rowspan=\"2\"><p>Delay between each retry (in seconds, for output action)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 3600)</i>\n<br>\n<b>default:</b> 120<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>clean_workflows</code></h4></td>\n    <td rowspan=\"2\"><p>Clean previous workflows jobs</p>\n<p>This can be used to clean up Action tabs from previous workflows runs.</p>\n<p>Use <code>all</code> to clean up workflows runs in any state.</p>\n<blockquote>\n<p>⚠️ When reporting issues, it is <strong>required</strong> to provide logs so it can be investigated and reproduced.\nBe sure to disable this option when asking for help or submitting bug reports.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>cancelled</li><li>failure</li><li>success</li><li>skipped</li><li>startup_failure</li><li>timed_out</li><li>all</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>delay</code></h4></td>\n    <td rowspan=\"2\"><p>Job delay</p>\n<p>This can be used to avoid triggering GitHub abuse mechanics on large workflows</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 3600)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>quota_required_rest</code></h4></td>\n    <td rowspan=\"2\"><p>Minimum GitHub REST API requests quota required to run</p>\n<p>Action will cancel itself without any errors if requirements are not met</p>\n<p>This option has no effect when <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a> is set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 5000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>quota_required_graphql</code></h4></td>\n    <td rowspan=\"2\"><p>Minimum GitHub GraphQL API requests quota required to run</p>\n<p>Action will cancel itself without any errors if requirements are not met</p>\n<p>This option has no effect when <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a> is set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 5000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>quota_required_search</code></h4></td>\n    <td rowspan=\"2\"><p>Minimum GitHub Search API requests quota required to run</p>\n<p>Action will cancel itself without any errors if requirements are not met</p>\n<p>This option has no effect when <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a> is set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>notice_releases</code></h4></td>\n    <td rowspan=\"2\"><p>Notice about new releases of metrics</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>use_prebuilt_image</code></h4></td>\n    <td rowspan=\"2\"><p>Use pre-built docker image from <a href=\"https://github.com/lowlighter/metrics/pkgs/container/metrics\">GitHub container registry</a></p>\n<p>It allows to save build time and make job significantly faster, and there is almost no reason to disable this settings.\nThis option has no effects on forks (images will always be rebuilt from Dockerfile)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugins_errors_fatal</code></h4></td>\n    <td rowspan=\"2\"><p>Fatal plugin errors</p>\n<p>When enabled, the job will fail in case of plugin errors, else it will be handled gracefully in output with an error message</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>debug</code></h4></td>\n    <td rowspan=\"2\"><p>Debug mode</p>\n<p>This setting is automatically enable if a job fail (useful with <a href=\"/source/plugins/core/README.md#plugins_errors_fatal\"><code>plugins_errors_fatal: yes</code></a>)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>verify</code></h4></td>\n    <td rowspan=\"2\"><p>SVG validity check</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.libxml2</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>debug_flags</code></h4></td>\n    <td rowspan=\"2\"><p>Debug flags</p>\n<ul>\n<li><code>--cakeday</code>: simulate registration anniversary</li>\n<li><code>--halloween</code>: enable halloween colors <em>(only first color scheme will be applied if multiple are specified)</em></li>\n<li><code>--winter</code>: enable winter colors <em>(only first color scheme will be applied if multiple are specified)</em></li>\n<li><code>--error</code>: force render error</li>\n<li><code>--puppeteer-debug</code>: enable puppeteer debug mode*</li>\n<li><code>--puppeteer-disable-headless</code>: disable puppeteer headless mode <em>(requires a graphical environment)</em>*</li>\n<li><code>--puppeteer-wait-load</code>: override puppeteer wait events*</li>\n<li><code>--puppeteer-wait-domcontentloaded</code>: override puppeteer wait events*</li>\n<li><code>--puppeteer-wait-networkidle0</code>: override puppeteer wait events*</li>\n<li><code>--puppeteer-wait-networkidle2</code>: override puppeteer wait events*</li>\n</ul>\n<blockquote>\n<p><em>* 🌐 Web instances needs to have <a href=\"/source/plugins/core/README.md#debug\"><code>debug</code></a> set in <code>settings.json</code> for these flags to be supported.</em></p>\n</blockquote>\n<blockquote>\n<p>⚠️ No backward compatibility is guaranteed for these features, they are only meant for debugging purposes.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>array</code>\n<i>(space-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>--cakeday</li><li>--halloween</li><li>--winter</li><li>--error</li><li>--puppeteer-debug</li><li>--puppeteer-disable-headless</li><li>--puppeteer-wait-load</li><li>--puppeteer-wait-domcontentloaded</li><li>--puppeteer-wait-networkidle0</li><li>--puppeteer-wait-networkidle2</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>debug_print</code></h4></td>\n    <td rowspan=\"2\"><p>Print output in console</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>dryrun</code></h4></td>\n    <td rowspan=\"2\"><p>Dry-run</p>\n<blockquote>\n<p>⚠️ Unlike <a href=\"/source/plugins/core/README.md#output_action\"><code>output_action: none</code></a>, output file won&#39;t be available in <code>/metrics_renders</code> directory</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>experimental_features</code></h4></td>\n    <td rowspan=\"2\"><p>Experimental features</p>\n<blockquote>\n<p>⚠️ No backward compatibility is guaranteed for these features</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>array</code>\n<i>(space-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>--optimize-svg</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>use_mocked_data</code></h4></td>\n    <td rowspan=\"2\"><p>Use mocked data instead of live APIs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n","source/plugins/discussions/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💬 Discussions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays GitHub discussions stats.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.discussions.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_discussions</code></h4></td>\n    <td rowspan=\"2\"><p>Enable discussions plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_discussions_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Discussion categories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_discussions_categories_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (categories)</p>\n<p>Note that categories are sorted from highest to lowest count</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: GitHub Discussions\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.discussions.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_discussions: yes\n  plugin_discussions_categories_limit: 8\n\n```\n<!--/examples-->\n","source/plugins/followup/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎟️ Follow-up of issues and pull requests</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the ratio of open/closed issues and the ratio of open/merged pull requests across repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Indepth analysis</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.followup.indepth.svg\" alt=\"\"></img></details>\n      <details><summary>Created on a user's repositories</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.followup.svg\" alt=\"\"></img></details>\n      <details><summary>Created by a user</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.followup.user.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup</code></h4></td>\n    <td rowspan=\"2\"><p>Enable followup plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>repositories</code>: overall status of issues and pull requests on your repositories</li>\n<li><code>user</code>: overall status of issues and pull requests you have created on GitHub</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> repositories<br>\n<b>allowed values:</b><ul><li>repositories</li><li>user</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth analysis</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup_archived</code></h4></td>\n    <td rowspan=\"2\"><p>Include archived repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔎 `indepth` mode\n\nThe `plugin_followup_indepth` option collects additional stats to differentiate issues and pull requests opened by maintainers and users.\n\nIt helps knowing whether repositories are also maintained by other users and give an overall health status of repositories.\n\n> ⚠️ This mode will try to list users with push access to know who are the maintainers in order to place issues in the correct category, which requires a `repo` scope. If not available, it will consider that only the owner is a maintainer.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Opened on user's repositories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n\n```\n```yaml\nname: Opened by user\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.user.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n  plugin_followup_sections: user\n\n```\n```yaml\nname: Indepth analysis\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.indepth.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n  plugin_followup_indepth: yes\n\n```\n```yaml\nname: Exclude Archived\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.archived.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n  plugin_followup_archived: no\n\n```\n<!--/examples-->\n","source/plugins/gists/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎫 Gists</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays <a href=\"https://gist.github.com\">gists</a> stats.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.gists.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_gists</code></h4></td>\n    <td rowspan=\"2\"><p>Enable gists plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Gists\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.gists.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_gists: yes\n\n```\n<!--/examples-->\n","source/plugins/habits/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💡 Coding habits and activity</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays coding habits based on recent activity, such as active hours and languages recently used.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Recent activity charts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.habits.charts.svg\" alt=\"\"></img></details>\n      <details open><summary>Mildly interesting facts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.habits.facts.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits</code></h4></td>\n    <td rowspan=\"2\"><p>Enable habits plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_from</code></h4></td>\n    <td rowspan=\"2\"><p>Events to use</p>\n<p>A higher number will increase stats accuracy</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_days</code></h4></td>\n    <td rowspan=\"2\"><p>Event maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 14<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_facts</code></h4></td>\n    <td rowspan=\"2\"><p>Mildly interesting facts</p>\n<p>It includes indentation type, average number of characters per line of code, and most active time and day</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_charts</code></h4></td>\n    <td rowspan=\"2\"><p>Charts</p>\n<p>It includes commit activity per hour of day and commit activity per day of week\nRecent language activity may also displayed (it requires extras features to be enabled for web instances) for historical reasons</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_charts_type</code></h4></td>\n    <td rowspan=\"2\"><p>Charts display type</p>\n<ul>\n<li><code>classic</code>: <code>&lt;div&gt;</code> based charts, simple and lightweight</li>\n<li><code>graph</code>: <code>&lt;svg&gt;</code> based charts, smooth</li>\n</ul>\n<blockquote>\n<p>⚠️ <code>chartist</code> option has been deprecated and is now equivalent to <code>graph</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.d3</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> classic<br>\n<b>allowed values:</b><ul><li>classic</li><li>graph</li><li>chartist</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_trim</code></h4></td>\n    <td rowspan=\"2\"><p>Trim unused hours on charts</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_languages_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (languages)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 8)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 8<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_languages_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Display threshold (percentage)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 0%<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🌐 Configure used timezone\n\nBy default, dates use Greenwich meridian (GMT/UTC).\n\nConfigure `config_timezone` (see [supported timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) to avoid time offsets.\n\n*Example: configuring timezone*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_timezone: Europe/Paris\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Mildly interesting facts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.habits.facts.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_habits: yes\n  plugin_habits_facts: yes\n  plugin_habits_charts: no\n  config_timezone: Europe/Paris\n\n```\n```yaml\nname: Recent activity charts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.habits.charts.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_habits: yes\n  plugin_habits_facts: no\n  plugin_habits_charts: yes\n  config_timezone: Europe/Paris\n\n```\n<!--/examples-->\n\n\n","source/plugins/introduction/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🙋 Introduction</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays account bio or organization/repository description.</p>\n<p>Since account bio is already displayed on account profile, this plugin is mostly intended for external usage.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>For a user or an organization</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.introduction.svg\" alt=\"\"></img></details>\n      <details><summary>For a repository</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.introduction.repository.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_introduction</code></h4></td>\n    <td rowspan=\"2\"><p>Enable introduction plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_introduction_title</code></h4></td>\n    <td rowspan=\"2\"><p>Section title</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Organization introduction\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.introduction.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  user: github\n  base: header\n  plugin_introduction: yes\n\n```\n```yaml\nname: Repository introduction\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.introduction.repository.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  template: repository\n  repo: metrics\n  base: header\n  plugin_introduction: yes\n\n```\n<!--/examples-->\n","source/plugins/isocalendar/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📅 Isometric commit calendar</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays an isometric view of a user commit calendar along with a few additional statistics like current streak and average number of commit per day.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Full year calendar</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.isocalendar.fullyear.svg\" alt=\"\"></img></details>\n      <details><summary>Half year calendar</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.isocalendar.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_isocalendar</code></h4></td>\n    <td rowspan=\"2\"><p>Enable isocalendar plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_isocalendar_duration</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<ul>\n<li><code>half-year</code>: 180 days</li>\n<li><code>full-year</code>: 1 year</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> half-year<br>\n<b>allowed values:</b><ul><li>half-year</li><li>full-year</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Half-year calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.isocalendar.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_isocalendar: yes\n\n```\n```yaml\nname: Full-year calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.isocalendar.fullyear.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_isocalendar: yes\n  plugin_isocalendar_duration: full-year\n\n```\n<!--/examples-->\n","source/plugins/languages/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🈷️ Languages activity</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display which languages you use across all repositories you contributed to.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Indepth analysis (clone and analyze repositories)</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.indepth.svg\" alt=\"\"></img></details>\n      <details open><summary>Recently used (analyze recent activity events)</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.recent.svg\" alt=\"\"></img></details>\n      <details><summary>Default algorithm</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.svg\" alt=\"\"></img></details>\n      <details><summary>Default algorithm (with details)</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.details.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Enable languages plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored languages</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 8)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 8<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Display threshold (percentage)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 0%<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_other</code></h4></td>\n    <td rowspan=\"2\"><p>Group unknown, ignored and over-limit languages into &quot;Other&quot; category</p>\n<p>If this option is enabled, &quot;Other&quot; category will not be subject to <a href=\"/source/plugins/languages/README.md#plugin_languages_threshold\"><code>plugin_languages_threshold</code></a>.\nIt will be automatically hidden if empty.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_colors</code></h4></td>\n    <td rowspan=\"2\"><p>Custom languages colors</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> github<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_aliases</code></h4></td>\n    <td rowspan=\"2\"><p>Custom languages names</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<p>Note that <code>recently-used</code> is only available when <a href=\"/source/plugins/languages/README.md#plugin_languages_indepth\"><code>plugin_languages_indepth</code></a> is enabled</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> most-used<br>\n<b>allowed values:</b><ul><li>most-used</li><li>recently-used</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_details</code></h4></td>\n    <td rowspan=\"2\"><p>Additional details</p>\n<p>Note that <code>lines</code> is only available when <a href=\"/source/plugins/languages/README.md#plugin_languages_indepth\"><code>plugin_languages_indepth</code></a> is enabled</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>bytes-size</li><li>percentage</li><li>lines</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode</p>\n<blockquote>\n<p>⚠️ read documentation first</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.cpu.overuse</i></li>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> false<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_indepth_custom</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Custom repositories</p>\n<p>Specify a list of additional repositories to analyze.</p>\n<p>Below are the supported syntax formats:</p>\n<ul>\n<li><code>owner/repo</code> (e.g. <code>lowlighter/metrics</code>)</li>\n<li><code>owner/repo@branch</code> (e.g. <code>lowlighter/metrics@main</code>)</li>\n<li><code>owner/repo@branch:commits</code> (e.g. <code>lowlighter/metrics@main:v1.0..v1.1</code>)<ul>\n<li>See <a href=\"https://git-scm.com/docs/git-rev-list#_description\"><code>git rev-list</code></a> documentation for more information about <code>commits</code> syntax</li>\n</ul>\n</li>\n</ul>\n<p>It is possible to specify repositories that are not hosted on <a href=\"https://github.com\">github.com</a> by passing a full url instead.\nIn this case the repository must be accessible directly.</p>\n<blockquote>\n<p>ℹ️ This option bypass <a href=\"/source/plugins/languages/README.md#plugin_languages_skipped\"><code>plugin_languages_skipped</code></a></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_analysis_timeout</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Analysis timeout</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 60)</i>\n<br>\n<b>default:</b> 15<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_analysis_timeout_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Analysis timeout (repositories)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 15)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 7.5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Displayed categories (most-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> markup, programming<br>\n<b>allowed values:</b><ul><li>data</li><li>markup</li><li>programming</li><li>prose</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_recent_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Displayed categories (recently-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> markup, programming<br>\n<b>allowed values:</b><ul><li>data</li><li>markup</li><li>programming</li><li>prose</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_recent_load</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Events to load (recently-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(100 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 300<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_recent_days</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Events maximum age (day, recently-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 365)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 14<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔎 `indepth` mode\n\nThe default algorithm uses the top languages from each repository you contributed to using GitHub GraphQL API (which is similar to the displayed languages bar on github.com). When working in collaborative projects with a lot of people, these numbers may be less representative of your actual work.\n\nThe `plugin_languages_indepth` option lets you use a more advanced algorithm for more accurate statistics.\nUnder the hood, it will clone your repositories, run [linguist-js](https://github.com/Nixinova/Linguist) (a JavaScript port of [GitHub linguist](https://github.com/github/linguist)) and iterate over patches matching your `commits_authoring` setting.\n\nSince git lets you use any email and username for commits, *metrics* may not be able to detect a commit ownership if it isn't the same as your GitHub personal data. By default, it will use your GitHub username, but you can configure additional matching usernames and email addresses using `commits_authoring` option.\n\n*Example: configuring `indepth` mode*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_indepth: yes\n    commits_authoring: firstname lastname, username, username@users.noreply.github.com\n```\n\n> 💡 This feature unlocks the `lines` option in `plugin_languages_details`\n\n> ⚠️ This feature significantly increase workflow time\n\n> ⚠️ Since this mode iterates over **each matching commit of each repository**, it is not suited for large code base, especially those with a large amount of commits and the ones containing binaries. While `plugin_languages_analysis_timeout` and `plugin_languages_analysis_timeout_repositories` can be used to increase the default timeout for analysis, please be responsible and keep this feature disabled if it cannot work on your account to save GitHub resources and our planet 🌏\n\n> ⚠️ Although *metrics* does not send any code to external sources, repositories are temporarily cloned on the GitHub Action runner. It is advised to keep this option disabled when working with sensitive data or company code. Use at your own risk, *metrics* and its authors **cannot** be held responsible for any resulting code leaks. Source code is available for auditing at [analyzers.mjs](/source/plugins/languages/analyzers.mjs).\n\n> 🌐 Web instances must enable this feature in `settings.json`\n\nBelow is a summary of the process used to compute indepth statistics:\n\n## Most used mode\n\n1. Fetch GPG keys linked to your GitHub account\n  - automatically add attached emails to `commits_authoring`\n  - *web-flow* (GitHub's public key for changes made through web-ui) is also fetched\n2. Import GPG keys so they can be used to verify commits later\n3. Iterate through repositories\n  - early break if `plugin_languages_analysis_timeout` is reached\n  - skip repository if it matches `plugin_languages_skipped`\n  - include repositories from `plugin_languages_indepth_custom`\n    - a specific branch and commit range can be used\n    - a source other than github.com can be used\n4. Clone repository\n  - target branch is checkout\n5. List of authored commits is computed\n  - using `git log --author` and `commits_authoring` to search in commit headers\n  - using `git log --grep` and `commits_authoring` to search in commit body\n  - ensure these are within the range specified by `plugin_languages_indepth_custom` (if applicable)\n6. Process authored commits\n  - early break if `plugin_languages_analysis_timeout_repositories` is reached\n  - using `git verify-commit` to check authenticity against imported GPG keys\n  - using `git log --patch` to extract added/deleted lines/bytes from each file\n  - using [GitHub linguist](https://github.com/github/linguist) ([linguist-js](https://github.com/Nixinova/LinguistJS)) to detect language for each file\n    - respect `plugin_languages_categories` option\n    - if a file has since been deleted or moved, checkout on the last commit file was present and run linguist again\n7. Aggregate results\n\n## Recently used mode\n\n1. Fetch push events linked to your account (or target repository)\n  - matching `plugin_languages_recent_load` and `plugin_languages_recent_days` options\n  - matching committer emails from `commits_authoring`\n2. Process authored commits\n  - using [GitHub linguist](https://github.com/github/linguist) ([linguist-js](https://github.com/Nixinova/LinguistJS)) to detect language for each file\n    - respect `plugin_languages_recent_categories` option\n    - directly pass file content rather than performing I/O and simulating a git repository\n3. Aggregate results\n\n## 📅 Recently used languages\n\nThis feature uses a similar algorithm as `indepth` mode, but uses patches from your events feed instead.\nIt will fetch a specified amount of recent push events and perform linguistic analysis on it.\n\n> ⚠️ Note that *metrics* won't be able to use more events than GitHub API is able to provide\n\n*Example: display recently used languages from 400 GitHub events from last 2 weeks*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_sections: recently-used\n    plugin_languages_recent_load: 400\n    plugin_languages_recent_days: 14\n```\n\n> 🌐 Web instances must enable this feature in `settings.json`\n\n## 🥽 Controling which languages are displayed\n\nSeveral options lets you customize which languages should be displayed.\nIt is possible to ignore completely languages or those lower than a given threshold, skip repositories, and filter by language categories.\n\n*Example: hide HTML and CSS languages, skip lowlighter/metrics repository*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_ignored: html, css\n    plugin_languages_skipped: lowlighter/metrics\n```\n\n*Example: hide languages with less than 2% usage*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_threshold: 2%\n```\n\n> 💡 The threshold feature will automatically scale remaining languages so the total percentage is always 100%. However, other stats like bytes count and lines are not affected.\n\nWhen using `indepth` mode, it is possible to hide languages per category.\nSupported categories are `data`, `markup`, `programming` and `prose`.\n\n*Example: hide data and prose languages from stats*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_categories: data, prose\n    plugin_languages_recent_categories: data, prose\n```\n\n## 🎨 Using custom colors\n\nThe plugin uses GitHub language colors, but it may be hard to distinguish them depending on which languages you use.\nIt is possible to use custom colors using `plugin_languages_colors` option.\n\nThe following syntaxes are supported:\n- A predefined set from [colorsets.json](colorsets.json) *(support limited to 8 languages max)*\n- `${language}:${color}` to change the color of a language *(case insensitive)*\n- `${n}:${color}` to change the color of the n-th language\n\nBoth hexadecimal and [named color](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value) are supported.\n\n*Example: using a predefined color set*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_colors: rainbow\n    plugin_languages_limit: 8\n```\n\n*Example: setting JavaScript to red, the first language to blue and the second one to `#ff00aa`*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_colors: javascript:red, 0:blue, 1:#ff00aa\n```\n\n## ✍️ Using custom languages name\n\nThis plugin is limited by [GitHub linguist](https://github.com/github/linguist) capabilities, meaning that some languages may be mislabeled in some cases.\n\nTo mitigate this, it is possible to use `plugin_languages_aliases` option and provide a list of overrides using the following syntax: `${language}:${alias}` *(case insensitive)*.\n\n*Example: display JavaScript as JS and TypeScript as TS*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_aliases: javascript:JS typescript:TS\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Most used\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_limit: 4\n\n```\n```yaml\nname: Most used (with details)\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.details.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_details: bytes-size, percentage\n  plugin_languages_limit: 4\n\n```\n```yaml\nname: Recently used\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.recent.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_sections: recently-used\n  plugin_languages_details: bytes-size, percentage\n  plugin_languages_limit: 4\n\n```\n```yaml\nname: Indepth analysis\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.indepth.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_indepth: yes\n  plugin_languages_details: lines, bytes-size\n  plugin_languages_limit: 4\n  plugin_languages_analysis_timeout: 15\n\n```\n<!--/examples-->\n","source/plugins/leetcode/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗳️ Leetcode</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays statistics from a <a href=\"https://leetcode.com\">LeetCode</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://leetcode.com\">LeetCode</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.leetcode.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode</code></h4></td>\n    <td rowspan=\"2\"><p>Enable leetcode plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_user</code></h4></td>\n    <td rowspan=\"2\"><p>LeetCode login</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>solved</code> will display solved problems scores</li>\n<li><code>skills</code> will display solved problems tagged skills</li>\n<li><code>recent</code> will display recent submissions</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> solved<br>\n<b>allowed values:</b><ul><li>solved</li><li>skills</li><li>recent</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_limit_skills</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (skills)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 10<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_ignored_skills</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored skills</p>\n<p>It is possible to ignore entires categories by passing <code>fundamental</code>, <code>intermediate</code> or <code>advanced</code></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_limit_recent</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (recent)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 15)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: LeetCode\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.leetcode.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_leetcode: yes\n  plugin_leetcode_sections: solved, skills, recent\n\n```\n<!--/examples-->\n","source/plugins/licenses/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📜 Repository licenses</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin display repository license informations like permissions, limitations and conditions along with additional stats about dependencies.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ This is <strong>NOT</strong> legal advice, use at your own risk</p>\n</blockquote>\n<blockquote>\n<p>💣 This plugin <strong>SHOULD NOT</strong> be enabled on web instances, since it allows raw command injection.\nThis could result in compromised server!</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Permissions, limitations and conditions</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.licenses.svg\" alt=\"\"></img></details>\n      <details open><summary>Licenses overview</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.licenses.ratio.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## 🔎 Licenses analysis\n\nUse to `plugin_licenses_setup` command to setup project dependencies.\n\n*Example: setup a NodeJS project using `npm ci`*\n```yml\n- name: Licenses and permissions\n  with:\n    repo: metrics\n    plugin_licenses: yes\n    plugin_licenses_setup: npm ci\n```\n\nDependencies will be analyzed by [GitHub licensed](https://github.com/github/licensed) and compared against GitHub known licenses.\n\n> ⚠️ This is **NOT** legal advice, use at your own risk\n\n> 💣 This plugin **SHOULD NOT** be enabled on web instances, since it allows raw command injection.\n> This could result in compromised server!\n\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses</code></h4></td>\n    <td rowspan=\"2\"><p>Enable licenses plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.cpu.overuse</i></li>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n<li><i>metrics.run.licensed</i></li>\n<li><i>metrics.run.user.cmd</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses_setup</code></h4></td>\n    <td rowspan=\"2\"><p>Setup command</p>\n<blockquote>\n<p>ℹ️ Depending on the project, this may not be required.\nThe example command is intended for NodeJs projects that use <code>npm</code> to install their dependencies.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses_ratio</code></h4></td>\n    <td rowspan=\"2\"><p>Used licenses ratio</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses_legal</code></h4></td>\n    <td rowspan=\"2\"><p>Permissions, limitations and conditions about used licenses</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Licenses and permissions\nwith:\n  filename: metrics.plugin.licenses.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_licenses: yes\n  plugin_licenses_setup: bash -c '[[ -f package.json ]] && npm ci || true'\n\n```\n```yaml\nname: Licenses with open-source ratio graphs\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.licenses.ratio.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_licenses: yes\n  plugin_licenses_setup: bash -c '[[ -f package.json ]] && npm ci || true'\n  plugin_licenses_legal: no\n  plugin_licenses_ratio: yes\n\n```\n<!--/examples-->\n","source/plugins/lines/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>👨‍💻 Lines of code changed</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the number of lines of code added and removed across repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Repositories and diff history</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.lines.history.svg\" alt=\"\"></img></details>\n      <details><summary>Compact display in base plugin</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.lines.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines</code></h4></td>\n    <td rowspan=\"2\"><p>Enable lines plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>base</code> will display the total lines added and removed in <code>base.repositories</code> section</li>\n<li><code>repositories</code> will display repositories with the most lines added and removed</li>\n<li><code>history</code> will display a graph displaying lines added and removed over time</li>\n</ul>\n<blockquote>\n<p>ℹ️ <code>base</code> requires at least <a href=\"/source/plugins/base/README.md#base\"><code>base: repositories</code></a> to be set</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> base<br>\n<b>allowed values:</b><ul><li>base</li><li>repositories</li><li>history</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_repositories_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_history_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Years to display</p>\n<p>Will display the last <code>n</code> years, relative to current year</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_delay</code></h4></td>\n    <td rowspan=\"2\"><p>Delay before performing a second query</p>\n<p>When non-zero, will perform a second query after specified delay (in seconds).\nThe GitHub endpoint used may return inaccurate results on first query (these values seems to be cached on the fly),\nafter returning correct results upon performing another query.</p>\n<p>Using this option may mitigate the occurrence of weird values.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Compact display in base plugin\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.lines.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: repositories\n  plugin_lines: yes\n  plugin_lines_delay: 30\n\n```\n```yaml\nname: Repositories and diff history\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.lines.history.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_lines: yes\n  plugin_lines_delay: 30\n  plugin_lines_sections: repositories, history\n  plugin_lines_repositories_limit: 2\n  plugin_lines_history_limit: 1\n  repositories_skipped: |\n    @use.patterns\n    */*\n    +lowlighter/metrics\n\n```\n<!--/examples-->\n","source/plugins/music/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎼 Music activity and suggestions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display top and recently listened music tracks or titles from a random playlist.</p>\n<p>Different music providers are supported.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with any of the supported provider.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_music_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Random tracks from a playlist</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.playlist.svg\" alt=\"\"></img></details>\n      <details open><summary>Recently listened</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.recent.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n#### ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music</code></h4></td>\n    <td rowspan=\"2\"><p>Enable music plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_provider</code></h4></td>\n    <td rowspan=\"2\"><p>Music provider</p>\n<ul>\n<li><code>apple</code>: Apple Music</li>\n<li><code>spotify</code>: Spotify</li>\n<li><code>lastfm</code>: Last.fm</li>\n<li><code>youtube</code>: YouTube Music</li>\n</ul>\n<p>This setting is optional when using <a href=\"/source/plugins/music/README.md#plugin_music_mode\"><code>plugin_music_mode: playlist</code></a> (provider will be auto-detected from <a href=\"/source/plugins/music/README.md#plugin_music_playlist\"><code>plugin_music_playlist</code></a> URL)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>apple</li><li>spotify</li><li>lastfm</li><li>youtube</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_token</code></h4></td>\n    <td rowspan=\"2\"><p>Music provider token</p>\n<p>Below is the expected token format for each provider:</p>\n<ul>\n<li><code>apple</code>: <em>(not supported)</em></li>\n<li><code>spotify</code>: &quot;client_id, client_secret, refresh_token&quot;</li>\n<li><code>lastfm</code>: &quot;api_key&quot;</li>\n<li><code>youtube</code>: &quot;cookie&quot;</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.music.any</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_user</code></h4></td>\n    <td rowspan=\"2\"><p>Music provider username</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_mode</code></h4></td>\n    <td rowspan=\"2\"><p>Display mode</p>\n<ul>\n<li><code>playlist</code>: display random tracks from an URL playlist</li>\n<li><code>recent</code>: display recently listened tracks</li>\n<li><code>top</code>: display top listened artists/tracks</li>\n</ul>\n<p>If <a href=\"/source/plugins/music/README.md#plugin_music_playlist\"><code>plugin_music_playlist</code></a> is specified, the default value is <code>playlist</code>, else it is <code>recent</code></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>playlist</li><li>recent</li><li>top</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_playlist</code></h4></td>\n    <td rowspan=\"2\"><p>Playlist URL</p>\n<p>It must be from an &quot;embed url&quot; (i.e. music player iframes that can be integrated in other websites)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_played_at</code></h4></td>\n    <td rowspan=\"2\"><p>Recently played - Last played timestamp</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_time_range</code></h4></td>\n    <td rowspan=\"2\"><p>Top tracks - Time range</p>\n<ul>\n<li><code>short</code>: 4 weeks</li>\n<li><code>medium</code>: 6 months</li>\n<li><code>long</code>: several years</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> short<br>\n<b>allowed values:</b><ul><li>short</li><li>medium</li><li>long</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_top_type</code></h4></td>\n    <td rowspan=\"2\"><p>Top tracks - Display type</p>\n<ul>\n<li><code>tracks</code>: display track</li>\n<li><code>artists</code>: display artists</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> tracks<br>\n<b>allowed values:</b><ul><li>tracks</li><li>artists</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🎺 Configuring music provider\n\nSelect a music provider below for additional instructions.\n\n## 🎙️ Spotify\n\n### 🗝️ Obtaining a token\n\nSpotify does not have *personal tokens*, so it makes the process a bit longer because it is required to follow the [authorization workflow](https://developer.spotify.com/documentation/general/guides/authorization-guide/)... Follow the instructions below for a *TL;DR* to obtain a `refresh_token`.\n\nSign in to the [developer dashboard](https://developer.spotify.com/dashboard/) and create a new app.\nKeep your `client_id` and `client_secret` and let this tab open for now.\n\n![Add a redirect url](/.github/readme/imgs/plugin_music_recent_spotify_token_0.png)\n\nOpen the settings and add a new *Redirect url*. Normally it is used to setup callbacks for apps, but just put `https://localhost` instead (it is mandatory as per the [authorization guide](https://developer.spotify.com/documentation/general/guides/authorization-guide/), even if not used).\n\nForge the authorization url with your `client_id` and the encoded `redirect_uri` you whitelisted, and access it from your browser:\n\n```\nhttps://accounts.spotify.com/authorize?client_id=********&response_type=code&scope=user-read-recently-played%20user-top-read&redirect_uri=https%3A%2F%2Flocalhost\n```\n\nWhen prompted, authorize application.\n\n![Authorize application](/.github/readme/imgs/plugin_music_recent_spotify_token_1.png)\n\nOnce redirected to `redirect_uri`, extract the generated authorization `code` from your url bar.\n\n![Extract authorization code from url](/.github/readme/imgs/plugin_music_recent_spotify_token_2.png)\n\nGo back to developer dashboard tab, and open the web console of your browser to paste the following JavaScript code, with your own `client_id`, `client_secret`, authorization `code` and `redirect_uri`.\n\n```js\n(async () => {\n  console.log(await (await fetch(\"https://accounts.spotify.com/api/token\", {\n    method:\"POST\",\n    headers:{\"Content-Type\":\"application/x-www-form-urlencoded\"},\n    body:new URLSearchParams({\n      grant_type:\"authorization_code\",\n      redirect_uri:\"https://localhost\",\n      client_id:\"********\",\n      client_secret:\"********\",\n      code:\"********\",\n    })\n  })).json())\n})()\n```\n\nIt should return a JSON response with the following content:\n```json\n{\n  \"access_token\":\"********\",\n  \"expires_in\": 3600,\n  \"scope\":\"user-read-recently-played user-top-read\",\n  \"token_type\":\"Bearer\",\n  \"refresh_token\":\"********\"\n}\n```\n\nRegister your `client_id`, `client_secret` and `refresh_token` in secrets to finish setup.\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\nConnect to [spotify.com](https://www.spotify.com) and select the playlist you want to share.\nFrom `...` menu, select `Share` and `Copy embed code`.\n\n![Copy embed code of playlist](/.github/readme/imgs/plugin_music_playlist_spotify.png)\n\nExtract the source link from the code pasted in your clipboard:\n```html\n<iframe src=\"https://open.spotify.com/embed/playlist/********\" width=\"\" height=\"\" frameborder=\"0\" allowtransparency=\"\" allow=\"\"></iframe>\n```\n\n## 🍎 Apple Music\n\n### 🗝️ Obtaining a token\n\n*(Not available)*\n\n> 😥 Unfortunately I wasn't able to find a workaround to avoid paying the $99 fee for the developer program, even using workarounds like *smart playlists*, *shortcuts* and other stuff. However if you really want this feature, you could [sponsor me](github.com/sponsors/lowlighter) and I could eventually invest in a developer account with enough money, implement it and also eventually offer service on the shared instance\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\nConnect to [music.apple.com](https://music.apple.com/) and select the playlist you want to share.\nFrom `...` menu, select `Share` and `Copy embed code`.\n\n![Copy embed code of playlist](/.github/readme/imgs/plugin_music_playlist_apple.png)\n\nExtract the source link from the code pasted in your clipboard:\n```html\n<iframe allow=\"\" frameborder=\"\" height=\"\" style=\"\" sandbox=\"\" src=\"https://embed.music.apple.com/**/playlist/********\"></iframe>\n```\n\n## ⏯️ Youtube Music\n\n### 🗝️ Obtaining a token\n\nLogin to [YouTube Music](https://music.youtube.com) on any modern browser.\n\nOpen the developer tools (Ctrl-Shift-I) and select the “Network” tab\n\n![Open developer tools](/.github/readme/imgs/plugin_music_recent_youtube_cookie_1.png)\n\nFind an authenticated POST request. The simplest way is to filter by /browse using the search bar of the developer tools. If you don’t see the request, try scrolling down a bit or clicking on the library button in the top bar.\n\nClick on the Name of any matching request. In the “Headers” tab, scroll to the “Cookie” and copy this by right-clicking on it and selecting “Copy value”.\n\n![Copy cookie value](/.github/readme/imgs/plugin_music_recent_youtube_cookie_2.png)\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\nExtract the *playlist* URL of the playlist you want to share.\n\nConnect to [music.youtube.com](https://music.youtube.com) and select the playlist you want to share.\n\nExtract the source link from the code pasted in your clipboard:\n```\nhttps://music.youtube.com/playlist?list=********\n```\n\n## 📻 Last.fm\n\n### 🗝️ Obtaining a token\n\n[Create an API account](https://www.last.fm/api/account/create) or [use an existing one](https://www.last.fm/api/accounts) to obtain a Last.fm API key.\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\n*(Not available)*\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Apple Music - Random track from playlist\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.music.playlist.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_playlist: https://embed.music.apple.com/fr/playlist/usr-share/pl.u-V9D7m8Etjmjd0D\n  plugin_music_limit: 2\n\n```\n```yaml\nname: Spotify - Random track from playlist\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.music.playlist.spotify.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_playlist: https://open.spotify.com/embed/playlist/3nfA87oeJw4LFVcUDjRcqi\n\n```\n```yaml\nname: Spotify - Recently listed\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.music.recent.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_provider: spotify\n  plugin_music_mode: recent\n  plugin_music_token: ${{ secrets.SPOTIFY_TOKENS }}\n  plugin_music_limit: 2\n\n```\n```yaml\nname: Spotify - Top tracks\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_mode: top\n  plugin_music_provider: spotify\n  plugin_music_token: ${{ secrets.SPOTIFY_TOKENS }}\n  plugin_music_time_range: short\n  plugin_music_top_type: tracks\n\n```\n```yaml\nname: Spotify - Top artists\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_mode: top\n  plugin_music_provider: spotify\n  plugin_music_token: ${{ secrets.SPOTIFY_TOKENS }}\n  plugin_music_time_range: long\n  plugin_music_top_type: artists\n\n```\n```yaml\nname: Youtube Music - Random track from playlist\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_playlist: >-\n    https://music.youtube.com/playlist?list=OLAK5uy_kU_uxp9TUOl9zVdw77xith8o9AknVwz9U\n\n```\n```yaml\nname: Youtube Music - Recently listed\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music_token: ${{ secrets.YOUTUBE_MUSIC_TOKENS }}\n  plugin_music: yes\n  plugin_music_mode: recent\n  plugin_music_provider: youtube\n\n```\n```yaml\nname: Last.fm  - Recently listed\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music_token: ${{ secrets.LASTFM_TOKEN }}\n  plugin_music: yes\n  plugin_music_provider: lastfm\n  plugin_music_user: RJ\n\n```\n<!--/examples-->\n","source/plugins/notable/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎩 Notable contributions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays badges for notable contributions on repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Indepth analysis</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.notable.indepth.svg\" alt=\"\"></img></details>\n      <details><summary>Contributions in organizations only</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.notable.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable</code></h4></td>\n    <td rowspan=\"2\"><p>Enable notable plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_filter</code></h4></td>\n    <td rowspan=\"2\"><p>Query filter</p>\n<p>Based on <a href=\"https://docs.github.com/en/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax\">GitHub search syntax</a>.\nSupported fields are <code>stars</code>, <code>forks</code> and <code>watchers</code></p>\n<p>If <a href=\"/source/plugins/notable/README.md#plugin_notable_indepth\"><code>plugin_notable_indepth</code></a> is enabled, <code>commits</code>, <code>commits.user</code>, <code>commits.user%</code> and <code>maintainer</code> fields are also supported.\nSome repositories may not be able to reported advanced stats and in the case the default behaviour will be to bypass filtering</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_from</code></h4></td>\n    <td rowspan=\"2\"><p>Repository owner account type filter</p>\n<ul>\n<li><code>all</code>: no filtering</li>\n<li><code>organization</code>: only organization accounts repositories</li>\n<li><code>user</code>: only user accounts repositories</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> organization<br>\n<b>allowed values:</b><ul><li>all</li><li>organization</li><li>user</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Repository name</p>\n<p>Repositories hosted by user account will always have their full handle displayed</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_types</code></h4></td>\n    <td rowspan=\"2\"><p>Contribution types filter</p>\n<p>Use a combination of below values to include repositories where:</p>\n<ul>\n<li><code>commit</code>: a commit on default branch was made</li>\n<li><code>pull_request</code>: a pull request was opened</li>\n<li><code>issue</code>: an issue was opened</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> commit<br>\n<b>allowed values:</b><ul><li>commit</li><li>pull_request</li><li>issue</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_self</code></h4></td>\n    <td rowspan=\"2\"><p>Include own repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔎 `indepth` mode\n\nThe `plugin_notable_indepth` option collects additional stats about your contributions, such as:\n- Total number of commits within a repository or organization.\n\nFor each of the above, a badge is awarded. Its color and progress depends of the associated value.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Contributions\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.notable.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_notable: yes\n\n```\n```yaml\nname: Indepth analysis\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.notable.indepth.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_notable: yes\n  plugin_notable_indepth: yes\n  plugin_notable_repositories: yes\n\n```\n<!--/examples-->\n","source/plugins/pagespeed/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>⏱️ Google PageSpeed</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays performance statistics of a website.</p>\n<p>It uses <a href=\"https://developers.google.com/speed/docs/insights/v5/get-started\">Google&#39;s PageSpeed API</a> (same as <a href=\"https://web.dev\">web.dev</a>), see <a href=\"https://web.dev/performance-scoring/\">performance scoring</a> and <a href=\"https://googlechrome.github.io/lighthouse/scorecalc/\">score calculator</a> for more informations about results.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://pagespeed.web.dev/\">Google PageSpeed</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_pagespeed_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>PageSpeed scores</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.pagespeed.svg\" alt=\"\"></img></details>\n      <details><summary>PageSpeed scores with detailed report</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.pagespeed.detailed.svg\" alt=\"\"></img></details>\n      <details><summary>PageSpeed scores with a website screenshot</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.pagespeed.screenshot.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed</code></h4></td>\n    <td rowspan=\"2\"><p>Enable pagespeed plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_token</code></h4></td>\n    <td rowspan=\"2\"><p>PageSpeed token</p>\n<blockquote>\n<p>⚠️ While not mandatory, it is strongly advised pass a token to avoid triggering the rate limiter. See <a href=\"https://developers.google.com/speed/docs/insights/v5/get-started\">PageSpeed documentation</a> for more informations.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.google.pagespeed</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_url</code></h4></td>\n    <td rowspan=\"2\"><p>Audited website</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User attached website</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_detailed</code></h4></td>\n    <td rowspan=\"2\"><p>Detailed results</p>\n<p>The following additional stats will be displayed:</p>\n<ul>\n<li>First Contentful Paint</li>\n<li>Speed Index</li>\n<li>Largest Contentful Paint</li>\n<li>Time to Interactive</li>\n<li>Total Blocking Time</li>\n<li>Cumulative Layout Shift</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_screenshot</code></h4></td>\n    <td rowspan=\"2\"><p>Website screenshot</p>\n<p>Significantly increase filesize</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_pwa</code></h4></td>\n    <td rowspan=\"2\"><p>PWA Status</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Succinct report\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.pagespeed.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_pagespeed: yes\n  plugin_pagespeed_token: ${{ secrets.PAGESPEED_TOKEN }}\n  plugin_pagespeed_url: https://lecoq.io\n\n```\n```yaml\nname: Detailed report\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.pagespeed.detailed.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_pagespeed: yes\n  plugin_pagespeed_detailed: yes\n  plugin_pagespeed_token: ${{ secrets.PAGESPEED_TOKEN }}\n  plugin_pagespeed_url: https://lecoq.io\n\n```\n```yaml\nname: Screenshot\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.pagespeed.screenshot.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_pagespeed: yes\n  plugin_pagespeed_screenshot: yes\n  plugin_pagespeed_token: ${{ secrets.PAGESPEED_TOKEN }}\n  plugin_pagespeed_url: https://lecoq.io\n\n```\n```yaml\nname: Succinct report with PWA\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.pagespeed.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_pagespeed: yes\n  plugin_pagespeed_token: ${{ secrets.PAGESPEED_TOKEN }}\n  plugin_pagespeed_url: https://lecoq.io\n  plugin_pagespeed_pwa: yes\n\n```\n<!--/examples-->\n","source/plugins/people/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧑‍🤝‍🧑 People</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display relationships with users, such as followers, sponsors, contributors, stargazers, watchers, members, etc.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Related to a user</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.people.followers.svg\" alt=\"\"></img></details>\n      <details><summary>Related to a repository</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.people.repository.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people</code></h4></td>\n    <td rowspan=\"2\"><p>Enable people plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 24<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_identicons</code></h4></td>\n    <td rowspan=\"2\"><p>Force identicons pictures</p>\n<p>Can be used to mask profile pictures for privacy</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_identicons_hide</code></h4></td>\n    <td rowspan=\"2\"><p>Hide identicons pictures</p>\n<p>Can be used to mask users without a personal profile picture.</p>\n<p>When used with <a href=\"/source/plugins/people/README.md#plugin_people_identicons\"><code>plugin_people_identicons</code></a>, users without a personal profile picture will still be filtered out, but their picture will be replaced by an identicon instead</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_size</code></h4></td>\n    <td rowspan=\"2\"><p>Profile picture display size</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(8 ≤\n𝑥\n≤ 64)</i>\n<br>\n<b>default:</b> 28<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_types</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<p>User and organization accounts support the following values:</p>\n<ul>\n<li><code>followers</code></li>\n<li><code>following</code>/<code>followed</code></li>\n<li><code>sponsoring</code>/<code>sponsored</code></li>\n<li><code>sponsors</code></li>\n<li><code>members</code> (organization only)</li>\n<li><code>thanks</code>(to be configured with <a href=\"/source/plugins/people/README.md#plugin_people_thanks\"><code>plugin_people_thanks</code></a>)</li>\n</ul>\n<p>Repositories support the following values:</p>\n<ul>\n<li><code>sponsors</code> (same as owner sponsors)</li>\n<li><code>contributors</code></li>\n<li><code>stargazers</code></li>\n<li><code>watchers</code></li>\n<li><code>thanks</code>(to be configured with <a href=\"/source/plugins/people/README.md#plugin_people_thanks\"><code>plugin_people_thanks</code></a>)</li>\n</ul>\n<p>Specified order is honored</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> followers, following<br>\n<b>allowed values:</b><ul><li>followers</li><li>following</li><li>followed</li><li>sponsoring</li><li>members</li><li>sponsored</li><li>sponsors</li><li>contributors</li><li>stargazers</li><li>watchers</li><li>thanks</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_thanks</code></h4></td>\n    <td rowspan=\"2\"><p>Special thanks</p>\n<p>Can be used to thank specific users</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_sponsors_custom</code></h4></td>\n    <td rowspan=\"2\"><p>Custom sponsors</p>\n<p>This list can be used to add users from unsupported GitHub sponsors sources.\nThe option <a href=\"/source/plugins/people/README.md#plugin_people_types\"><code>plugin_people_types</code></a> must contain the <code>sponsors</code> section in order for this setting to be effective</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_shuffle</code></h4></td>\n    <td rowspan=\"2\"><p>Shuffle data</p>\n<p>Can be used to create varied outputs\nThis will fetch additional data (10 times <a href=\"/source/plugins/people/README.md#plugin_people_limit\"><code>plugin_people_limit</code></a>) to ensure output is always different</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Followers\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.people.followers.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_people: yes\n  plugin_people_types: followers\n\n```\n```yaml\nname: Contributors and sponsors\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.people.repository.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_people: yes\n  plugin_people_types: contributors, stargazers, watchers, sponsors\n\n```\n<!--/examples-->\n","source/plugins/posts/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>✒️ Recent posts</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays recent articles from a specified and supported external source.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Latest posts width description and cover image</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.posts.full.svg\" alt=\"\"></img></details>\n      <details><summary>Latest posts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.posts.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts</code></h4></td>\n    <td rowspan=\"2\"><p>Enable posts plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_source</code></h4></td>\n    <td rowspan=\"2\"><p>External source</p>\n<ul>\n<li><code>dev.to</code>: <a href=\"https://dev.to\">dev.to</a></li>\n<li><code>hashnode</code>: <a href=\"https://hashnode.com\">hashnode.com</a></li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>dev.to</li><li>hashnode</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_user</code></h4></td>\n    <td rowspan=\"2\"><p>External source username</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_descriptions</code></h4></td>\n    <td rowspan=\"2\"><p>Posts descriptions</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_covers</code></h4></td>\n    <td rowspan=\"2\"><p>Posts cover images</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recent posts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.posts.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_posts: yes\n  plugin_posts_source: dev.to\n\n```\n```yaml\nname: Recent posts with descriptions and cover images\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.posts.full.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_posts: yes\n  plugin_posts_source: dev.to\n  plugin_posts_limit: 2\n  plugin_posts_descriptions: yes\n  plugin_posts_covers: yes\n\n```\n<!--/examples-->\n","source/plugins/projects/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗂️ GitHub projects</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays progress of profile and repository projects.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>🔑 public_repo</code> <code>🔑 read:project</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.projects.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_projects</code></h4></td>\n    <td rowspan=\"2\"><p>Enable projects plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_projects_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<p>Projects defined by <a href=\"/source/plugins/projects/README.md#plugin_projects_repositories\"><code>plugin_projects_repositories</code></a> are not affected by this option</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_projects_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Featured repositories projects</p>\n<p>Use the following syntax for each project <code>:user/:repo/projects/:project_id</code></p>\n<blockquote>\n<p>ℹ️ <a href=\"https://docs.github.com/en/issues/trying-out-the-new-projects-experience/about-projects\">GitHub projects (beta)</a> needs to use the same syntax as above and repository must specified repository must be linked to given project.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_projects_descriptions</code></h4></td>\n    <td rowspan=\"2\"><p>Projects descriptions</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔄 Enabling progress tracking\n\nBy default, projects have progress tracking disabled.\n\nTo enable it, open the `≡ Menu` from the project page and opt-in to `Track project progress`.\n\n![Enable \"Track project progress\"](/.github/readme/imgs/plugin_projects_track_progress.png)\n\n## 👤 Use personal projects\n\nTo create a personal project, select the `Projects` tab from your profile:\n![Create a new project](/.github/readme/imgs/plugin_projects_create.png)\n\nFill informations and set visibility to *public*:\n![Configure project](/.github/readme/imgs/plugin_projects_setup.png)\n\n## 📓 Use repositories projects\n\nRepositories projects are created from the `Projects` tab of a repository.\n\nTo use it with this plugin, retrieve the last section of the project URL (it should match the format `:user/:repository/projects/:project_id`) and add it in the `plugin_projects_repositories`.\n\nBe sure to tick `Track project progress` in project settings to display a progress bar.\n\n![Add a repository project](/.github/readme/imgs/plugin_projects_repositories.png)\n\n*Example: include a project repository*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_projects: yes\n    plugin_projects_repositories: lowlighter/metrics/projects/1\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Project from a repository\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.projects.svg\n  token: ${{ secrets.METRICS_TOKEN_WITH_SCOPES }}\n  base: \"\"\n  plugin_projects: yes\n  plugin_projects_repositories: lowlighter/metrics/projects/1\n  plugin_projects_descriptions: yes\n\n```\n<!--/examples-->\n","source/plugins/reactions/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎭 Comment reactions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays overall user reactions on recent issues, comments and discussions.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.reactions.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions</code></h4></td>\n    <td rowspan=\"2\"><p>Enable reactions plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (issues and pull requests comments)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_limit_issues</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (issues and pull requests, first comment)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_limit_discussions</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (discussions, first comment)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_limit_discussions_comments</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (discussions comments)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_days</code></h4></td>\n    <td rowspan=\"2\"><p>Comments maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_display</code></h4></td>\n    <td rowspan=\"2\"><p>Display mode</p>\n<ul>\n<li><code>absolute</code>: scale percentages using total reactions count</li>\n<li><code>relative</code>: scale percentages using highest reaction count</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> absolute<br>\n<b>allowed values:</b><ul><li>absolute</li><li>relative</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_details</code></h4></td>\n    <td rowspan=\"2\"><p>Additional details</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>count</li><li>percentage</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored users</p>\n<p>Can be used to ignore bots activity</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>users_ignored</code><br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Comment reactions\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.reactions.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_reactions: yes\n  plugin_reactions_limit: 100\n  plugin_reactions_details: percentage\n\n```\n<!--/examples-->\n","source/plugins/repositories/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📓 Featured repositories</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays a list of chosen featured repositories.</p>\n<p>Since it is possible to <a href=\"https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/pinning-items-to-your-profile\">pin repositories</a> on GitHub, this plugin is mostly intended for external usage.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ Due to limitations of using SVG images inside <code>&lt;img&gt;</code> tags, clicking on a repository card will not redirect to repository page.</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Featured</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.repositories.svg\" alt=\"\"></img></details>\n      <details><summary>Pinned</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.repositories.pinned.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Enable repositories plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_featured</code></h4></td>\n    <td rowspan=\"2\"><p>Featured repositories</p>\n<p>Current <a href=\"/source/plugins/core/README.md#user\"><code>user</code></a> will be used when no owner is specified</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_pinned</code></h4></td>\n    <td rowspan=\"2\"><p>Pinned repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 6)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_starred</code></h4></td>\n    <td rowspan=\"2\"><p>Featured most starred repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_random</code></h4></td>\n    <td rowspan=\"2\"><p>Featured random repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_order</code></h4></td>\n    <td rowspan=\"2\"><p>Featured repositories display order</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<br>\n<b>default:</b> featured, pinned, starred, random<br>\n<b>allowed values:</b><ul><li>featured</li><li>pinned</li><li>starred</li><li>random</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_forks</code></h4></td>\n    <td rowspan=\"2\"><p>Include repositories forks</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_affiliations</code></h4></td>\n    <td rowspan=\"2\"><p>Repositories affiliations</p>\n<ul>\n<li><code>owner</code>: owned repositories</li>\n<li><code>collaborator</code>: repositories with push access</li>\n<li><code>organization_member</code>: repositories from an organization where user is a member</li>\n</ul>\n<p>Set to <code>&quot;&quot;</code> to disable and fetch all repositories related to given account.</p>\n<p>This option changes which repositories will be fetched by <a href=\"/source/plugins/projects/README.md#plugin_repositories_starred\"><code>plugin_repositories_starred</code></a> and <a href=\"/source/plugins/projects/README.md#plugin_repositories_random\"><code>plugin_repositories_random</code></a> options</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> owner<br>\n<b>allowed values:</b><ul><li>owner</li><li>collaborator</li><li>organization_member</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Featured repositories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.repositories.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_repositories: yes\n  plugin_repositories_featured: lowlighter/metrics\n\n```\n```yaml\nname: Pinned repositories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.repositories.pinned.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_repositories: yes\n  plugin_repositories_pinned: 2\n\n```\n<!--/examples-->\n","source/plugins/rss/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗼 Rss feed</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays news from a given RSS feed.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.rss.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_rss</code></h4></td>\n    <td rowspan=\"2\"><p>Enable rss plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_rss_source</code></h4></td>\n    <td rowspan=\"2\"><p>RSS feed source</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_rss_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 4<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: News from hackernews\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.rss.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_rss: yes\n  plugin_rss_source: https://news.ycombinator.com/rss\n  plugin_rss_limit: 4\n\n```\n<!--/examples-->\n","source/plugins/skyline/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🌇 GitHub Skyline</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the 3D commits calendar from <a href=\"https://skyline.github.com/\">skyline.github.com</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ This plugin significantly increase file size, consider using it as standalone.</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>GitHub Skyline</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.skyline.svg\" alt=\"\"></img></details>\n      <details><summary>GitHub City</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.skyline.city.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline</code></h4></td>\n    <td rowspan=\"2\"><p>Enable skyline plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.cpu.overuse</i></li>\n<li><i>metrics.npm.optional.gifencoder</i></li>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_year</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed year</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(2008 ≤\n𝑥)</i>\n<br>\n<b>default:</b> current-year<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_frames</code></h4></td>\n    <td rowspan=\"2\"><p>Frames count</p>\n<p>Use 120 for a full-loop and 60 for a half-loop.\nA higher number of frames will increase file size.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 120)</i>\n<br>\n<b>default:</b> 60<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_quality</code></h4></td>\n    <td rowspan=\"2\"><p>Image quality</p>\n<p>A higher image quality will increase file size.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0.1 ≤\n𝑥\n≤ 1)</i>\n<br>\n<b>default:</b> 0.5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_compatibility</code></h4></td>\n    <td rowspan=\"2\"><p>Compatibility mode</p>\n<p>This uses CSS animations rather than embedded GIF to support a wider range of browsers, like Firefox and Safari.\nUsing this mode significantly increase file size as each frame is encoded separately</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_settings</code></h4></td>\n    <td rowspan=\"2\"><p>Advanced settings</p>\n<p>Can be configured to use alternate skyline websites different from <a href=\"https://skyline.github.com\">skyline.github.com</a>, such as <a href=\"https://github.com/honzaap/GithubCity\">honzaap&#39;s GitHub City</a>.</p>\n<ul>\n<li><code>url</code>: Target URL (mandatory)</li>\n<li><code>ready</code>: Readiness condition (A JS function that returns a boolean)</li>\n<li><code>wait</code>: Time to wait after readiness condition is met (in seconds)</li>\n<li><code>hide</code>: HTML elements to hide (A CSS selector)</li>\n</ul>\n<p>For <code>url</code> and <code>ready</code> options, <code>${login}</code> and <code>${year}</code> will be respectively templated to user&#39;s login and specified year</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.user.js</i></li>\n</ul>\n<b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"url\": \"https://skyline.github.com/${login}/${year}\",\n  \"ready\": \"[...document.querySelectorAll('span')].map(span => span.innerText).includes('Share on Twitter')\",\n  \"wait\": 1,\n  \"hide\": \"button, footer, a\"\n}\n</code></pre></details><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: GitHub Skyline\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.skyline.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_skyline: yes\n  plugin_skyline_year: 2020\n  plugin_skyline_frames: 6\n  plugin_skyline_quality: 1\n\n```\n```yaml\nname: GitHub City\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.skyline.city.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_skyline: yes\n  plugin_skyline_year: 2020\n  plugin_skyline_frames: 6\n  plugin_skyline_quality: 1\n  plugin_skyline_settings: |\n    {\n      \"url\": \"https://honzaap.github.io/GithubCity?name=${login}&year=${year}\",\n      \"ready\": \"[...document.querySelectorAll('.display-info span')].map(span => span.innerText).includes('${login}')\",\n      \"wait\": 4,\n      \"hide\": \".github-corner, .footer-link, .buttons-options, .mobile-rotate, .display-info span:first-child\"\n    }\n\n```\n<!--/examples-->\n","source/plugins/sponsors/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💕 GitHub Sponsors</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays sponsors and introduction text from <a href=\"https://github.com/sponsors/\">GitHub sponsors</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 read:user</code> <code>🔑 read:org</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>GitHub sponsors card</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.sponsors.svg\" alt=\"\"></img></details>\n      <details><summary>GitHub sponsors full introduction</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.sponsors.full.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors</code></h4></td>\n    <td rowspan=\"2\"><p>Enable sponsors plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>goal</code>: display GitHub active goal</li>\n<li><code>about</code>: display GitHub sponsors introduction</li>\n<li><code>list</code>: display GitHub sponsors list</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> goal, list, about<br>\n<b>allowed values:</b><ul><li>goal</li><li>about</li><li>list</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors_past</code></h4></td>\n    <td rowspan=\"2\"><p>Past sponsorships</p>\n<p>A <a href=\"/source/plugins/core/README.md#token\"><code>token</code></a> from target <a href=\"/source/plugins/core/README.md#user\"><code>user</code></a> must be specified to use this feature, as past sponsorships are gathered from sponsors activity which is private data.</p>\n<blockquote>\n<p>⚠️ Past sponsorships does not respect sponsors privacy because of current GitHub API limitations. This may be fixed in a future release.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors_size</code></h4></td>\n    <td rowspan=\"2\"><p>Profile picture display size</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(8 ≤\n𝑥\n≤ 64)</i>\n<br>\n<b>default:</b> 24<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors_title</code></h4></td>\n    <td rowspan=\"2\"><p>Title caption</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> Sponsor Me!<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Sponsors goal\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.sponsors.svg\n  token: ${{ secrets.METRICS_TOKEN_PERSONAL }}\n  base: \"\"\n  plugin_sponsors: yes\n  plugin_sponsors_sections: goal, list\n  plugin_sponsors_past: yes\n\n```\n```yaml\nname: Sponsors introduction\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.sponsors.full.svg\n  token: ${{ secrets.METRICS_TOKEN_WITH_SCOPES }}\n  base: \"\"\n  plugin_sponsors: yes\n\n```\n<!--/examples-->\n","source/plugins/sponsorships/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💝 GitHub Sponsorships</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays sponsorships funded through <a href=\"https://github.com/sponsors/\">GitHub sponsors</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 read:user</code> <code>🔑 read:org</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.sponsorships.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsorships</code></h4></td>\n    <td rowspan=\"2\"><p>Enable sponsorships plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsorships_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>amount</code>: display total amount sponsored</li>\n<li><code>sponsorships</code>: display GitHub sponsorships</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> amount, sponsorships<br>\n<b>allowed values:</b><ul><li>amount</li><li>sponsorships</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsorships_size</code></h4></td>\n    <td rowspan=\"2\"><p>Profile picture display size</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(8 ≤\n𝑥\n≤ 64)</i>\n<br>\n<b>default:</b> 24<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: 💝 GitHub Sponsorships\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.sponsorships.svg\n  token: ${{ secrets.METRICS_TOKEN_PERSONAL }}\n  base: \"\"\n  plugin_sponsorships: yes\n\n```\n<!--/examples-->\n","source/plugins/stackoverflow/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗨️ Stack Overflow</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays stats, questions and answer from <a href=\"https://stackoverflow.com/\">Stack Overflow</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://stackoverflow.com/\">Stack Overflow</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stackoverflow.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stackoverflow plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_user</code></h4></td>\n    <td rowspan=\"2\"><p>Stackoverflow user id</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>number</code>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>answers-top</code>: display most popular answers</li>\n<li><code>answers-recent</code>: display recent answers</li>\n<li><code>questions-top</code>: display most popular questions</li>\n<li><code>questions-recent</code>: display recent questions</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> answers-top, questions-recent<br>\n<b>allowed values:</b><ul><li>answers-top</li><li>answers-recent</li><li>questions-top</li><li>questions-recent</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (entries per section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_lines</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (lines per questions and answers)</p>\n<p>Code snippets count as a single line and must be configured with <a href=\"/source/plugins/stackoverflow/README.md#plugin_stackoverflow_lines_snippet\"><code>plugin_stackoverflow_lines_snippet</code></a> instead</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_lines_snippet</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (lines per code snippets)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Top answers from stackoverflow\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stackoverflow.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_stackoverflow: yes\n  plugin_stackoverflow_user: 1\n  plugin_stackoverflow_sections: answers-top\n  plugin_stackoverflow_limit: 2\n\n```\n<!--/examples-->\n","source/plugins/stargazers/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>✨ Stargazers</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays stargazers evolution across affiliated repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>🗝️ plugin_stargazers_worldmap_token</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Classic charts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stargazers.svg\" alt=\"\"></img></details>\n      <details><summary>Graph charts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stargazers.graph.svg\" alt=\"\"></img></details>\n      <details open><summary>Worldmap</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stargazers.worldmap.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## 🗝️ Obtaining a Google Maps API token\n\nSome features like `plugin_stagazers_worldmap` require a Google Geocoding API token.\nFollow instructions from their [documentation](https://developers.google.com/maps/documentation/geocoding/get-api-key) for more informations.\n\n> 💳 A billing account is required to get a token. However a recurring [monthly credit](https://developers.google.com/maps/billing-credits#monthly) is offered which means you should not be charged if you don't exceed the free quota.\n>\n> It is advised to set the quota limit at 1200 requests per day\n>\n> Use at your own risk, *metrics* and its authors cannot be held responsible for anything charged.\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stargazers plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_days</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<p>If set to <code>0</code> the account registration date will be used.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> see description</br>\n<b>default:</b> 14<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_charts</code></h4></td>\n    <td rowspan=\"2\"><p>Charts</p>\n<p>It includes total number of stargazers evolution, along with the number of new stars per day over the last two weeks.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_charts_type</code></h4></td>\n    <td rowspan=\"2\"><p>Charts display type</p>\n<ul>\n<li><code>classic</code>: <code>&lt;div&gt;</code> based charts, simple and lightweight</li>\n<li><code>graph</code>: <code>&lt;svg&gt;</code> based charts, smooth</li>\n</ul>\n<blockquote>\n<p>⚠️ <code>chartist</code> option has been deprecated and is now equivalent to <code>graph</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.d3</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> classic<br>\n<b>allowed values:</b><ul><li>classic</li><li>graph</li><li>chartist</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_worldmap</code></h4></td>\n    <td rowspan=\"2\"><p>Stargazers worldmap</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.google.maps</i></li>\n<li><i>metrics.npm.optional.d3</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_worldmap_token</code></h4></td>\n    <td rowspan=\"2\"><p>Stargazers worldmap token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_worldmap_sample</code></h4></td>\n    <td rowspan=\"2\"><p>Stargazers worldmap sample</p>\n<p>Use this setting to randomly sample and limit your stargazers.\nHelps to avoid consuming too much Google Geocoding API requests while still being representative.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Using classic charts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stargazers.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_stargazers: yes\n\n```\n```yaml\nname: Using graph charts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stargazers.graph.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_stargazers: yes\n  plugin_stargazers_charts_type: graph\n\n```\n```yaml\nname: With worldmap\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stargazers.worldmap.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_stargazers: yes\n  plugin_stargazers_charts: no\n  plugin_stargazers_worldmap: yes\n  plugin_stargazers_worldmap_token: ${{ secrets.GOOGLE_MAP_TOKEN }}\n  plugin_stargazers_worldmap_sample: 200\n\n```\n<!--/examples-->\n","source/plugins/starlists/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💫 Star lists</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays star lists.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Repositories from star lists</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.starlists.svg\" alt=\"\"></img></details>\n      <details open><summary>Languages from star lists</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.starlists.languages.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists</code></h4></td>\n    <td rowspan=\"2\"><p>Enable starlists plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (star lists)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_limit_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (repositories per star list)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Star lists languages statistics</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_limit_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (languages per star list)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 8<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_languages_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored languages in star lists</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_languages_aliases</code></h4></td>\n    <td rowspan=\"2\"><p>Custom languages names in star lists</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_shuffle_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Shuffle data</p>\n<p>Can be used to create varied outputs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped star lists</p>\n<p>Case and emojis insensitive</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_only</code></h4></td>\n    <td rowspan=\"2\"><p>Showcased star lists</p>\n<p>Case and emojis insensitive.</p>\n<p>Equivalent to <a href=\"/source/plugins/starlists/README.md#plugin_starlists_ignored\"><code>plugin_starlists_ignored</code></a> with all star lists except the ones listed in this option</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Featured star list\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.starlists.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_starlists: yes\n  plugin_starlists_limit_repositories: 2\n  plugin_starlists_only: TC39\n\n```\n```yaml\nname: Featured star list languages\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.starlists.languages.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_starlists: yes\n  plugin_starlists_languages: yes\n  plugin_starlists_limit_languages: 8\n  plugin_starlists_limit_repositories: 0\n  plugin_starlists_only: Awesome\n\n```\n<!--/examples-->\n","source/plugins/stars/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🌟 Recently starred repositories</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays recently starred repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stars.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stars</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stars plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stars_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recently starred\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stars.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_stars: yes\n  plugin_stars_limit: 3\n\n```\n<!--/examples-->\n","source/plugins/steam/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🕹️ Steam</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display your player profile and played games from your Steam account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://store.steampowered.com\">Steam</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_steam_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Recently played games</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.steam.svg\" alt=\"\"></img></details>\n      <details><summary>Profile and detailed game history</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.steam.full.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam</code></h4></td>\n    <td rowspan=\"2\"><p>Enable steam plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_token</code></h4></td>\n    <td rowspan=\"2\"><p>Steam token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.steam</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>player</code>: display profile</li>\n<li><code>most-played</code>: display most played games</li>\n<li><code>recently-played</code>: display recently played games</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> player, most-played, recently-played<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_user</code></h4></td>\n    <td rowspan=\"2\"><p>Steam user id</p>\n<p>This can be found on your Steam user account details</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_games_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored games</p>\n<p>Use App id as they are referenced in Steam catalog</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_games_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Most played games)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_recent_games_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Recently played games)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_achievements_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Games achievements)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_playtime_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Display threshold (Game playtime in hours)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a *Steam Web API* token\n\nGo to [steamcommunity.com/dev/apikey](https://steamcommunity.com/dev/apikey) to obtain a Steam Web API token:\n\n![Token](/.github/readme/imgs/plugin_steam_webtoken.png)\n\nTo retrieve your Steam ID, access your user account on [store.steampowered.com/account](https://store.steampowered.com/account) and copy the identifier located behind the header:\n\n![User ID](/.github/readme/imgs/plugin_steam_userid.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recently played games\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.steam.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_steam_token: ${{ secrets.STEAM_TOKEN }}\n  plugin_steam: yes\n  plugin_steam_user: \"0\"\n  plugin_steam_sections: recently-played\n  plugin_steam_achievements_limit: 0\n\n```\n```yaml\nname: Profile and detailed game history\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.steam.full.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_steam_token: ${{ secrets.STEAM_TOKEN }}\n  plugin_steam: yes\n  plugin_steam_user: \"0\"\n\n```\n<!--/examples-->\n","source/plugins/support/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💭 GitHub Community Support</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays statistics from a <a href=\"https://github.community/\">GitHub Support Community</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Deprecated</th><td><p>GitHub Support Community has been moved to <a href=\"https://github.blog/2022-07-26-launching-github-community-powered-by-github-discussions\">GitHub Discussions</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.support.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_support</code></h4></td>\n    <td rowspan=\"2\"><p>Enable support plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: GitHub Community Support\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.support.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_support: yes\n\n```\n<!--/examples-->\n","source/plugins/topics/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📌 Starred topics</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays <a href=\"https://github.com/stars?filter=topics\">starred topics</a>.</p>\n<p>Check out <a href=\"https://github.com/topics\">GitHub topics</a> to search interesting topics.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>With icons</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.topics.icons.svg\" alt=\"\"></img></details>\n      <details open><summary>With labels</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.topics.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_topics</code></h4></td>\n    <td rowspan=\"2\"><p>Enable topics plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_topics_mode</code></h4></td>\n    <td rowspan=\"2\"><p>Display mode</p>\n<ul>\n<li><code>labels</code>: display labels</li>\n<li><code>icons</code>: display icons <em>(topics without icons will not be displayed)</em></li>\n<li><code>starred</code>: alias for <code>labels</code></li>\n<li><code>mastered</code>: alias for <code>icons</code></li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> starred<br>\n<b>allowed values:</b><ul><li>labels</li><li>icons</li><li>starred</li><li>mastered</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_topics_sort</code></h4></td>\n    <td rowspan=\"2\"><p>Sorting method</p>\n<ul>\n<li><code>stars</code>: sort by most stars</li>\n<li><code>activity</code>: sort by recent activity</li>\n<li><code>starred</code>: sort by starred date</li>\n<li><code>random</code>: sort randomly</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> stars<br>\n<b>allowed values:</b><ul><li>stars</li><li>activity</li><li>starred</li><li>random</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_topics_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 20)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 15<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Labels\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.topics.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_topics: yes\n  plugin_topics_limit: 12\n\n```\n```yaml\nname: Icons\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.topics.icons.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_topics: yes\n  plugin_topics_limit: 0\n  plugin_topics_mode: icons\n\n```\n<!--/examples-->\n","source/plugins/traffic/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧮 Repositories traffic</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the number of page views across affiliated repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 repo</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.traffic.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_traffic</code></h4></td>\n    <td rowspan=\"2\"><p>Enable traffic plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_traffic_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Repositories traffic\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.traffic.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: repositories\n  plugin_traffic: yes\n\n```\n<!--/examples-->\n","source/plugins/tweets/README.md":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🐤 Latest tweets</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the latest tweets from a <a href=\"https://twitter.com\">Twitter</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Deprecated</th><td><p>As <a href=\"https://twitter.com\">Twitter</a> removed the ability to fetch tweets from their free API as part of their new <a href=\"https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api\">pricing policy</a>, this plugin is no longer maintained.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://twitter.com\">Twitter</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_tweets_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Latest tweets with attachments</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.tweets.attachments.svg\" alt=\"\"></img></details>\n      <details><summary>Latest tweets</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.tweets.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets</code></h4></td>\n    <td rowspan=\"2\"><p>Enable tweets plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.twitter.tweets</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets_token</code></h4></td>\n    <td rowspan=\"2\"><p>Twitter API token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets_user</code></h4></td>\n    <td rowspan=\"2\"><p>Twitter username</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User attached twitter</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets_attachments</code></h4></td>\n    <td rowspan=\"2\"><p>Tweets attachments</p>\n<p>Can be used to display linked images, video thumbnails, etc.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 10)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a Twitter token\n\nTo get a Twitter token, it is required to apply to the [developer program](https://apps.twitter.com).\nIt's a bit tedious, but requests seems to be approved quite quickly.\n\nCreate an app from the [developer dashboard](https://developer.twitter.com/en/portal/dashboard) and register your bearer token in repository secrets.\n\n![Twitter token](/.github/readme/imgs/plugin_tweets_secrets.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Latest tweets\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.tweets.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_tweets: yes\n  plugin_tweets_token: ${{ secrets.TWITTER_TOKEN }}\n  plugin_tweets_user: github\n\n```\n```yaml\nname: Latest tweets including attachments\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.tweets.attachments.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_tweets: yes\n  plugin_tweets_token: ${{ secrets.TWITTER_TOKEN }}\n  plugin_tweets_attachments: yes\n  plugin_tweets_user: github\n  plugin_tweets_limit: 1\n\n```\n<!--/examples-->\n","source/plugins/wakatime/README.md":"<!-- Skill available on-demand via /api/skills/lowlighter/metrics?path=source%2Fplugins%2Fwakatime%2FREADME.md -->"},"items":[{"name":"README.md","path":"source/plugins/achievements/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/achievements/README.md","title":"achievements Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🏆 Achievements</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays several highlights about what an account has achieved on GitHub.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Compact display</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.achievements.compact.svg\" alt=\"\"></img></details>\n      <details><summary>Detailed display</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.achievements.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements</code></h4></td>\n    <td rowspan=\"2\"><p>Enable achievements plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Rank threshold filter</p>\n<p>Use <code>X</code> to display achievements not yet unlocked</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> C<br>\n<b>allowed values:</b><ul><li>S</li><li>A</li><li>B</li><li>C</li><li>X</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_secrets</code></h4></td>\n    <td rowspan=\"2\"><p>Secrets achievements</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_display</code></h4></td>\n    <td rowspan=\"2\"><p>Display style</p>\n<ul>\n<li><code>detailed</code>: display icon, name, description and ranking</li>\n<li><code>compact</code>: display icon, name and value</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> detailed<br>\n<b>allowed values:</b><ul><li>detailed</li><li>compact</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored achievements</p>\n<p>Use achievements names without their rank adjective (i.e. without &quot;great&quot;, &quot;super&quot; or &quot;master&quot;)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_only</code></h4></td>\n    <td rowspan=\"2\"><p>Showcased achievements</p>\n<p>Use achievements names without their rank adjective (i.e. without &quot;great&quot;, &quot;super&quot; or &quot;master&quot;)</p>\n<p>This option is equivalent to <a href=\"/source/plugins/achievements/README.md#plugin_achievements_ignored\"><code>plugin_achievements_ignored</code></a> with all existing achievements except the ones listed in this option</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Detailed display\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.achievements.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_achievements: yes\n  plugin_achievements_only: sponsor, maintainer, octonaut\n\n```\n```yaml\nname: Compact display\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.achievements.compact.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_achievements: yes\n  plugin_achievements_only: >-\n    polyglot, stargazer, sponsor, deployer, member, maintainer, developer,\n    scripter, packager, explorer, infographile, manager\n  plugin_achievements_display: compact\n  plugin_achievements_threshold: X\n\n```\n<!--/examples-->","isInternal":false,"tokens":1733,"sizeBytes":5586},{"name":"README.md","path":"source/plugins/activity/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/activity/README.md","title":"activity Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📰 Recent activity</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays recent activity on GitHub.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.activity.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity</code></h4></td>\n    <td rowspan=\"2\"><p>Enable activity plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_load</code></h4></td>\n    <td rowspan=\"2\"><p>Events to load</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(100 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 300<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_days</code></h4></td>\n    <td rowspan=\"2\"><p>Events maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 365)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 14<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_visibility</code></h4></td>\n    <td rowspan=\"2\"><p>Events visibility</p>\n<p>Can be used to toggle private activity visibility when using a token with <code>repo</code> scope</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> all<br>\n<b>allowed values:</b><ul><li>public</li><li>all</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_timestamps</code></h4></td>\n    <td rowspan=\"2\"><p>Events timestamps</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored users</p>\n<p>Can be used to ignore bots activity</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>users_ignored</code><br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_filter</code></h4></td>\n    <td rowspan=\"2\"><p>Events types</p>\n<p>These are fetched from <a href=\"https://docs.github.com/en/free-pro-team@latest/developers/webhooks-and-events/github-event-types\">GitHub events API</a> and the following types are currently supported:</p>\n<ul>\n<li><code>push</code>: Push of commits</li>\n<li><code>issue</code>: Opening/Reopening/Closing of issues</li>\n<li><code>pr</code>: Opening/Closing of pull requests</li>\n<li><code>ref/create</code>: Creation of git tags or git branches</li>\n<li><code>ref/delete</code>: Deletion of git tags or git branches</li>\n<li><code>release</code>: Publication of new releases</li>\n<li><code>review</code>: Review of pull requests</li>\n<li><code>comment</code>: Comments on commits, issues and pull requests</li>\n<li><code>wiki</code>: Changes of wiki pages</li>\n<li><code>fork</code>: Forking of repositories</li>\n<li><code>star</code>: Starring of repositories</li>\n<li><code>public</code>: Repositories made public</li>\n<li><code>member</code>: Addition of new collaborator in repository</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> all<br>\n<b>allowed values:</b><ul><li>all</li><li>comment</li><li>ref/create</li><li>ref/delete</li><li>release</li><li>push</li><li>issue</li><li>pr</li><li>review</li><li>wiki</li><li>fork</li><li>star</li><li>member</li><li>public</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recent activity\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.activity.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_activity: yes\n  plugin_activity_limit: 5\n  plugin_activity_days: 0\n  plugin_activity_filter: issue, pr, release, fork, review, ref/create\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":2032,"sizeBytes":6310},{"name":"README.md","path":"source/plugins/anilist/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/anilist/README.md","title":"anilist Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🌸 Anilist watch list and reading list</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays favorites animes, mangas and characters from a <a href=\"https://anilist.co\">AniList</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://anilist.co\">AniList</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>For anime watchers</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.anilist.svg\" alt=\"\"></img></details>\n      <details><summary>For manga readers</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.anilist.manga.svg\" alt=\"\"></img></details>\n      <details open><summary>For waifus simp</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.anilist.characters.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist</code></h4></td>\n    <td rowspan=\"2\"><p>Enable aniList plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_user</code></h4></td>\n    <td rowspan=\"2\"><p>AniList login</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_medias</code></h4></td>\n    <td rowspan=\"2\"><p>Medias types</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> anime, manga<br>\n<b>allowed values:</b><ul><li>anime</li><li>manga</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>favorites</code> will display favorites from <code>plugin_anilist_medias</code></li>\n<li><code>watching</code> will display animes currently in watching list</li>\n<li><code>reading</code> will display manga currently in reading list</li>\n<li><code>characters</code> will display liked characters</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> favorites<br>\n<b>allowed values:</b><ul><li>favorites</li><li>watching</li><li>reading</li><li>characters</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (medias)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_limit_characters</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (characters)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 22<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_shuffle</code></h4></td>\n    <td rowspan=\"2\"><p>Shuffle data</p>\n<p>Can be used to create varied outputs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Favorites anime and currently watching\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.anilist.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_anilist: yes\n  plugin_anilist_medias: anime\n  plugin_anilist_sections: favorites, watching\n  plugin_anilist_limit: 1\n\n```\n```yaml\nname: Favorites manga and currently reading\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.anilist.manga.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_anilist: yes\n  plugin_anilist_medias: manga\n  plugin_anilist_sections: favorites, reading\n  plugin_anilist_limit: 1\n\n```\n```yaml\nname: Favorites characters\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.anilist.characters.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_anilist: yes\n  plugin_anilist_sections: characters\n  plugin_anilist_limit_characters: 22\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1799,"sizeBytes":5654},{"name":"README.md","path":"source/plugins/base/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/base/README.md","title":"base Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗃️ Base content</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n<td colspan=\"2\"><table><tr>\n<td align=\"center\">\n<img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.classic.svg\" alt=\"\"></img>\n</td>\n<td align=\"center\">\n<img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.organization.svg\" alt=\"\"></img>\n</td>\n</tr></table></td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base</code></h4></td>\n    <td rowspan=\"2\"><p>Base content</p>\n<p>The following sections are supported:</p>\n<ul>\n<li><code>header</code>, which usually contains username, two-weeks commits calendars and a few additional data</li>\n<li><code>activity</code>, which contains recent activity (commits, pull requests, issues, etc.)</li>\n<li><code>community</code>, which contains community stats (following, sponsors, organizations, etc.)</li>\n<li><code>repositories</code>, which contains repository stats (license, forks, stars, etc.)</li>\n<li><code>metadata</code>, which contains information about generated metrics</li>\n</ul>\n<p>These are all enabled by default, but it is possible to explicitly opt out from them.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> header, activity, community, repositories, metadata<br>\n<b>allowed values:</b><ul><li>header</li><li>activity</li><li>community</li><li>repositories</li><li>metadata</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode</p>\n<p>Enabling this will consume additional API queries to fetch more data.\nThis currently improves the accuracy of the following statistics:</p>\n<ul>\n<li>total commits</li>\n<li>total issues</li>\n<li>total pull requests</li>\n<li>total pull requests reviews</li>\n<li>total repositories contributed to</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base_hireable</code></h4></td>\n    <td rowspan=\"2\"><p>Show <code>Available for hire!</code> in header section</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base_skip</code></h4></td>\n    <td rowspan=\"2\"><p>Skip base content</p>\n<blockquote>\n<p>⚠️ Any plugin that relies on base content data may break!\nOnly use this option when using a plugin that can be configured with <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Fetched repositories</p>\n<p>A higher value result in more accurate metrics but can hit GitHub API rate-limit more easily (especially with a lot of plugins enabled)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_batch</code></h4></td>\n    <td rowspan=\"2\"><p>Fetched repositories per query</p>\n<p>If you receive <code>Something went wrong while executing your query</code> (which is usually caused by API timeouts), lowering this value may help.\nThis setting may not be supported by all plugins.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_forks</code></h4></td>\n    <td rowspan=\"2\"><p>Include forks</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_affiliations</code></h4></td>\n    <td rowspan=\"2\"><p>Repositories affiliations</p>\n<ul>\n<li><code>owner</code>: owned repositories</li>\n<li><code>collaborator</code>: repositories with push access</li>\n<li><code>organization_member</code>: repositories from an organization where user is a member</li>\n</ul>\n<p>Some plugin outputs may be affected by this setting too.</p>\n<p>Set to <code>&quot;&quot;</code> to disable and fetch all repositories related to given account.\nBroad affiliations will result in less representative metrics.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> owner<br>\n<b>allowed values:</b><ul><li>owner</li><li>collaborator</li><li>organization_member</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Default skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>users_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Default ignored users</p>\n<p>Note that emails are only supported in commits-related elements.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> github-actions[bot], dependabot[bot], dependabot-preview[bot], actions-user, action@github.com<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>commits_authoring</code></h4></td>\n    <td rowspan=\"2\"><p>Identifiers that has been used for authoring commits</p>\n<p>Specify names, surnames, username, email addresses that has been used in the past that can be used to detect commits ownerships in some plugins</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Default metrics\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.base.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: header, activity, community, repositories, metadata\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":2385,"sizeBytes":7822},{"name":"README.md","path":"source/plugins/calendar/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/calendar/README.md","title":"calendar Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📆 Commit calendar</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display commit calendar across several years.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details><summary>Current year</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.calendar.svg\" alt=\"\"></img></details>\n      <details open><summary>Full history</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.calendar.full.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_calendar</code></h4></td>\n    <td rowspan=\"2\"><p>Enable calendar plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_calendar_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Years to display</p>\n<p>This option has different behaviours depending on its value:</p>\n<ul>\n<li><code>n &gt; 0</code> will display the last <code>n</code> years, relative to current year</li>\n<li><code>n == 0</code> will display all years starting from GitHub account registration date</li>\n<li><code>n &lt; 0</code> will display all years plus <code>n</code> additional years, relative to GitHub account registration date<ul>\n<li>Use this when there are commits pushed before GitHub registration</li>\n</ul>\n</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Current year calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.calendar.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_calendar: yes\n\n```\n```yaml\nname: Full history calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.calendar.full.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_calendar: yes\n  plugin_calendar_limit: 0\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":963,"sizeBytes":3294},{"name":"README.md","path":"source/plugins/code/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/code/README.md","title":"code Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>♐ Random code snippet</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays a random code snippet from recent activity history.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ When improperly configured, this plugin could display private code.\nIf you work with sensitive data or company code, it is advised to keep this plugin disabled.\nUse at your own risk, <em>metrics</em> and its authors cannot be held responsible for any resulting code leaks.</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.code.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code</code></h4></td>\n    <td rowspan=\"2\"><p>Enable code plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_lines</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (lines per code snippets)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 128)</i>\n<br>\n<b>default:</b> 12<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_load</code></h4></td>\n    <td rowspan=\"2\"><p>Events to load</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(100 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 400<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_days</code></h4></td>\n    <td rowspan=\"2\"><p>Events maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 365)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 3<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_visibility</code></h4></td>\n    <td rowspan=\"2\"><p>Events visibility</p>\n<p>Can be used to toggle private activity visibility when using a token with <code>repo</code> scope</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> public<br>\n<b>allowed values:</b><ul><li>public</li><li>all</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Showcased languages</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: JavaScript or TypeScript snippet of the day\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.code.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_code: yes\n  plugin_code_languages: javascript, typescript\n  plugin_code_load: 400\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1461,"sizeBytes":4550},{"name":"README.md","path":"source/plugins/community/16personalities/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/community/16personalities/README.md","title":"16personalities Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧠 16personalities</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays personality profile from a <a href=\"https://www.16personalities.com/profile\">16personalities profile</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://www.16personalities.com\">16personalities</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.16personalities.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities</code></h4></td>\n    <td rowspan=\"2\"><p>Enable 16personalities plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities_url</code></h4></td>\n    <td rowspan=\"2\"><p>Profile URL</p>\n<p>This can be obtained after doing the <a href=\"https://www.16personalities.com/free-personality-test\">test on 16personalities</a> and registering an email.\nLogin with the generated password received in your mailbox and copy the link that is displayed when sharing the profile.</p>\n<img src=\"/.github/readme/imgs/plugin_16personalities_profile.png\" width=\"800\" />\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>personality</code> will display personality type</li>\n<li><code>profile</code> will display role and strategy</li>\n<li><code>traits</code> will display mind, energy, nature, tactics and identity traits</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> personality<br>\n<b>allowed values:</b><ul><li>personality</li><li>profile</li><li>traits</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities_scores</code></h4></td>\n    <td rowspan=\"2\"><p>Display traits scores</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: MBTI Personality profile\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.16personalities.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_16personalities: yes\n  plugin_16personalities_url: ${{ secrets.SIXTEEN_PERSONALITIES_URL }}\n  plugin_16personalities_sections: personality, traits\n  plugin_16personalities_scores: no\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1204,"sizeBytes":3963},{"name":"README.md","path":"source/plugins/community/chess/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/community/chess/README.md","title":"chess Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>♟️ Chess</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the last game you played on a supported chess platform.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with any of the supported provider.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_chess_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.chess.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess</code></h4></td>\n    <td rowspan=\"2\"><p>Enable chess plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_token</code></h4></td>\n    <td rowspan=\"2\"><p>Chess platform token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.chess.any</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_user</code></h4></td>\n    <td rowspan=\"2\"><p>Chess platform login</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_platform</code></h4></td>\n    <td rowspan=\"2\"><p>Chess platform</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>lichess.org</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_animation</code></h4></td>\n    <td rowspan=\"2\"><p>Animation settings</p>\n<ul>\n<li><code>size</code> is the size of a single chessboard square in pixels (board will be 8 times larger)</li>\n<li><code>delay</code> is the delay before starting animation (in seconds)</li>\n<li><code>duration</code> is the duration of the animation of a move (in seconds)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"size\": 40,\n  \"delay\": 3,\n  \"duration\": 0.6\n}\n</code></pre></details><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a lichess.org token\n\nCreate a [lichess.org account](https://lichess.org) and select [API access tokens](https://lichess.org/account/oauth/token) to get a token.\n\n![lichess.org token](/.github/readme/imgs/plugin_chess_lichess_token_0.png)\n\nIt is not necessary to add additional scopes:\n\n![lichess.org token](/.github/readme/imgs/plugin_chess_lichess_token_1.png)\n\nCreate token and store it in your secrets:\n\n![lichess.org token](/.github/readme/imgs/plugin_chess_lichess_token_0.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Last chess game from lichess.org\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.chess.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_chess: yes\n  plugin_chess_token: ${{ secrets.CHESS_TOKEN }}\n  plugin_chess_platform: lichess.org\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1376,"sizeBytes":4360},{"name":"README.md","path":"source/plugins/community/crypto/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/community/crypto/README.md","title":"crypto Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Header -->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🪙 Crypto</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\">\n    <p>This plugin generates an SVG image containing crypto metrics from a given address. It uses the CoinGecko API to fetch crypto prices.</p>\n    <p>For more information, check the <a href=\"https://www.coingecko.com/vi/api/documentation\">CoinGecko API documentation</a>.</p>\n  </td></tr>\n  <tr><th>Authors</th><td><a href=\"https://github.com/dajneem23\">@dajneem23</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported Features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td>\n      <ul>\n        <li><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></li>\n        <li><a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></li>\n      </ul>\n    </td>\n  </tr>\n  <tr>\n    <td>\n      <ul>\n        <li><code>👤 Users</code></li>\n        <li><code>👥 Organizations</code></li>\n        <li><code>📓 Repositories</code></li>\n      </ul>\n    </td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_crypto</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://via.placeholder.com/468x60?text=No%20preview%20available\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!-- /Header -->\n\n## ➡️ Available Options\n\n<!-- Options -->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto</code></h4></td>\n    <td rowspan=\"2\"><p>Enable crypto plugin</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>boolean</code><br>Default: <code>no</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_id</code></h4></td>\n    <td rowspan=\"2\"><p>Crypto id (from Coingecko)</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>string</code><br>Default: \"\"<br>Example: bitcoin<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_vs_currency</code></h4></td>\n    <td rowspan=\"2\"><p>The target currency of market data (usd, eur, jpy, etc.)</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>string</code><br>Default: \"usd\"<br>Example: \"usd\"<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_days</code></h4></td>\n    <td rowspan=\"2\"><p>Data up to number of days ago (eg. 1,14,30,max)</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>string</code><br>Default: \"1\"<br>Example: 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_precision</code></h4></td>\n    <td rowspan=\"2\"><p>The number of decimal places to use</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>number</code><br>Default: 2<br>Example: 2<br></td>\n  </tr>\n</table>\n<!-- /Options -->\n\n<!--examples-->\n```yaml\nname: Crypto Metrics\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.crypto.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_crypto: yes\n  plugin_crypto_id: bitcoin\n  plugin_crypto_vs_currency: usd\n  plugin_crypto_days: 1\n  plugin_crypto_precision: 2\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1131,"sizeBytes":3436},{"name":"README.md","path":"source/plugins/community/fortune/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/community/fortune/README.md","title":"fortune Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🥠 Fortune</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugins displays a random fortune message</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.fortune.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_fortune</code></h4></td>\n    <td rowspan=\"2\"><p>Enable fortune plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Fortune\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.fortune.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_fortune: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":528,"sizeBytes":1641},{"name":"README.md","path":"source/plugins/community/nightscout/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/community/nightscout/README.md","title":"nightscout Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💉 Nightscout</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays blood sugar values from a <a href=\"http://nightscout.info\">Nightscout</a> site.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"http://nightscout.info\">Nightscout</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/legoandmars\">@legoandmars</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/legoandmars/legoandmars/blob/master/metrics.plugin.nightscout.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout</code></h4></td>\n    <td rowspan=\"2\"><p>Enable nightscout plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_url</code></h4></td>\n    <td rowspan=\"2\"><p>Nightscout URL</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> https://example.herokuapp.com<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_datapoints</code></h4></td>\n    <td rowspan=\"2\"><p>Number of datapoints shown the graph</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 12<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_lowalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for low blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 80<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_highalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for high blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 180<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_urgentlowalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for urgently low blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 50<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_urgenthighalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for urgently high blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 250<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🌐 Setup a Nightscout instance\n\nThe [nightscout website](http://www.nightscout.info/) details how to self-host a nightscout site.\nCheck out the instructions there.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  plugin_nightscout: yes\n  plugin_nightscout_url: ${{ secrets.NIGHTSCOUT_URL }}\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1398,"sizeBytes":4155},{"name":"README.md","path":"source/plugins/community/poopmap/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/community/poopmap/README.md","title":"poopmap Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💩 PoopMap plugin</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays statistics from a <a href=\"https://poopmap.net\">PoopMap</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://poopmap.net\">PoopMap</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/matievisthekat\">@matievisthekat</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_poopmap_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/matievisthekat/matievisthekat/blob/master/metrics.plugin.poopmap.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_poopmap</code></h4></td>\n    <td rowspan=\"2\"><p>Enable poopmap plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_poopmap_token</code></h4></td>\n    <td rowspan=\"2\"><p>PoopMap API token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_poopmap_days</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>default:</b> 7<br>\n<b>allowed values:</b><ul><li>7</li><li>30</li><li>180</li><li>365</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a PoopMap token\n\nInstall PoopMap app ([iOS](https://itunes.apple.com/us/app/poop-map/id1303269455?mt=8)/[Android](https://play.google.com/store/apps/details?id=net.poopmap)) and create an account.\n\nNavigate to your profile in the app\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/45036977/143533812-c2776bcc-1fda-441e-bc96-cf21d4c69ca1.jpg\" width=\"150\" />\n</div>\n\nTap \"Share Profile\" in the top right\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/45036977/143533849-b7e03b4d-2903-4339-bbb7-e1fc0ea9724e.jpg\" width=\"150\" />\n</div>\n\nTap \"Copy to Clipboard\"\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/45036977/143533856-f4a9fc0d-7bde-48c2-b579-e8ee91804d78.jpg\" width=\"150\" />\n</div>\n\nIt should result in something like `Haha, check out the places I've pooped on Poop Map https://api.poopmap.net/map?token=xxxxxxxxxx` copied.\n\nExtract the `token` query parameter from the link and use it in `plugin_poopmap_token`.\nThis token will not expire and it will be able to access only public details.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  plugin_poopmap_token: ${{ secrets.POOPMAP_TOKEN }}\n  plugin_poopmap: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1209,"sizeBytes":3722},{"name":"README.md","path":"source/plugins/community/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/community/README.md","title":"community Documentation","category":"plugin-manifest","format":"markdown","content":"<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎲 Community plugins</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\">Additional plugins maintained by community for even more features!</td></tr>\n  <tr>\n    <th><a href=\"/source/plugins/community/16personalities/README.md\">🧠 16personalities</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n    <th><a href=\"/source/plugins/community/chess/README.md\">♟️ Chess</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.16personalities.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.chess.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/crypto/README.md\">🪙 Crypto</a><br><sup>by <a href=\"https://github.com/dajneem23\">@dajneem23</a></sup></th>\n    <th><a href=\"/source/plugins/community/fortune/README.md\">🥠 Fortune</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://via.placeholder.com/468x60?text=No%20preview%20available\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.fortune.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/nightscout/README.md\">💉 Nightscout</a><br><sup>by <a href=\"https://github.com/legoandmars\">@legoandmars</a></sup></th>\n    <th><a href=\"/source/plugins/community/poopmap/README.md\">💩 PoopMap plugin</a><br><sup>by <a href=\"https://github.com/matievisthekat\">@matievisthekat</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/legoandmars/legoandmars/blob/master/metrics.plugin.nightscout.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/matievisthekat/matievisthekat/blob/master/metrics.plugin.poopmap.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/screenshot/README.md\">📸 Website screenshot</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n    <th><a href=\"/source/plugins/community/splatoon/README.md\">🦑 Splatoon</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.screenshot.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.splatoon.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/stock/README.md\">💹 Stock prices</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n    <th></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stock.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n<td align=\"center\"><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n</table>\n\n## 📪 Creating community plugins\n\nPlugins creation requires you to be comfortable with JavaScript, HTML, CSS and [EJS](https://github.com/mde/ejs).\n\n### 💬 Before creating a new plugin\n\nBe sure to read [contribution guide](/CONTRIBUTING.md) and [architecture](/ARCHITECTURE.md) first.\n\n> ℹ️ *metrics* maintainers have no obligation towards community plugins support and may redirect any help, feature or fix requests from other users to you. Of course you are not bound to work on it, but it would be great if you plan to merge a plugin in the main repository\n\nPlease respect the following guidelines:\n\n- A plugin should be independent and should not rely on other plugins\n  - [🧱 core](/source/plugins/core/README.md) and [🗃️ base](/source/plugins/base/README.md) output can be reused though\n- A plugin should never edit its original arguments, as it is shared amongst other plugins and would create unattended side effects\n- Use `imports.metadata.plugins.{plugin-name}.inputs()` to automatically type check and default user inputs through defined `metadata.yml`\n- Plugin options should respect the \"lexical field\" of existing option to keep consistency\n- Plugin errors should be handled gracefully by partials with error message\n- New dependencies should be avoided, consider using existing `imports`\n- Spawning sub-process should be avoided, unless absolute necessity\n  - Use `imports.which()` to detect whether a command is available\n  - Use `imports.run()` to run a command\n    - Pass `{prefixed: true}` to wrap automatically command with [WSL](https://docs.microsoft.com/windows/wsl/about) on Windows\n  - It is required to work on Linux Ubuntu (as the GitHub action run on it)\n\n> 💡 While the following guide intend to explain the creation process of new plugin, it may also be a good idea to see what existing plugins looks like and see if you want to embark on the adventure!\n\n### 💬 Quick-start\n\nTo create a new plugin, clone and setup this repository first:\n```shell\ngit clone https://github.com/lowlighter/metrics.git\ncd metrics/\nnpm install\n```\n\nFind a cool name and an [unused emoji](https://emojipedia.org) for your new plugin and run the following:\n```shell\nnpm run quickstart plugin <plugin_name>\n```\n\n> ⚠️ Community plugins cannot have the same name as official plugins. *metrics* maintainers may also reserve a plugin name for future usage and may ask you to rename it in case of conflicts\n\nIt will create a new directory in `/source/plugins/community` with the following file structure:\n* `/source/plugins/community/{plugin-name}`\n  * `README.md`\n  * `metadata.yml`\n  * `examples.mjs`\n  * `index.mjs`\n\nPlugins are auto-loaded based on their folder existence, so there's no need to register them somewhere.\n\n### 💬 Filling `metadata.yml`\n\n`metadata.yml` is a required file which describes supported account types, output formats, scopes, etc.\n\nThe default file looks like below:\n```yaml\nname: \"🧩 Plugin name\"\ncategory: community\ndescription: Short description\nexamples:\n  default: https://via.placeholder.com/468x60?text=No%20preview%20available\nauthors:\n  - octocat\nsupports:\n  - user\n  - organization\n  - repository\nscopes: []\ninputs:\n\n  plugin_{name}:\n    description: Enable {name} plugin\n    type: boolean\n    default: no\n```\n\n> 💡 It is important to correctly define `metadata.yml` because *metrics* will use its content for various usage\n\n[`🧱 core`](/source/plugins/core/README.md) plugin (which is always called) will automatically verify user inputs against `supports` and `inputs` values and throw an error in case of incompatibility.\n\n`name`, `description`, `scopes`, `examples` are used to auto-generate documentation in the `README.md`. For community plugins, `examples` should be set with auto-generated examples of your own profile.\n\n`authors` should contain your GitHub username\n\n`category` should be set to `community`.\n\nBecause of GitHub Actions original limitations, only strings, numbers and boolean were actually supported by `action.yml`. *metrics* implemented its own `inputs` validator to circumvent this. It should be pretty simple to use.\n\n*Example: boolean type, defaults to `false`*\n```yml\n  plugin_{name}_{option}:\n    description: Boolean type\n    type: boolean\n    default: no\n```\n\n```yml\n  plugin_{name}_{option}:\n    description: String type\n    type: string\n    default: .user.login\n```\n\n> 💡 `.user.login`, `.user.twitter` and `.user.website` are special default values that will be respectively replaced by user's login, Twitter username and attached website. Note that these are not available if `token: NOT_NEEDED` is set by user\n\n*Example: string type, defaults to `foo` with `foo` or `bar` as allowed values*\n```yml\n  plugin_{name}_{option}:\n    description: Select type\n    type: string\n    values:\n      - foo\n      - bar\n    default: foo\n```\n\n> 💡 `values` restricts what can be passed by user\n\n*Example: number type, defaults to `1` and expected to be between `0` and `100`*\n```yml\n  plugin_{name}_{option}:\n    description: Number type\n    type: number\n    default: 1\n    min: 0\n    max: 100\n```\n\n> 💡 `min` and `max` restricts what can be passed by user. Omit these to respectively remove lower and upper limits.\n\n> 💡 Zero may have a special behaviour (usually to disable limitations), if that's the case add a `zero` attribute (e.g. `zero: disable`) to reference this in documentation\n\n*Example: array type, with comma-separated elements*\n```yml\n  plugin_{name}_{option}:\n    description: Array type\n    type: array\n    format: comma-separated\n    values:\n      - foo\n      - bar\n    default: foo, bar\n```\n\n> 💡 An array can be either `comma-separated` or `space-separated`, and will split user input by mentioned separator. Each value is trimmed and lowercased.\n\n*Example: json type*\n```yml\n  plugin_{name}_{option}:\n    description: JSON type\n    type: json\n    default: |\n      {\n        \"foo\": \"bar\"\n      }\n```\n\n> 💡 JSON types should be avoided when possible, as they're usually kind of unpractical to write within a YAML document\n\nFor complex inputs, pass an `example` that will be displayed as a placeholder on web instances.\n\nWhen calling `imports.metadata.plugins.{plugin-name}.inputs({data, account, q})`, an object with verified user inputs and correct typing will be returned.\n\nAny invalid input will use have the `default` value instead.\n\n> ⚠️ Returned object will use the web syntax for options rather than the action one. It means that `plugin_` prefix is dropped, and all underscores (`_`) are replaced by dots (`.`)\n\n*Example: validating user inputs*\n```javascript\nlet {limit, \"limit.field\":limit_field} = imports.metadata.plugins.myplugin.inputs({data, account, q})\nconsole.assert(limit === true)\n```\n\n### 💬 Filling `index.mjs`\n\nPlugins use [JavaScript modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules).\n\nThe default exported module of `index.mjs` will be auto-loaded when *metrics* start.\n\nBelow is a breakdown of basic `index.mjs` content\n```js\nexport default async function(\n  //Shared inputs\n  {\n    login, //GitHub username\n    q, //Raw user inputs (dot notation without plugin_ prefix, don't use it directly)\n    imports, //Various utilities (axios, puppeteer, fs, etc., see /source/app/metrics/utils.mjs)\n    data, //Raw data from core/base plugin\n    computed, //Computed data from core/base plugin\n    rest, //Rest authenticated GitHub octokit\n    graphql, //Graph QL authenticated GitHub octokit\n    queries, //Autoloaded queries from ./queries\n    account, //Account type (\"user\" or \"organization\")\n  },\n  //Settings and tokens\n  {\n    enabled = false,\n    extras = false,\n  } = {}) {\n    //Plugin execution\n    try {\n      //Check if plugin is enabled and requirements are met\n      if ((!q.my_plugin)||(imports.metadata.plugins.my_plugin.enabled(enabled, {extras})))\n        return null\n\n      //Automatically validate user inputs\n      //An error will be thrown if `account` type is not supported\n      //Inputs will have correct typing from `metadata.yml` and unset or invalid options will be set to default\n      let {option} = imports.metadata.plugins.my_plugin.inputs({data, account, q})\n\n      //Automatically template query from /source/plugins/myplugin/queries/myquery.graph ql\n      const {[account]:stuff} = await graphql(queries.myplugin.myquery({login, account, option}))\n\n      //Results\n      return {stuff}\n    }\n    //Handle errors\n    catch (error) {\n      throw imports.format.error(error)\n    }\n}\n```\n\n> ⚠️ Remember, a plugin should never edit its original arguments, as it is shared amongst other plugins and would create unattended side effects\n\n### 💬 Creating partials\n\nJust create a new `.ejs` file in `partials` folder from templates you wish to support, and reference it into their `partials/_.json`.\n\nPlugin partials should be able to handle gracefully their own state and errors.\n\nBelow is a minimal snippet of a partial:\n```ejs\n<% if (plugins.{plugin_name}) { %>\n  <% if (plugins.{plugin_name}.error) { %>\n    <%= plugins.{plugin_name}.error.message %>\n  <% } else { %>\n    <%# content %>\n  <% } %>\n<% } %>\n```\n\nPartials should have the match the same name as plugin handles, as they're used to display plugin compatibility in auto-generated header.\n\n[EJS](https://github.com/mde/ejs) framework is used to template content through templating tags (``).\n\n### 💬 Filling `README.md`\n\n`README.md` is used as documentation.\n\nMost of it will is auto-generated by `metadata.yml` and `examples.yml` content, so usually it is not required to manually edit it.\n\nThe default content looks like below:\n```markdown\n<ǃ--header-->\n<ǃ--/header-->\n\n## ➡️ Available options\n\n<ǃ--options-->\n<ǃ--/options-->\n\n## ℹ️ Examples workflows\n\n<ǃ--examples-->\n<ǃ--/examples-->\n```\n\n- `<ǃ--header-->` will be replaced by an auto-generated header containing plugin name, supported features and output examples based on `metadata.yml`\n- `<ǃ--options-->` will be replaced by an auto-generated table containing all referenced option from `metadata.yml`\n- `<ǃ--examples-->` will be replaced by workflows from `examples.yml`\n\n> ⚠️ Do not replace these auto-generated placeholder yet! They will be built by the ci workflow and will help making your pull request easier to read\n\nWhen a plugin requires a token, please add a `## 🗝️ Obtaining a {service} token` section after the available options section.\n\nComplex features may also be documented in additional sections after available options section options if required.\n\nTry to respect current format of `README.md` from other plugins and use a neutral and impersonal writing style if possible.\n\n### 💬 Filling `examples.yml`\n\nWorkflow examples from `examples.yml` are used as unit testing and to auto-generate documentation in the `README.md`.\n\nIt uses the same syntax as GitHub action and looks like below:\n```yml\n- name: Test name\n  uses: lowlighter/metrics@latest\n  with:\n    filename: metrics.plugin.{name}.svg\n    token: ${{ secrets.METRICS_TOKEN }}\n    base: \"\"\n    plugin_{name}: yes\n  prod:\n    skip: true\n  test:\n    timeout: 1800000\n    modes:\n      - action\n      - web\n      - placeholder\n```\n\n> 💡 Tests are executed in a mocked environment to avoid causing charges on external services. It may be required to create mock testing files.\n\n`test` is usually not needed and optional but can be set to set a custom timeout (for plugins with a high execution time) and `modes` can be used to restrict which environment should be used.\n\n`prod` should keep `skip: true` as you should use your own render outputs as examples.\n\n### 💬 Testing locally and creating mocked data\n\nThe easiest way to test a new plugin is to setup a web instance locally ([see documentation](.github/readme/partials/documentation/setup/local.md)).\n\nOnce server is started, open a browser and try to generate an output with your new plugin enabled and check if it works as expected:\n```\nhttp://localhost:3000/username?base=0&my-plugin=1\n```\n\n> 💡 You may need to configure your server first by editing `settings.json`. Ensure that:\n> - `token` is correctly set when working with GitHub APIs\n> - `plugins.default` is set to `true` as plugins are disabled by default\n>   - or enable your plugins by manually in `plugins`.`my-plugin`.`enabled`\n> -  `debug` is set to `true` for more verbose output\n\nWhen your plugin is finalized, you may need to create mocked data if it either uses GitHub APIs or any external service.\n\nThey must be created in `tests/mocks/api`:\n- use `github` directory for all related GitHub APIs data\n- use `axios` directory for all external service that you call using `imports.axios`\n\n> 💡 Files from these directories are auto-loaded, so it is just required to create them with faked data.\n\nFinally [/source/app/web/statics/app.placeholder.js](/source/app/web/statics/app.placeholder.js) to add mocked placeholder data to make users using the shared instance able to preview a render locally without any server computation.\n\n### 💬 Submitting a pull request\n\nIf you made it until there, congratulations 🥳!\n\nYou're almost done, review the following checklist before submitting a pull request:\n- [x] I have correctly filled `metadata.yml`\n  - [x] `name` is set with an unused emoji and plugin name\n  - [x] `category` is set to `community`\n  - [x] `examples` contains links towards a rendered output hosted by you\n  - [x] `authors` contains my GitHub username\n  - [x] `supports` list which account type are supported\n  - [x] `scopes` are correctly listed with their associated names on GitHub (leave an empty array if not applicable)\n  - [x] `inputs` are correctly filled\n- [x] I have implemented my plugin\n  - [x] `index.mjs` respects the plugins guidelines\n- [x] I have tested my plugin locally\n  - [x] `tests/mocks` ... have been created\n  - [x] `app.placeholder.js` has been updated for preview from web instances\n  - [x] `examples.yml` contains workflows examples (at least one is required)\n    - [x] `skip: true` has been set for `prod` attribute in each test\n  - [x] `npm run linter` yields no errors\n- [x] I have documented my plugin\n  - [x] `README.md` eventually describes complex setup or options (if applicable)\n- [x] I am ready!\n  - [x] Checkout any generated files (in fact, don't run `npm run build`)\n  - [x] Commit and push your changes (commits are squashed, no need to rebase)\n  - [x] Open a new [pull request](https://github.com/lowlighter/metrics/pulls)\n  - [x] Post a screenshot or a render in the pull request so it can be previewed\n\n> 💡 A pull request **will need** to have passing builds and an example screenshot if you want to get it merged.\n> Maintainers may request changes in some cases\n\n> 🎊 Thanks a lot for your contribution!\n\n","isInternal":false,"tokens":4741,"sizeBytes":18573},{"name":"README.md","path":"source/plugins/community/screenshot/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/community/screenshot/README.md","title":"screenshot Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📸 Website screenshot</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays a screenshot from any website.</p>\n<p>It can either show the full page or a portion restricted by a <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors\">CSS selector</a>.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.screenshot.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot</code></h4></td>\n    <td rowspan=\"2\"><p>Enable screenshot plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_title</code></h4></td>\n    <td rowspan=\"2\"><p>Title caption</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> Screenshot<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_url</code></h4></td>\n    <td rowspan=\"2\"><p>Website URL</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_selector</code></h4></td>\n    <td rowspan=\"2\"><p>CSS Selector</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> body<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_mode</code></h4></td>\n    <td rowspan=\"2\"><p>Output mode</p>\n<ul>\n<li><code>image</code>: screenshot of selected element</li>\n<li><code>text</code>: keep <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText\"><code>innerText</code></a> of selected element<ul>\n<li><em>⚠️ Any CSS style applied to text such as font size, weight or color will be removed</em></li>\n</ul>\n</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> image<br>\n<b>allowed values:</b><ul><li>image</li><li>text</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_viewport</code></h4></td>\n    <td rowspan=\"2\"><p>Viewport options</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"width\": 1280,\n  \"height\": 1280\n}\n</code></pre></details><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_wait</code></h4></td>\n    <td rowspan=\"2\"><p>Wait time before taking screenshot (ms)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_background</code></h4></td>\n    <td rowspan=\"2\"><p>Background</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: XKCD of the day\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.screenshot.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_screenshot: yes\n  plugin_screenshot_title: XKCD of the day\n  plugin_screenshot_url: https://xkcd.com\n  plugin_screenshot_selector: \"#comic img\"\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1582,"sizeBytes":4847},{"name":"README.md","path":"source/plugins/community/splatoon/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/community/splatoon/README.md","title":"splatoon Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🦑 Splatoon</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays your Splatoon 3 recent matches based on data fetched from Splatnet.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://www.nintendo.com\">Nintendo</a> or <a href=\"https://splatoon.nintendo.com\">Splatoon</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n<p>This specific plugin is licensed under GPL-3.0 rather than MIT to comply with <a href=\"https://github.com/spacemeowx2/s3si.ts\">spacemeowx2/s3si.ts</a> license.</p>\n<p>Note that <em>Nintendo Switch Online</em> web tokens usage are not explicitly allowed by <em>Nintendo</em>, use at your own risk.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_splatoon_token</code> <code>🗝️ plugin_splatoon_statink_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.splatoon.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon</code></h4></td>\n    <td rowspan=\"2\"><p>Enable splatoon plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_token</code></h4></td>\n    <td rowspan=\"2\"><p>Splatnet token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.nintendo.splatnet</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>player</code> for overall player recap</li>\n<li><code>versus</code> for <em>Turf war</em> and <em>Anarchy battle</em> matches</li>\n<li><code>salmon-run</code> for <em>Salmon run next wave</em> matches</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> player, versus, salmon-run<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_versus_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Versus)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 6)</i>\n<br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_salmon_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Salmon run)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 6)</i>\n<br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_statink</code></h4></td>\n    <td rowspan=\"2\"><p>stat.ink integration</p>\n<p>If set, fetched data will also be uploaded to stat.ink\nRequires <a href=\"/source/plugins/community/splatoon/README.md#plugin_splatoon_statink_token\"><code>plugin_splatoon_statink_token</code></a> to be set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.statink</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_statink_token</code></h4></td>\n    <td rowspan=\"2\"><p>stat.ink token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_source</code></h4></td>\n    <td rowspan=\"2\"><p>Source</p>\n<ul>\n<li><code>splatnet</code> will fetch data from Splatnet using <a href=\"https://github.com/spacemeowx2/s3si.ts\">spacemeowx2/s3si.ts</a> tool</li>\n<li><code>local</code> will assume <code>s3si/export</code> directory already exists and is populated (use this when developping new features for this plugin to save network resources and time)</li>\n<li><code>mocks</code> will use <code>s3si/mocks</code> directory (use this when developping new features for this plugin to avoid setting up a NSO token)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> splatnet<br>\n<b>allowed values:</b><ul><li>splatnet</li><li>local</li><li>mocks</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a *Nintendo Switch Online* token\n\nThe helper script is intended to be run by [deno runtime](https://deno.land/). Either [install it locally](https://deno.land/manual/getting_started/installation) or use its [docker image](https://hub.docker.com/r/denoland/deno).\n\nRun the following command in your terminal and follow instructions:\n```bash\ndeno run --allow-run=deno --allow-read=profile.json --allow-write=profile.json --unstable https://raw.githubusercontent.com/lowlighter/metrics/master/source/plugins/community/splatoon/token.ts\n```\n\n![Script](/.github/readme/imgs/plugin_splatoon_script.png)\n\n![Authentication](/.github/readme/imgs/plugin_splatoon_auth.png)\n\n## 🐙 [stat.ink](https://stat.ink) integration\n\nIt is possible to make this plugin automatically export fetched games to [stat.ink](https://stat.ink) by adding the following:\n\n```yaml\nplugin_splatoon_statink: yes\nplugin_splatoon_statink_token: ${{ secrets.SPLATOON_STATINK_TOKEN }}\n```\n\n[stat.ink](https://stat.ink) API key can be found on user profile:\n\n![stat.ink](/.github/readme/imgs/plugin_splatoon_statink.png)\n\n## 👨‍💻 About\n\nData are fetched using [spacemeowx2/s3si.ts](https://github.com/spacemeowx2/s3si.ts) tool (which is itself based on [frozenpandaman/s3s](https://github.com/frozenpandaman/s3s)).\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Splatnet data\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.splatoon.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_splatoon: yes\n  plugin_splatoon_token: ${{ secrets.SPLATOON_TOKEN }}\n\n```\n```yaml\nname: Splatnet data with stat.ink integration\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.splatoon.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_splatoon: yes\n  plugin_splatoon_token: ${{ secrets.SPLATOON_TOKEN }}\n  plugin_splatoon_statink: yes\n  plugin_splatoon_statink_token: ${{ secrets.SPLATOON_STATINK_TOKEN }}\n  extras_css: |\n    h2 { display: none !important; }\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":2415,"sizeBytes":7594},{"name":"README.md","path":"source/plugins/community/stock/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/community/stock/README.md","title":"stock Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💹 Stock prices</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the stock market price of a given company.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_stock_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stock.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stock plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.d3</i></li>\n<li><i>metrics.api.yahoo.finance</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_token</code></h4></td>\n    <td rowspan=\"2\"><p>Yahoo Finance token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_symbol</code></h4></td>\n    <td rowspan=\"2\"><p>Company stock symbol</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_duration</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<ul>\n<li><code>1d</code>: Today</li>\n<li><code>5d</code>: 5 days</li>\n<li><code>1mo</code>: 1 month</li>\n<li><code>3mo</code>: 3 months</li>\n<li><code>6mo</code>: 6 months</li>\n<li><code>1y</code>: 1 year</li>\n<li><code>2y</code>: 2 years</li>\n<li><code>5y</code>: 5 years</li>\n<li><code>10y</code>: 10 years</li>\n<li><code>ytd</code>: Year to date</li>\n<li><code>max</code>: All time</li>\n</ul>\n<p>This is relative to current date</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 1d<br>\n<b>allowed values:</b><ul><li>1d</li><li>5d</li><li>1mo</li><li>3mo</li><li>6mo</li><li>1y</li><li>2y</li><li>5y</li><li>10y</li><li>ytd</li><li>max</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_interval</code></h4></td>\n    <td rowspan=\"2\"><p>Time interval between points</p>\n<ul>\n<li><code>1m</code>: 1 minute</li>\n<li><code>2m</code>: 2 minutes</li>\n<li><code>5m</code>: 5 minutes</li>\n<li><code>15m</code>: 15 minutes</li>\n<li><code>60m</code>: 60 minutes</li>\n<li><code>1d</code>: 1 day</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 5m<br>\n<b>allowed values:</b><ul><li>1m</li><li>2m</li><li>5m</li><li>15m</li><li>60m</li><li>1d</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a RapidAPI Yahoo Finance token\n\nCreate a [RapidAPI account](https://rapidapi.com) and subscribe to [Yahoo Finance API](https://rapidapi.com/apidojo/api/yahoo-finance1) to get a token.\n\n![RapidAPI token](/.github/readme/imgs/plugin_stock_token.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Stock prices from Tesla\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stock.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_stock: yes\n  plugin_stock_token: ${{ secrets.STOCK_TOKEN }}\n  plugin_stock_symbol: TSLA\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1516,"sizeBytes":4328},{"name":"README.md","path":"source/plugins/contributors/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/contributors/README.md","title":"contributors Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🏅 Repository contributors</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin display repositories contributors from a commit range along with additional stats.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>By contribution types</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.contributors.categories.svg\" alt=\"\"></img></details>\n      <details><summary>By number of contributions</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.contributors.contributions.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors</code></h4></td>\n    <td rowspan=\"2\"><p>Enable contributors plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_base</code></h4></td>\n    <td rowspan=\"2\"><p>Base reference</p>\n<p>Can be a commit, tag, branch, etc.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_head</code></h4></td>\n    <td rowspan=\"2\"><p>Head reference</p>\n<p>Can be a commit, tag, branch, etc.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> master<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored users</p>\n<p>Can be used to ignore bots activity</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>users_ignored</code><br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_contributions</code></h4></td>\n    <td rowspan=\"2\"><p>Contributions count</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>contributors</code>: all contributors</li>\n<li><code>categories</code>: contributors sorted by contributions categories (must be configured with <a href=\"/source/plugins/contributors/README.md#plugin_contributors_categories\"><code>plugin_contributors_categories</code></a>)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> contributors<br>\n<b>allowed values:</b><ul><li>contributors</li><li>categories</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Contribution categories</p>\n<p>This option requires <a href=\"/source/plugins/contributors/README.md#plugin_contributors_sections\"><code>plugin_contributors_sections</code></a> to have <code>categories</code> in it to be effective.\nPass a JSON object mapping category with file globs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n</ul>\n<b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"📚 Documentation\": [\"README.md\", \"docs/**\"],\n  \"💻 Code\": [\"source/**\", \"src/**\"],\n  \"#️⃣ Others\": [\"*\"]\n}\n</code></pre></details><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗂️ Setting up contribution categories\n\nPass a JSON object to `plugin_contributors_categories` with categories names as keys and arrays of file globs as values to configure contributions categories.\n\nEach modified file by a contributor matching a file glob will add them in said category.\n\n> 💡 File matching respect keys order\n\n> 💡 Use `|` YAML multiline operator for better readability\n\n*Example: *\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_contributors: yes\n    plugin_contributors_categories: |\n      {\n        \"📚 Documentation\": [\"README.md\", \"docs/**\"],\n        \"💻 Code\": [\"source/**\", \"src/**\"],\n        \"#️⃣ Others\": [\"*\"]\n      }\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Contributors with contributions count\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.contributors.contributions.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_contributors: yes\n  plugin_contributors_contributions: yes\n\n```\n```yaml\nname: Contributors by categories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.contributors.categories.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_contributors: yes\n  plugin_contributors_sections: categories\n  plugin_contributors_categories: |\n    {\n      \"🧩 Plugins / 🖼️ templates\":[\"source/plugins/**\", \"source/templates/**\"],\n      \"📚 Documentation\":[\"README.md\", \"**/README.md\", \"**/metadata.yml\"],\n      \"💻 Code (other)\":[\"source/**\", \"Dockerfile\"]\n    }\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1923,"sizeBytes":6622},{"name":"README.md","path":"source/plugins/core/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/core/README.md","title":"core Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧱 Core</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>Global configuration and options</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ token</code> <code>🗝️ committer_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n[➡️ Jump to all available options](#%EF%B8%8F-available-options)\n\n## 🌐 Configure used timezone\n\nBy default, dates use Greenwich meridian (GMT/UTC).\n\nConfigure `config_timezone` (see [supported timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) to avoid time offsets.\n\n*Example: configuring timezone*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_timezone: Europe/Paris\n```\n\n## 📦 Ordering content\n\nContent can be manually ordered using `config_order` option.\n\n*Example: display base.header, isocalendar, languages and stars in this specific order*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    base: header\n    plugin_isocalendar: yes\n    plugin_languages: yes\n    plugin_stars: yes\n    config_order: base.header, isocalendar, languages, stars\n```\n\n> 💡 Omitted sections will be appended at the end using default order\n\n> ℹ️ The handles to use for each plugin and sections is based on the [`partials/_.json`](/source/templates/classic/partials/_.json) of the template.\n> It may not necessarily be the plugin id (e.g. `base.header`, `base.activity+community`, `base.repositories`, etc.).\n\n## 🔕 Skipping repositories in plugins\n\nSome plugins support a `plugin_*_skipped` option which is used to skipped repositories from result. It inherits the global option [`repositories_skipped`](/source/plugins/base/README.md#repositories_skipped) which makes it easier to ignore repositories from all plugins at once.\n\nThese options support two different syntaxes:\n\n### Basic pattern matching\n\nSkip repositories by:\n- using their full handle (e.g. `user/repo`)\n- using only their name (e.g. `repo`)\n  - *in this case, the owner may be implicitly set to current `user` option*\n\n*Example: skipping repositories with basic pattern matching*\n```yml\nrepositories_skipped: my-repo, user/my-repo\n```\n\n> 💡 Either comma or newlines can be used to separate basic patterns\n\n### Advanced pattern matching\n\nTo enable advanced pattern matching to skip repositories, include `@use.patterns` at the beginning of the option value.\n\nSkip repositories by writing file-glob patterns, with any of the supported operation:\n- `#` to write comments\n- `-` to exclude repositories\n  - *the `-` is implicit and may be omitted from excluding patterns*\n- `+` to include back repositories\n\n> ℹ️ *metrics* use [isaacs/minimatch](https://github.com/isaacs/minimatch) as its file-glob matcher\n\n*Example: skipping repositories with basic advanced matching*\n```yml\nrepositories_skipped: |\n  @use.patterns\n\n  # Skip a specific repository (both patterns are equivalent)\n  user/repo\n  -user/repo\n\n  # Skip repositories matching a given pattern\n  user/repo-*\n  {user1, user2, user3}/*\n\n  # Include back a previously skipped repository\n  org/repo\n  +org/include-this-repo\n```\n\n> ℹ️ Unlike basic pattern matching, patterns are always tested against the full repository handle (the user will not be implicitly added)\n\n> ⚠️ As patterns may contain commas, be sure to use newlines rather than commas as separator to ensure patterns are correctly parsed\n\n## 🪛 Using presets\n\nIt is possible to reuse the same configuration across different repositories and workflows using configuration presets.\nA preset override the default values of inputs, and multiple presets can be provided at once through URLs or file paths.\n\nOptions resolution is done in the following order:\n- default values\n- presets, from first to last\n- user values\n\n*Example: using a configuration preset from an url*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_presets: https://raw.githubusercontent.com/lowlighter/metrics/presets/lunar-red/preset.yaml\n```\n\nSome presets are hosted on this repository on the [`@presets`](https://github.com/lowlighter/metrics/tree/presets) branch and can be used directly by using their identifier prefixed by an arobase (`@`).\n\n*Example: using a pre-defined configuration preset*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_presets: \"@lunar-red\"\n```\n\n> ⚠️ `🔐 Tokens` and options marked with `⏯️ Cannot be preset`, as they suggest, cannot be preset and thus requires to be explicitly defined to be set.\n\n> ℹ️ Presets configurations use [schemas](https://github.com/lowlighter/metrics/tree/presets/%40schema) to ensure compatibility between format changes\n\n## 🎨 Custom CSS styling\n\nAdditional CSS can be injected using `extras_css` option.\n\n*Example: changing the color of `h2`*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    base: header\n    extras_css: |\n      h2 {\n        color: red;\n      }\n```\n\n> 💡 *metrics* does not use `!important` keyword, so use it when having trouble when styling is not applied\n\n> 💡 If you make an heavy use of this option, creating a [community templates](/source/templates/community/README.md) may be a better alternative\n\n> ⚠️ CSS styles may slightly change between releases, backward compatibility is not guaranteed!\n\n## 🗳️ Custom JavaScript scripting\n\nAdditional JavaScript can be injected using `extras_js` option.\n\n*Example: removing all `h2`*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    base: header\n    extras_js: |\n      document.querySelectorAll(\"h2\")?.forEach(h2 => h2.remove())\n```\n\n> ℹ️ JavaScript is executed in puppeteer context during the rendering phase, **not** in *metrics* context.\n> It will be possible to access `document` and all other features accessible like if the SVG was opened in a browser page\n\n> 💡 If you make an heavy use of this option, creating a [community templates](/source/templates/community/README.md) may be a better alternative\n\n> ⚠️ HTML elements may slightly change between releases, backward compatibility is not guaranteed!\n\n## 🔲 Adjusting padding\n\nSVG rendering is dependent on operating system, browser and fonts combination and may look different across different platforms.\n\nIt may not look like it, but computing the height of a SVG is not trivial. *metrics* spawns an headless browser and try to do its best to resize the result, but it may sometimes ends up in either cropped or oversized images.\n\nTweak `config_padding` option to manually adjust padding and solve this issue.\n\nThis settings supports the following format:\n- 1 value for both width and height\n- 2 values for width first and height second, separated by a comma (`,`)\n\n> 💡 Both negative and positive values are allowed\n\nEach value need to respect the following format:\n- {number}\n- {number} + {number}%\n- {number}%\n\n> 💡 Percentage based values are relative to the height computed by puppeteer\n\n*Example: add 10px padding for both width and height*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_padding: 10\n```\n\n*Example: add 10px padding to height and increase it by 8%*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_padding: 0, 10 + 8%\n```\n\n*Example: remove 10% from height*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_padding: 0, -10%\n```\n\n## ↔️ Controlling display size\n\nSome templates may support different output display size.\n\nA `regular` display size will render a medium-sized image suitable for both desktop and mobile displays, while a `large` one will be more suitable only for desktop and some plugins (like [`📌 topics`](/source/plugins/topics/README.md) or [`🏅 contributors`](/source/plugins/contributors/README.md))\n\nThe `columns` display will render a full-width image with automatic resizing: two columns for desktop and a single one column for mobiles.\n\n*Example: output a PNG image*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_display: large\n```\n\n## 💱 Configuring output format\n\nUse `config_output` to change output format.\n\n*Example: output a PNG image*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_output: png\n```\n\nA JSON output can be used to retrieved collected data and use it elsewhere.\n\n*Example: output a JSON data dump*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_output: json\n```\n\nWhen using a PDF output, it is advised to set `config_base64: yes` to encode embed images in base64 in order to make self-contained documents.\n\n*Example: output a self-contained PDF document*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    markdown: TEMPLATE.md\n    config_output: markdown-pdf\n    config_base64: yes\n```\n\n## ✨ Render `Metrics insights` statically\n\nIt is possible to generate a self-contained HTML file containing `✨ Metrics insights` output by using `config_output: insights`.\n\n> 💡 Note that like `✨ Metrics insights` content is not configurable, thus any other plugin option will actually be ignored\n\n*Example: output `✨ Metrics insights` report*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_output: insights\n```\n\n## 🧶 Configuring output action\n\nBefore configuring output action, ensure that workflows permissions are properly set.\nThese can be changed either through repository settings in Actions tab:\n\n![Setting workflows permissions](/.github/readme/imgs/setup_workflow_permissions.light.png#gh-light-mode-only)\n![Setting workflows permissions](/.github/readme/imgs/setup_workflow_permissions.dark.png#gh-dark-mode-only)\n\nOr more granulary [at job or workflow level](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token).\n\n### Using commits (default)\n\nUse `output_action: commit` to make the action directly push changes to `committer_branch` with a commit.\nA custom commit message can be used through `committer_message`.\n\n> 💡 *metrics* will automatically ignore push events with a commit message containing `[Skip GitHub Action]` or `Auto-generated metrics for run #` to avoid infinite loops. Note that by default, GitHub already ignore events pushed by `${{ github.token }}` or containing `[skip ci]` in commit message\n\n*Example: push output to metrics-renders branch rather than the default branch*\n```yaml\nmetrics:\n  permissions:\n    contents: write\n  steps:\n    - uses: lowlighter/metrics@latest\n      with:\n        output_action: commit\n        committer_branch: metrics-renders\n        committer_message: \"chore: update metrics\"\n```\n\n### Using pull requests\n\nUse `output_action: pull-request` to make the action open a new pull request and push changes from the same run on it.\n\nThe last step should use either `pull-request-merge`, `pull-request-squash` or `pull-request-rebase` to merge changes to `committer_branch`.\n\n> 💡 When using `pull-request` output action, do not forget to change `filename` too or previous output will be overwritten!\n\n*Example: push two outputs using a merge pull request*\n```yaml\nmetrics:\n  permissions:\n    contents: write\n    pull-requests: write\n  steps:\n    - uses: lowlighter/metrics@latest\n      with:\n        filename: my-metrics-0.svg\n        output_action: pull-request\n\n    - uses: lowlighter/metrics@latest\n      with:\n        filename: my-metrics-1.svg\n        output_action: pull-request-merge\n```\n\n### Using gists\n\nUse `output_action: gist` to push output to a [GitHub gist](https://gist.github.com) instead.\nIt is required to provide a gist id to `committer_gist` option to make it work.\n\n> 💡 This feature will use `token` instead of `committer_token` to push changes, so `gists` scope must be granted to the original `token` first\n\n*Example: push output to a gist*\n```yaml\nmetrics:\n  steps:\n    - uses: lowlighter/metrics@latest\n      with:\n        output_action: gist\n        committer_gist: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n### Manual handling\n\nUse `output_action: none` to perform custom processing with outputs.\nThey will be available under `/metrics_renders/{filename}` in the runner.\n\n*Example: generate outputs and manually push them*\n```yaml\nmetrics:\n  permissions:\n    contents: write\n  steps:\n    - name: Checkout repository\n      uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n\n    - uses: lowlighter/metrics@latest\n      with:\n        output_action: none\n\n    - uses: lowlighter/metrics@latest\n      run: |\n        set +e\n        git checkout metrics-renders\n        git config user.name github-actions[bot]\n        git config user.email 41898282+github-actions[bot]@users.noreply.github.com\n        sudo mv /metrics_renders/* ./\n        git add --all\n        git commit -m \"chore: push metrics\"\n        git push\n```\n\n## ♻️ Retrying automatically failed rendering and output action\n\nRendering is subject to external factors and can fail occasionally.\nUse `retries` and `retries_delay` options to automatically retry rendering.\n\n*Example: retry render up to 3 times (wait 5 minutes between each fail)*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    retries: 3\n    retries_delay: 300\n```\n\nOutput action is also subject to GitHub API rate-limiting and overall health status and can fail occasionally.\nUse `retries_output_action` and `retries_delay_output_action` options to automatically retry output action.\n\n> 💡 As output action is a separate step from rendering, render step won't be called again\n\n*Example: retry output action up to 5 times (wait 2 minutes between each fail)*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    retries_output_action: 5\n    retries_delay_output_action: 120\n```\n\n## 🗜️ Optimize SVG output\n\nTo reduce filesize and decrease loading time, *metrics* offers several optimization options, such as purging unused CSS and style minification, XML pretty-printing (which also reduce diffs between changes) and general SVG optimization (still experimental).\n\n> 💡 This option is enabled by default!\n\n*Example: optimize CSS and XML*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    optimize: css, xml\n```\n\n*Example: optimize SVG (experimental)*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    optimize: svg\n    experimental_features: --optimize-svg\n```\n\n## 🐳 Faster execution with prebuilt docker images\n\nWhen using `lowlighter/metrics` official releases as a GitHub Action, a prebuilt docker container image will be pulled from [GitHub Container Registry](https://github.com/users/lowlighter/packages/container/package/metrics). It allows to significantly reduce workflow execution time.\n\n> 💡 This option is enabled by default!\n\nOn forks, this feature is disable to take into account any changes you made on it.\n\n*Example: using prebuilt docker image*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    use_prebuilt_image: yes\n```\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>token</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub Personal Access Token</p>\n<p>No scopes are required by default, though some plugins and features may require additional scopes.</p>\n<p>When using a configuration which does not requires a GitHub PAT, it is possible to pass <code>NOT_NEEDED</code> instead.\nWhen doing so, any settings which defaults on user fetched values will not be templated (e.g. <code>.user.*</code>) and will usually need to be set manually.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">✔️ Required<br>\n🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>user</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub username</p>\n<p>Defaults to <a href=\"/source/plugins/core/README.md#token\"><code>token</code></a> owner username.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repo</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub repository</p>\n<p>This option is only revelant for repositories templates</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_token</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub Token used to commit metrics</p>\n<p>Leave this to <code>${{ github.token }}</code> or <code>${{ secrets.GITHUB_TOKEN }}</code>, which is a special auto-generated token restricted to current repository scope.</p>\n<blockquote>\n<p>💡 When using <a href=\"/source/plugins/core/README.md#output_action\"><code>output_action: gist</code></a>, it will use <a href=\"/source/plugins/core/README.md#token\"><code>token</code></a> instead, since gists are outside of scope</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br>\n<b>default:</b> ${{ github.token }}<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_branch</code></h4></td>\n    <td rowspan=\"2\"><p>Target branch</p>\n<p>Defaults to current repository default branch</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_message</code></h4></td>\n    <td rowspan=\"2\"><p>Commit message</p>\n<p>Use <code>${filename}</code> to display filename</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> Update ${filename} - [Skip GitHub Action]<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_gist</code></h4></td>\n    <td rowspan=\"2\"><p>Gist id</p>\n<p>Specify an existing gist id (can be retrieved from its URL) when using <a href=\"/source/plugins/core/README.md#output_action\"><code>output_action: gist</code></a>.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>filename</code></h4></td>\n    <td rowspan=\"2\"><p>Output path</p>\n<p>When using an asterisk (<code>*</code>), correct extension will automatically be applied according to <a href=\"/source/plugins/core/README.md#config_output\"><code>config_output</code></a> value</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> github-metrics.*<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>markdown</code></h4></td>\n    <td rowspan=\"2\"><p>Markdown template path</p>\n<p>It can be either a local path or a full link (e.g. <a href=\"https://raw.githubusercontent.com\">https://raw.githubusercontent.com</a>)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> TEMPLATE.md<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>markdown_cache</code></h4></td>\n    <td rowspan=\"2\"><p>Markdown file cache</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> .cache<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>output_action</code></h4></td>\n    <td rowspan=\"2\"><p>Output action</p>\n<ul>\n<li><code>none</code>: just create file in <code>/metrics_renders</code> directory of action runner</li>\n<li><code>commit</code>: push output to <code>committer_branch</code></li>\n<li><code>pull-request</code>: push output to a new branch and open a pull request to <code>committer_branch</code></li>\n<li><code>pull-request-merge</code>: same as <code>pull-request</code> and additionally merge pull request</li>\n<li><code>pull-request-squash</code>: same as <code>pull-request</code> and additionally squash and merge pull request</li>\n<li><code>pull-request-rebase</code>: same as <code>pull-request</code> and additionally rebase and merge pull request</li>\n<li><code>gist</code>: push output to <code>committer_gist</code></li>\n</ul>\n<blockquote>\n<p>💡 When using <code>pull-request</code>, you will need to set the last job with a <code>pull-request-*</code> action instead, else it won&#39;t be merged</p>\n</blockquote>\n<blockquote>\n<p>⚠️ As GitHub gists API does not support binary files upload, <code>gist</code> does not support <a href=\"/source/plugins/core/README.md#config_output\"><code>config_output</code></a> set to either <code>png</code>, <code>jpeg</code> or <code>markdown-pdf</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> commit<br>\n<b>allowed values:</b><ul><li>none</li><li>commit</li><li>pull-request</li><li>pull-request-merge</li><li>pull-request-squash</li><li>pull-request-rebase</li><li>gist</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>output_condition</code></h4></td>\n    <td rowspan=\"2\"><p>Output condition</p>\n<ul>\n<li><code>always</code>: always try to push changes</li>\n<li><code>data-changed</code>: skip changes if no data changed (e.g. like when only metadata changed)</li>\n</ul>\n<blockquote>\n<p>ℹ️ This option is only revelant when <a href=\"/source/plugins/core/README.md#config_output\"><code>config_output: svg</code></a> is set</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> always<br>\n<b>allowed values:</b><ul><li>always</li><li>data-changed</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>optimize</code></h4></td>\n    <td rowspan=\"2\"><p>Optimization features</p>\n<ul>\n<li><code>css</code>: purge and minify CSS styles</li>\n<li><code>xml</code>: pretty-print XML (useful to reduce diff)</li>\n<li><code>svg</code>: optimization with SVGO (experimental, requires <a href=\"/source/plugins/core/README.md#experimental_features\"><code>experimental_features: --optimize-svg</code></a>)</li>\n</ul>\n<p>Templates may not always honour all provided options</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> css, xml<br>\n<b>allowed values:</b><ul><li>css</li><li>xml</li><li>svg</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>setup_community_templates</code></h4></td>\n    <td rowspan=\"2\"><p>Community templates to setup</p>\n<p>See <a href=\"https://github.com/lowlighter/metrics/blob/master/source/templates/community/README.md\">community templates guide</a> for more informations</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.setup.community.templates</i></li>\n</ul>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>template</code></h4></td>\n    <td rowspan=\"2\"><p>Template</p>\n<p>Community templates must be prefixed by at sign (<code>@</code>)\nSee <a href=\"https://github.com/lowlighter/metrics/blob/master/README.md#%EF%B8%8F-templates\">list of supported templates</a></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> classic<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>query</code></h4></td>\n    <td rowspan=\"2\"><p>Query parameters</p>\n<p>Pass additional parameters to templates.\nThis is mostly useful for custom templates.</p>\n<blockquote>\n<p>⚠️ <strong>Do not</strong> use this option to pass other existing parameters, they will be overwritten</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{}</code></pre></details><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>extras_css</code></h4></td>\n    <td rowspan=\"2\"><p>Extra CSS</p>\n<p>Custom CSS that will be injected in used template.\nUseful to avoid creating a new template just to tweak some styling</p>\n<blockquote>\n<p>💡 <em>metrics</em> tends to avoid using <code>!important</code> rules, which means that most styling can be overridden by this option when using <code>!important</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.user.css</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>extras_js</code></h4></td>\n    <td rowspan=\"2\"><p>Extra JavaScript</p>\n<p>Custom JavaScript that will be executed during puppeteer rendering.\nUseful to avoid creating a new template just to tweak some content.</p>\n<blockquote>\n<p>⚠️ Note that is it executed within puppeteer context and <strong>not</strong> within <em>metrics</em> context.\nNo access to fetched data or configuration will be offered through this context.\nIt is run after transformations and optimizations, but just before resizing.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.user.js</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>github_api_rest</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub REST API endpoint</p>\n<p>Can be used to support <a href=\"https://github.com/enterprise\">GitHub enterprises server</a>.\nLeave empty to use default endpoint.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>github_api_graphql</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub GraphQL API endpoint</p>\n<p>Can be used to support <a href=\"https://github.com/enterprise\">GitHub enterprises server</a>.\nLeave empty to use default endpoint.</p>\n<blockquote>\n<p>ℹ️ GraphQL octokit will automatically append <code>/graphql</code> to provided endpoint</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_timezone</code></h4></td>\n    <td rowspan=\"2\"><p>Timezone for dates</p>\n<p>See <a href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\">list of supported timezone</a></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_order</code></h4></td>\n    <td rowspan=\"2\"><p>Plugin order</p>\n<p>By default, templates use <code>partials/_.json</code> ordering.\nYou can override the content order by using this setting.</p>\n<p>If some partials are omitted, they will be appended at the end with default ordering</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_twemoji</code></h4></td>\n    <td rowspan=\"2\"><p>Use twemojis</p>\n<p>Replace emojis by <a href=\"%5Btwemojis%5D(https://github.com/twitter/twemoji)\">twemojis</a> to have a consistent render across all platforms\nMay increase filesize.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_gemoji</code></h4></td>\n    <td rowspan=\"2\"><p>Use GitHub custom emojis</p>\n<p>GitHub supports additional emojis which are not registered in Unicode standard (:octocat:, :shipit:, :trollface:, ...)\nSee full list at <a href=\"https://api.github.com/emojis\">https://api.github.com/emojis</a>.</p>\n<p>This option has no effect when [`token: NOT_NEEDED``](/source/plugins/core/README.md#token) is set.</p>\n<p>May increase filesize</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_octicon</code></h4></td>\n    <td rowspan=\"2\"><p>Use GitHub octicons</p>\n<p>Octicons are open-sourced icons provided by GitHub.\nSee full list at <a href=\"https://primer.style/octicons\">https://primer.style/octicons</a>.</p>\n<p>To include an octicon, use the following syntax: <code>:octicon-{name}-{size}:</code>.\nSize must be a supported icon size (12, 16 or 24).\n16px octicons can omit size and directly use <code>:octicon-{name}:</code> syntax.</p>\n<p>May increase filesize</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_display</code></h4></td>\n    <td rowspan=\"2\"><p>Display width (for image output formats)</p>\n<ul>\n<li><code>regular</code>: 480px width</li>\n<li><code>large</code>: 960px width (may not be supported by all templates)</li>\n<li><code>columns</code>: Full width with auto-sizing (two columns for desktops, and one column for mobile)<ul>\n<li>known issue: <a href=\"https://github.com/lowlighter/metrics/issues/374\">https://github.com/lowlighter/metrics/issues/374</a></li>\n</ul>\n</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> regular<br>\n<b>allowed values:</b><ul><li>regular</li><li>large</li><li>columns</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_animations</code></h4></td>\n    <td rowspan=\"2\"><p>Use CSS animations</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_base64</code></h4></td>\n    <td rowspan=\"2\"><p>Base64-encoded images</p>\n<p>Enable this option to make self-contained output (i.e. with no external links)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_padding</code></h4></td>\n    <td rowspan=\"2\"><p>Output padding</p>\n<p>Although <em>metrics</em> try to auto-guess resulting height, rendering is still dependent on OS and browser settings.\nIt can result in cropped or oversized outputs.</p>\n<p>This settings let you manually adjust padding with the following format:</p>\n<ul>\n<li>1 value for both width and height</li>\n<li>2 values for width fist and height second, separated by a comma (<code>,</code>)</li>\n</ul>\n<p>Each value need to respect the following format:</p>\n<ul>\n<li><code>{number}</code></li>\n<li><code>{number} + {number}%</code></li>\n<li><code>{number}%</code></li>\n</ul>\n<p>Percentage are relative to computed dimensions</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 0, 8 + 11%<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_output</code></h4></td>\n    <td rowspan=\"2\"><p>Output format</p>\n<ul>\n<li><code>auto</code>: Template default (usually <code>svg</code> or <code>markdown</code>)</li>\n<li><code>svg</code>: SVG image</li>\n<li><code>png</code>: PNG image (animations not supported)</li>\n<li><code>jpeg</code>: JPEG image (animations and transparency not supported)</li>\n<li><code>json</code>: JSON data dump</li>\n<li><code>markdown</code>: Markdown rendered file</li>\n<li><code>markdown-pdf</code>: PDF from markdown rendered file</li>\n<li><code>insights</code>: Metrics Insights self-contained HTML file (not configurable)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> auto<br>\n<b>allowed values:</b><ul><li>auto</li><li>svg</li><li>png</li><li>jpeg</li><li>json</li><li>markdown</li><li>markdown-pdf</li><li>insights</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_presets</code></h4></td>\n    <td rowspan=\"2\"><p>Configuration presets</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.setup.community.presets</i></li>\n</ul>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries</code></h4></td>\n    <td rowspan=\"2\"><p>Retries in case of failures (for rendering)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 10)</i>\n<br>\n<b>default:</b> 3<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries_delay</code></h4></td>\n    <td rowspan=\"2\"><p>Delay between each retry (in seconds, for rendering)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 3600)</i>\n<br>\n<b>default:</b> 300<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries_output_action</code></h4></td>\n    <td rowspan=\"2\"><p>Retries in case of failures (for output action)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 10)</i>\n<br>\n<b>default:</b> 5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries_delay_output_action</code></h4></td>\n    <td rowspan=\"2\"><p>Delay between each retry (in seconds, for output action)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 3600)</i>\n<br>\n<b>default:</b> 120<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>clean_workflows</code></h4></td>\n    <td rowspan=\"2\"><p>Clean previous workflows jobs</p>\n<p>This can be used to clean up Action tabs from previous workflows runs.</p>\n<p>Use <code>all</code> to clean up workflows runs in any state.</p>\n<blockquote>\n<p>⚠️ When reporting issues, it is <strong>required</strong> to provide logs so it can be investigated and reproduced.\nBe sure to disable this option when asking for help or submitting bug reports.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>cancelled</li><li>failure</li><li>success</li><li>skipped</li><li>startup_failure</li><li>timed_out</li><li>all</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>delay</code></h4></td>\n    <td rowspan=\"2\"><p>Job delay</p>\n<p>This can be used to avoid triggering GitHub abuse mechanics on large workflows</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 3600)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>quota_required_rest</code></h4></td>\n    <td rowspan=\"2\"><p>Minimum GitHub REST API requests quota required to run</p>\n<p>Action will cancel itself without any errors if requirements are not met</p>\n<p>This option has no effect when <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a> is set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 5000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>quota_required_graphql</code></h4></td>\n    <td rowspan=\"2\"><p>Minimum GitHub GraphQL API requests quota required to run</p>\n<p>Action will cancel itself without any errors if requirements are not met</p>\n<p>This option has no effect when <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a> is set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 5000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>quota_required_search</code></h4></td>\n    <td rowspan=\"2\"><p>Minimum GitHub Search API requests quota required to run</p>\n<p>Action will cancel itself without any errors if requirements are not met</p>\n<p>This option has no effect when <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a> is set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>notice_releases</code></h4></td>\n    <td rowspan=\"2\"><p>Notice about new releases of metrics</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>use_prebuilt_image</code></h4></td>\n    <td rowspan=\"2\"><p>Use pre-built docker image from <a href=\"https://github.com/lowlighter/metrics/pkgs/container/metrics\">GitHub container registry</a></p>\n<p>It allows to save build time and make job significantly faster, and there is almost no reason to disable this settings.\nThis option has no effects on forks (images will always be rebuilt from Dockerfile)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugins_errors_fatal</code></h4></td>\n    <td rowspan=\"2\"><p>Fatal plugin errors</p>\n<p>When enabled, the job will fail in case of plugin errors, else it will be handled gracefully in output with an error message</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>debug</code></h4></td>\n    <td rowspan=\"2\"><p>Debug mode</p>\n<p>This setting is automatically enable if a job fail (useful with <a href=\"/source/plugins/core/README.md#plugins_errors_fatal\"><code>plugins_errors_fatal: yes</code></a>)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>verify</code></h4></td>\n    <td rowspan=\"2\"><p>SVG validity check</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.libxml2</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>debug_flags</code></h4></td>\n    <td rowspan=\"2\"><p>Debug flags</p>\n<ul>\n<li><code>--cakeday</code>: simulate registration anniversary</li>\n<li><code>--halloween</code>: enable halloween colors <em>(only first color scheme will be applied if multiple are specified)</em></li>\n<li><code>--winter</code>: enable winter colors <em>(only first color scheme will be applied if multiple are specified)</em></li>\n<li><code>--error</code>: force render error</li>\n<li><code>--puppeteer-debug</code>: enable puppeteer debug mode*</li>\n<li><code>--puppeteer-disable-headless</code>: disable puppeteer headless mode <em>(requires a graphical environment)</em>*</li>\n<li><code>--puppeteer-wait-load</code>: override puppeteer wait events*</li>\n<li><code>--puppeteer-wait-domcontentloaded</code>: override puppeteer wait events*</li>\n<li><code>--puppeteer-wait-networkidle0</code>: override puppeteer wait events*</li>\n<li><code>--puppeteer-wait-networkidle2</code>: override puppeteer wait events*</li>\n</ul>\n<blockquote>\n<p><em>* 🌐 Web instances needs to have <a href=\"/source/plugins/core/README.md#debug\"><code>debug</code></a> set in <code>settings.json</code> for these flags to be supported.</em></p>\n</blockquote>\n<blockquote>\n<p>⚠️ No backward compatibility is guaranteed for these features, they are only meant for debugging purposes.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>array</code>\n<i>(space-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>--cakeday</li><li>--halloween</li><li>--winter</li><li>--error</li><li>--puppeteer-debug</li><li>--puppeteer-disable-headless</li><li>--puppeteer-wait-load</li><li>--puppeteer-wait-domcontentloaded</li><li>--puppeteer-wait-networkidle0</li><li>--puppeteer-wait-networkidle2</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>debug_print</code></h4></td>\n    <td rowspan=\"2\"><p>Print output in console</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>dryrun</code></h4></td>\n    <td rowspan=\"2\"><p>Dry-run</p>\n<blockquote>\n<p>⚠️ Unlike <a href=\"/source/plugins/core/README.md#output_action\"><code>output_action: none</code></a>, output file won&#39;t be available in <code>/metrics_renders</code> directory</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>experimental_features</code></h4></td>\n    <td rowspan=\"2\"><p>Experimental features</p>\n<blockquote>\n<p>⚠️ No backward compatibility is guaranteed for these features</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>array</code>\n<i>(space-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>--optimize-svg</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>use_mocked_data</code></h4></td>\n    <td rowspan=\"2\"><p>Use mocked data instead of live APIs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n","isInternal":false,"tokens":12693,"sizeBytes":43670},{"name":"README.md","path":"source/plugins/discussions/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/discussions/README.md","title":"discussions Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💬 Discussions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays GitHub discussions stats.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.discussions.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_discussions</code></h4></td>\n    <td rowspan=\"2\"><p>Enable discussions plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_discussions_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Discussion categories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_discussions_categories_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (categories)</p>\n<p>Note that categories are sorted from highest to lowest count</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: GitHub Discussions\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.discussions.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_discussions: yes\n  plugin_discussions_categories_limit: 8\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":849,"sizeBytes":2768},{"name":"README.md","path":"source/plugins/followup/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/followup/README.md","title":"followup Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎟️ Follow-up of issues and pull requests</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the ratio of open/closed issues and the ratio of open/merged pull requests across repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Indepth analysis</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.followup.indepth.svg\" alt=\"\"></img></details>\n      <details><summary>Created on a user's repositories</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.followup.svg\" alt=\"\"></img></details>\n      <details><summary>Created by a user</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.followup.user.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup</code></h4></td>\n    <td rowspan=\"2\"><p>Enable followup plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>repositories</code>: overall status of issues and pull requests on your repositories</li>\n<li><code>user</code>: overall status of issues and pull requests you have created on GitHub</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> repositories<br>\n<b>allowed values:</b><ul><li>repositories</li><li>user</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth analysis</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup_archived</code></h4></td>\n    <td rowspan=\"2\"><p>Include archived repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔎 `indepth` mode\n\nThe `plugin_followup_indepth` option collects additional stats to differentiate issues and pull requests opened by maintainers and users.\n\nIt helps knowing whether repositories are also maintained by other users and give an overall health status of repositories.\n\n> ⚠️ This mode will try to list users with push access to know who are the maintainers in order to place issues in the correct category, which requires a `repo` scope. If not available, it will consider that only the owner is a maintainer.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Opened on user's repositories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n\n```\n```yaml\nname: Opened by user\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.user.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n  plugin_followup_sections: user\n\n```\n```yaml\nname: Indepth analysis\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.indepth.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n  plugin_followup_indepth: yes\n\n```\n```yaml\nname: Exclude Archived\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.archived.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n  plugin_followup_archived: no\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1505,"sizeBytes":5188},{"name":"README.md","path":"source/plugins/gists/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/gists/README.md","title":"gists Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎫 Gists</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays <a href=\"https://gist.github.com\">gists</a> stats.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.gists.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_gists</code></h4></td>\n    <td rowspan=\"2\"><p>Enable gists plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Gists\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.gists.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_gists: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":650,"sizeBytes":2092},{"name":"README.md","path":"source/plugins/habits/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/habits/README.md","title":"habits Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💡 Coding habits and activity</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays coding habits based on recent activity, such as active hours and languages recently used.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Recent activity charts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.habits.charts.svg\" alt=\"\"></img></details>\n      <details open><summary>Mildly interesting facts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.habits.facts.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits</code></h4></td>\n    <td rowspan=\"2\"><p>Enable habits plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_from</code></h4></td>\n    <td rowspan=\"2\"><p>Events to use</p>\n<p>A higher number will increase stats accuracy</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_days</code></h4></td>\n    <td rowspan=\"2\"><p>Event maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 14<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_facts</code></h4></td>\n    <td rowspan=\"2\"><p>Mildly interesting facts</p>\n<p>It includes indentation type, average number of characters per line of code, and most active time and day</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_charts</code></h4></td>\n    <td rowspan=\"2\"><p>Charts</p>\n<p>It includes commit activity per hour of day and commit activity per day of week\nRecent language activity may also displayed (it requires extras features to be enabled for web instances) for historical reasons</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_charts_type</code></h4></td>\n    <td rowspan=\"2\"><p>Charts display type</p>\n<ul>\n<li><code>classic</code>: <code>&lt;div&gt;</code> based charts, simple and lightweight</li>\n<li><code>graph</code>: <code>&lt;svg&gt;</code> based charts, smooth</li>\n</ul>\n<blockquote>\n<p>⚠️ <code>chartist</code> option has been deprecated and is now equivalent to <code>graph</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.d3</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> classic<br>\n<b>allowed values:</b><ul><li>classic</li><li>graph</li><li>chartist</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_trim</code></h4></td>\n    <td rowspan=\"2\"><p>Trim unused hours on charts</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_languages_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (languages)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 8)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 8<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_languages_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Display threshold (percentage)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 0%<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🌐 Configure used timezone\n\nBy default, dates use Greenwich meridian (GMT/UTC).\n\nConfigure `config_timezone` (see [supported timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) to avoid time offsets.\n\n*Example: configuring timezone*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_timezone: Europe/Paris\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Mildly interesting facts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.habits.facts.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_habits: yes\n  plugin_habits_facts: yes\n  plugin_habits_charts: no\n  config_timezone: Europe/Paris\n\n```\n```yaml\nname: Recent activity charts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.habits.charts.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_habits: yes\n  plugin_habits_facts: no\n  plugin_habits_charts: yes\n  config_timezone: Europe/Paris\n\n```\n<!--/examples-->\n\n\n","isInternal":false,"tokens":2208,"sizeBytes":6900},{"name":"README.md","path":"source/plugins/introduction/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/introduction/README.md","title":"introduction Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🙋 Introduction</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays account bio or organization/repository description.</p>\n<p>Since account bio is already displayed on account profile, this plugin is mostly intended for external usage.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>For a user or an organization</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.introduction.svg\" alt=\"\"></img></details>\n      <details><summary>For a repository</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.introduction.repository.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_introduction</code></h4></td>\n    <td rowspan=\"2\"><p>Enable introduction plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_introduction_title</code></h4></td>\n    <td rowspan=\"2\"><p>Section title</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Organization introduction\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.introduction.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  user: github\n  base: header\n  plugin_introduction: yes\n\n```\n```yaml\nname: Repository introduction\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.introduction.repository.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  template: repository\n  repo: metrics\n  base: header\n  plugin_introduction: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":908,"sizeBytes":3146},{"name":"README.md","path":"source/plugins/isocalendar/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/isocalendar/README.md","title":"isocalendar Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📅 Isometric commit calendar</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays an isometric view of a user commit calendar along with a few additional statistics like current streak and average number of commit per day.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Full year calendar</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.isocalendar.fullyear.svg\" alt=\"\"></img></details>\n      <details><summary>Half year calendar</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.isocalendar.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_isocalendar</code></h4></td>\n    <td rowspan=\"2\"><p>Enable isocalendar plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_isocalendar_duration</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<ul>\n<li><code>half-year</code>: 180 days</li>\n<li><code>full-year</code>: 1 year</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> half-year<br>\n<b>allowed values:</b><ul><li>half-year</li><li>full-year</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Half-year calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.isocalendar.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_isocalendar: yes\n\n```\n```yaml\nname: Full-year calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.isocalendar.fullyear.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_isocalendar: yes\n  plugin_isocalendar_duration: full-year\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":955,"sizeBytes":3175},{"name":"README.md","path":"source/plugins/languages/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/languages/README.md","title":"languages Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🈷️ Languages activity</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display which languages you use across all repositories you contributed to.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Indepth analysis (clone and analyze repositories)</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.indepth.svg\" alt=\"\"></img></details>\n      <details open><summary>Recently used (analyze recent activity events)</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.recent.svg\" alt=\"\"></img></details>\n      <details><summary>Default algorithm</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.svg\" alt=\"\"></img></details>\n      <details><summary>Default algorithm (with details)</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.details.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Enable languages plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored languages</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 8)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 8<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Display threshold (percentage)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 0%<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_other</code></h4></td>\n    <td rowspan=\"2\"><p>Group unknown, ignored and over-limit languages into &quot;Other&quot; category</p>\n<p>If this option is enabled, &quot;Other&quot; category will not be subject to <a href=\"/source/plugins/languages/README.md#plugin_languages_threshold\"><code>plugin_languages_threshold</code></a>.\nIt will be automatically hidden if empty.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_colors</code></h4></td>\n    <td rowspan=\"2\"><p>Custom languages colors</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> github<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_aliases</code></h4></td>\n    <td rowspan=\"2\"><p>Custom languages names</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<p>Note that <code>recently-used</code> is only available when <a href=\"/source/plugins/languages/README.md#plugin_languages_indepth\"><code>plugin_languages_indepth</code></a> is enabled</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> most-used<br>\n<b>allowed values:</b><ul><li>most-used</li><li>recently-used</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_details</code></h4></td>\n    <td rowspan=\"2\"><p>Additional details</p>\n<p>Note that <code>lines</code> is only available when <a href=\"/source/plugins/languages/README.md#plugin_languages_indepth\"><code>plugin_languages_indepth</code></a> is enabled</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>bytes-size</li><li>percentage</li><li>lines</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode</p>\n<blockquote>\n<p>⚠️ read documentation first</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.cpu.overuse</i></li>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> false<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_indepth_custom</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Custom repositories</p>\n<p>Specify a list of additional repositories to analyze.</p>\n<p>Below are the supported syntax formats:</p>\n<ul>\n<li><code>owner/repo</code> (e.g. <code>lowlighter/metrics</code>)</li>\n<li><code>owner/repo@branch</code> (e.g. <code>lowlighter/metrics@main</code>)</li>\n<li><code>owner/repo@branch:commits</code> (e.g. <code>lowlighter/metrics@main:v1.0..v1.1</code>)<ul>\n<li>See <a href=\"https://git-scm.com/docs/git-rev-list#_description\"><code>git rev-list</code></a> documentation for more information about <code>commits</code> syntax</li>\n</ul>\n</li>\n</ul>\n<p>It is possible to specify repositories that are not hosted on <a href=\"https://github.com\">github.com</a> by passing a full url instead.\nIn this case the repository must be accessible directly.</p>\n<blockquote>\n<p>ℹ️ This option bypass <a href=\"/source/plugins/languages/README.md#plugin_languages_skipped\"><code>plugin_languages_skipped</code></a></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_analysis_timeout</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Analysis timeout</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 60)</i>\n<br>\n<b>default:</b> 15<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_analysis_timeout_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Analysis timeout (repositories)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 15)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 7.5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Displayed categories (most-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> markup, programming<br>\n<b>allowed values:</b><ul><li>data</li><li>markup</li><li>programming</li><li>prose</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_recent_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Displayed categories (recently-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> markup, programming<br>\n<b>allowed values:</b><ul><li>data</li><li>markup</li><li>programming</li><li>prose</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_recent_load</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Events to load (recently-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(100 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 300<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_recent_days</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Events maximum age (day, recently-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 365)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 14<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔎 `indepth` mode\n\nThe default algorithm uses the top languages from each repository you contributed to using GitHub GraphQL API (which is similar to the displayed languages bar on github.com). When working in collaborative projects with a lot of people, these numbers may be less representative of your actual work.\n\nThe `plugin_languages_indepth` option lets you use a more advanced algorithm for more accurate statistics.\nUnder the hood, it will clone your repositories, run [linguist-js](https://github.com/Nixinova/Linguist) (a JavaScript port of [GitHub linguist](https://github.com/github/linguist)) and iterate over patches matching your `commits_authoring` setting.\n\nSince git lets you use any email and username for commits, *metrics* may not be able to detect a commit ownership if it isn't the same as your GitHub personal data. By default, it will use your GitHub username, but you can configure additional matching usernames and email addresses using `commits_authoring` option.\n\n*Example: configuring `indepth` mode*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_indepth: yes\n    commits_authoring: firstname lastname, username, username@users.noreply.github.com\n```\n\n> 💡 This feature unlocks the `lines` option in `plugin_languages_details`\n\n> ⚠️ This feature significantly increase workflow time\n\n> ⚠️ Since this mode iterates over **each matching commit of each repository**, it is not suited for large code base, especially those with a large amount of commits and the ones containing binaries. While `plugin_languages_analysis_timeout` and `plugin_languages_analysis_timeout_repositories` can be used to increase the default timeout for analysis, please be responsible and keep this feature disabled if it cannot work on your account to save GitHub resources and our planet 🌏\n\n> ⚠️ Although *metrics* does not send any code to external sources, repositories are temporarily cloned on the GitHub Action runner. It is advised to keep this option disabled when working with sensitive data or company code. Use at your own risk, *metrics* and its authors **cannot** be held responsible for any resulting code leaks. Source code is available for auditing at [analyzers.mjs](/source/plugins/languages/analyzers.mjs).\n\n> 🌐 Web instances must enable this feature in `settings.json`\n\nBelow is a summary of the process used to compute indepth statistics:\n\n## Most used mode\n\n1. Fetch GPG keys linked to your GitHub account\n  - automatically add attached emails to `commits_authoring`\n  - *web-flow* (GitHub's public key for changes made through web-ui) is also fetched\n2. Import GPG keys so they can be used to verify commits later\n3. Iterate through repositories\n  - early break if `plugin_languages_analysis_timeout` is reached\n  - skip repository if it matches `plugin_languages_skipped`\n  - include repositories from `plugin_languages_indepth_custom`\n    - a specific branch and commit range can be used\n    - a source other than github.com can be used\n4. Clone repository\n  - target branch is checkout\n5. List of authored commits is computed\n  - using `git log --author` and `commits_authoring` to search in commit headers\n  - using `git log --grep` and `commits_authoring` to search in commit body\n  - ensure these are within the range specified by `plugin_languages_indepth_custom` (if applicable)\n6. Process authored commits\n  - early break if `plugin_languages_analysis_timeout_repositories` is reached\n  - using `git verify-commit` to check authenticity against imported GPG keys\n  - using `git log --patch` to extract added/deleted lines/bytes from each file\n  - using [GitHub linguist](https://github.com/github/linguist) ([linguist-js](https://github.com/Nixinova/LinguistJS)) to detect language for each file\n    - respect `plugin_languages_categories` option\n    - if a file has since been deleted or moved, checkout on the last commit file was present and run linguist again\n7. Aggregate results\n\n## Recently used mode\n\n1. Fetch push events linked to your account (or target repository)\n  - matching `plugin_languages_recent_load` and `plugin_languages_recent_days` options\n  - matching committer emails from `commits_authoring`\n2. Process authored commits\n  - using [GitHub linguist](https://github.com/github/linguist) ([linguist-js](https://github.com/Nixinova/LinguistJS)) to detect language for each file\n    - respect `plugin_languages_recent_categories` option\n    - directly pass file content rather than performing I/O and simulating a git repository\n3. Aggregate results\n\n## 📅 Recently used languages\n\nThis feature uses a similar algorithm as `indepth` mode, but uses patches from your events feed instead.\nIt will fetch a specified amount of recent push events and perform linguistic analysis on it.\n\n> ⚠️ Note that *metrics* won't be able to use more events than GitHub API is able to provide\n\n*Example: display recently used languages from 400 GitHub events from last 2 weeks*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_sections: recently-used\n    plugin_languages_recent_load: 400\n    plugin_languages_recent_days: 14\n```\n\n> 🌐 Web instances must enable this feature in `settings.json`\n\n## 🥽 Controling which languages are displayed\n\nSeveral options lets you customize which languages should be displayed.\nIt is possible to ignore completely languages or those lower than a given threshold, skip repositories, and filter by language categories.\n\n*Example: hide HTML and CSS languages, skip lowlighter/metrics repository*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_ignored: html, css\n    plugin_languages_skipped: lowlighter/metrics\n```\n\n*Example: hide languages with less than 2% usage*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_threshold: 2%\n```\n\n> 💡 The threshold feature will automatically scale remaining languages so the total percentage is always 100%. However, other stats like bytes count and lines are not affected.\n\nWhen using `indepth` mode, it is possible to hide languages per category.\nSupported categories are `data`, `markup`, `programming` and `prose`.\n\n*Example: hide data and prose languages from stats*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_categories: data, prose\n    plugin_languages_recent_categories: data, prose\n```\n\n## 🎨 Using custom colors\n\nThe plugin uses GitHub language colors, but it may be hard to distinguish them depending on which languages you use.\nIt is possible to use custom colors using `plugin_languages_colors` option.\n\nThe following syntaxes are supported:\n- A predefined set from [colorsets.json](colorsets.json) *(support limited to 8 languages max)*\n- `${language}:${color}` to change the color of a language *(case insensitive)*\n- `${n}:${color}` to change the color of the n-th language\n\nBoth hexadecimal and [named color](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value) are supported.\n\n*Example: using a predefined color set*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_colors: rainbow\n    plugin_languages_limit: 8\n```\n\n*Example: setting JavaScript to red, the first language to blue and the second one to `#ff00aa`*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_colors: javascript:red, 0:blue, 1:#ff00aa\n```\n\n## ✍️ Using custom languages name\n\nThis plugin is limited by [GitHub linguist](https://github.com/github/linguist) capabilities, meaning that some languages may be mislabeled in some cases.\n\nTo mitigate this, it is possible to use `plugin_languages_aliases` option and provide a list of overrides using the following syntax: `${language}:${alias}` *(case insensitive)*.\n\n*Example: display JavaScript as JS and TypeScript as TS*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_aliases: javascript:JS typescript:TS\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Most used\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_limit: 4\n\n```\n```yaml\nname: Most used (with details)\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.details.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_details: bytes-size, percentage\n  plugin_languages_limit: 4\n\n```\n```yaml\nname: Recently used\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.recent.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_sections: recently-used\n  plugin_languages_details: bytes-size, percentage\n  plugin_languages_limit: 4\n\n```\n```yaml\nname: Indepth analysis\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.indepth.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_indepth: yes\n  plugin_languages_details: lines, bytes-size\n  plugin_languages_limit: 4\n  plugin_languages_analysis_timeout: 15\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":5638,"sizeBytes":20227},{"name":"README.md","path":"source/plugins/leetcode/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/leetcode/README.md","title":"leetcode Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗳️ Leetcode</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays statistics from a <a href=\"https://leetcode.com\">LeetCode</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://leetcode.com\">LeetCode</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.leetcode.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode</code></h4></td>\n    <td rowspan=\"2\"><p>Enable leetcode plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_user</code></h4></td>\n    <td rowspan=\"2\"><p>LeetCode login</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>solved</code> will display solved problems scores</li>\n<li><code>skills</code> will display solved problems tagged skills</li>\n<li><code>recent</code> will display recent submissions</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> solved<br>\n<b>allowed values:</b><ul><li>solved</li><li>skills</li><li>recent</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_limit_skills</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (skills)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 10<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_ignored_skills</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored skills</p>\n<p>It is possible to ignore entires categories by passing <code>fundamental</code>, <code>intermediate</code> or <code>advanced</code></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_limit_recent</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (recent)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 15)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: LeetCode\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.leetcode.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_leetcode: yes\n  plugin_leetcode_sections: solved, skills, recent\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1282,"sizeBytes":3957},{"name":"README.md","path":"source/plugins/licenses/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/licenses/README.md","title":"licenses Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📜 Repository licenses</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin display repository license informations like permissions, limitations and conditions along with additional stats about dependencies.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ This is <strong>NOT</strong> legal advice, use at your own risk</p>\n</blockquote>\n<blockquote>\n<p>💣 This plugin <strong>SHOULD NOT</strong> be enabled on web instances, since it allows raw command injection.\nThis could result in compromised server!</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Permissions, limitations and conditions</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.licenses.svg\" alt=\"\"></img></details>\n      <details open><summary>Licenses overview</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.licenses.ratio.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## 🔎 Licenses analysis\n\nUse to `plugin_licenses_setup` command to setup project dependencies.\n\n*Example: setup a NodeJS project using `npm ci`*\n```yml\n- name: Licenses and permissions\n  with:\n    repo: metrics\n    plugin_licenses: yes\n    plugin_licenses_setup: npm ci\n```\n\nDependencies will be analyzed by [GitHub licensed](https://github.com/github/licensed) and compared against GitHub known licenses.\n\n> ⚠️ This is **NOT** legal advice, use at your own risk\n\n> 💣 This plugin **SHOULD NOT** be enabled on web instances, since it allows raw command injection.\n> This could result in compromised server!\n\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses</code></h4></td>\n    <td rowspan=\"2\"><p>Enable licenses plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.cpu.overuse</i></li>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n<li><i>metrics.run.licensed</i></li>\n<li><i>metrics.run.user.cmd</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses_setup</code></h4></td>\n    <td rowspan=\"2\"><p>Setup command</p>\n<blockquote>\n<p>ℹ️ Depending on the project, this may not be required.\nThe example command is intended for NodeJs projects that use <code>npm</code> to install their dependencies.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses_ratio</code></h4></td>\n    <td rowspan=\"2\"><p>Used licenses ratio</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses_legal</code></h4></td>\n    <td rowspan=\"2\"><p>Permissions, limitations and conditions about used licenses</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Licenses and permissions\nwith:\n  filename: metrics.plugin.licenses.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_licenses: yes\n  plugin_licenses_setup: bash -c '[[ -f package.json ]] && npm ci || true'\n\n```\n```yaml\nname: Licenses with open-source ratio graphs\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.licenses.ratio.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_licenses: yes\n  plugin_licenses_setup: bash -c '[[ -f package.json ]] && npm ci || true'\n  plugin_licenses_legal: no\n  plugin_licenses_ratio: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1484,"sizeBytes":5135},{"name":"README.md","path":"source/plugins/lines/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/lines/README.md","title":"lines Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>👨‍💻 Lines of code changed</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the number of lines of code added and removed across repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Repositories and diff history</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.lines.history.svg\" alt=\"\"></img></details>\n      <details><summary>Compact display in base plugin</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.lines.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines</code></h4></td>\n    <td rowspan=\"2\"><p>Enable lines plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>base</code> will display the total lines added and removed in <code>base.repositories</code> section</li>\n<li><code>repositories</code> will display repositories with the most lines added and removed</li>\n<li><code>history</code> will display a graph displaying lines added and removed over time</li>\n</ul>\n<blockquote>\n<p>ℹ️ <code>base</code> requires at least <a href=\"/source/plugins/base/README.md#base\"><code>base: repositories</code></a> to be set</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> base<br>\n<b>allowed values:</b><ul><li>base</li><li>repositories</li><li>history</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_repositories_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_history_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Years to display</p>\n<p>Will display the last <code>n</code> years, relative to current year</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_delay</code></h4></td>\n    <td rowspan=\"2\"><p>Delay before performing a second query</p>\n<p>When non-zero, will perform a second query after specified delay (in seconds).\nThe GitHub endpoint used may return inaccurate results on first query (these values seems to be cached on the fly),\nafter returning correct results upon performing another query.</p>\n<p>Using this option may mitigate the occurrence of weird values.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Compact display in base plugin\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.lines.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: repositories\n  plugin_lines: yes\n  plugin_lines_delay: 30\n\n```\n```yaml\nname: Repositories and diff history\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.lines.history.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_lines: yes\n  plugin_lines_delay: 30\n  plugin_lines_sections: repositories, history\n  plugin_lines_repositories_limit: 2\n  plugin_lines_history_limit: 1\n  repositories_skipped: |\n    @use.patterns\n    */*\n    +lowlighter/metrics\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1686,"sizeBytes":5618},{"name":"README.md","path":"source/plugins/music/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/music/README.md","title":"music Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎼 Music activity and suggestions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display top and recently listened music tracks or titles from a random playlist.</p>\n<p>Different music providers are supported.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with any of the supported provider.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_music_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Random tracks from a playlist</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.playlist.svg\" alt=\"\"></img></details>\n      <details open><summary>Recently listened</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.recent.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n#### ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music</code></h4></td>\n    <td rowspan=\"2\"><p>Enable music plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_provider</code></h4></td>\n    <td rowspan=\"2\"><p>Music provider</p>\n<ul>\n<li><code>apple</code>: Apple Music</li>\n<li><code>spotify</code>: Spotify</li>\n<li><code>lastfm</code>: Last.fm</li>\n<li><code>youtube</code>: YouTube Music</li>\n</ul>\n<p>This setting is optional when using <a href=\"/source/plugins/music/README.md#plugin_music_mode\"><code>plugin_music_mode: playlist</code></a> (provider will be auto-detected from <a href=\"/source/plugins/music/README.md#plugin_music_playlist\"><code>plugin_music_playlist</code></a> URL)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>apple</li><li>spotify</li><li>lastfm</li><li>youtube</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_token</code></h4></td>\n    <td rowspan=\"2\"><p>Music provider token</p>\n<p>Below is the expected token format for each provider:</p>\n<ul>\n<li><code>apple</code>: <em>(not supported)</em></li>\n<li><code>spotify</code>: &quot;client_id, client_secret, refresh_token&quot;</li>\n<li><code>lastfm</code>: &quot;api_key&quot;</li>\n<li><code>youtube</code>: &quot;cookie&quot;</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.music.any</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_user</code></h4></td>\n    <td rowspan=\"2\"><p>Music provider username</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_mode</code></h4></td>\n    <td rowspan=\"2\"><p>Display mode</p>\n<ul>\n<li><code>playlist</code>: display random tracks from an URL playlist</li>\n<li><code>recent</code>: display recently listened tracks</li>\n<li><code>top</code>: display top listened artists/tracks</li>\n</ul>\n<p>If <a href=\"/source/plugins/music/README.md#plugin_music_playlist\"><code>plugin_music_playlist</code></a> is specified, the default value is <code>playlist</code>, else it is <code>recent</code></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>playlist</li><li>recent</li><li>top</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_playlist</code></h4></td>\n    <td rowspan=\"2\"><p>Playlist URL</p>\n<p>It must be from an &quot;embed url&quot; (i.e. music player iframes that can be integrated in other websites)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_played_at</code></h4></td>\n    <td rowspan=\"2\"><p>Recently played - Last played timestamp</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_time_range</code></h4></td>\n    <td rowspan=\"2\"><p>Top tracks - Time range</p>\n<ul>\n<li><code>short</code>: 4 weeks</li>\n<li><code>medium</code>: 6 months</li>\n<li><code>long</code>: several years</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> short<br>\n<b>allowed values:</b><ul><li>short</li><li>medium</li><li>long</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_top_type</code></h4></td>\n    <td rowspan=\"2\"><p>Top tracks - Display type</p>\n<ul>\n<li><code>tracks</code>: display track</li>\n<li><code>artists</code>: display artists</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> tracks<br>\n<b>allowed values:</b><ul><li>tracks</li><li>artists</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🎺 Configuring music provider\n\nSelect a music provider below for additional instructions.\n\n## 🎙️ Spotify\n\n### 🗝️ Obtaining a token\n\nSpotify does not have *personal tokens*, so it makes the process a bit longer because it is required to follow the [authorization workflow](https://developer.spotify.com/documentation/general/guides/authorization-guide/)... Follow the instructions below for a *TL;DR* to obtain a `refresh_token`.\n\nSign in to the [developer dashboard](https://developer.spotify.com/dashboard/) and create a new app.\nKeep your `client_id` and `client_secret` and let this tab open for now.\n\n![Add a redirect url](/.github/readme/imgs/plugin_music_recent_spotify_token_0.png)\n\nOpen the settings and add a new *Redirect url*. Normally it is used to setup callbacks for apps, but just put `https://localhost` instead (it is mandatory as per the [authorization guide](https://developer.spotify.com/documentation/general/guides/authorization-guide/), even if not used).\n\nForge the authorization url with your `client_id` and the encoded `redirect_uri` you whitelisted, and access it from your browser:\n\n```\nhttps://accounts.spotify.com/authorize?client_id=********&response_type=code&scope=user-read-recently-played%20user-top-read&redirect_uri=https%3A%2F%2Flocalhost\n```\n\nWhen prompted, authorize application.\n\n![Authorize application](/.github/readme/imgs/plugin_music_recent_spotify_token_1.png)\n\nOnce redirected to `redirect_uri`, extract the generated authorization `code` from your url bar.\n\n![Extract authorization code from url](/.github/readme/imgs/plugin_music_recent_spotify_token_2.png)\n\nGo back to developer dashboard tab, and open the web console of your browser to paste the following JavaScript code, with your own `client_id`, `client_secret`, authorization `code` and `redirect_uri`.\n\n```js\n(async () => {\n  console.log(await (await fetch(\"https://accounts.spotify.com/api/token\", {\n    method:\"POST\",\n    headers:{\"Content-Type\":\"application/x-www-form-urlencoded\"},\n    body:new URLSearchParams({\n      grant_type:\"authorization_code\",\n      redirect_uri:\"https://localhost\",\n      client_id:\"********\",\n      client_secret:\"********\",\n      code:\"********\",\n    })\n  })).json())\n})()\n```\n\nIt should return a JSON response with the following content:\n```json\n{\n  \"access_token\":\"********\",\n  \"expires_in\": 3600,\n  \"scope\":\"user-read-recently-played user-top-read\",\n  \"token_type\":\"Bearer\",\n  \"refresh_token\":\"********\"\n}\n```\n\nRegister your `client_id`, `client_secret` and `refresh_token` in secrets to finish setup.\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\nConnect to [spotify.com](https://www.spotify.com) and select the playlist you want to share.\nFrom `...` menu, select `Share` and `Copy embed code`.\n\n![Copy embed code of playlist](/.github/readme/imgs/plugin_music_playlist_spotify.png)\n\nExtract the source link from the code pasted in your clipboard:\n```html\n<iframe src=\"https://open.spotify.com/embed/playlist/********\" width=\"\" height=\"\" frameborder=\"0\" allowtransparency=\"\" allow=\"\"></iframe>\n```\n\n## 🍎 Apple Music\n\n### 🗝️ Obtaining a token\n\n*(Not available)*\n\n> 😥 Unfortunately I wasn't able to find a workaround to avoid paying the $99 fee for the developer program, even using workarounds like *smart playlists*, *shortcuts* and other stuff. However if you really want this feature, you could [sponsor me](github.com/sponsors/lowlighter) and I could eventually invest in a developer account with enough money, implement it and also eventually offer service on the shared instance\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\nConnect to [music.apple.com](https://music.apple.com/) and select the playlist you want to share.\nFrom `...` menu, select `Share` and `Copy embed code`.\n\n![Copy embed code of playlist](/.github/readme/imgs/plugin_music_playlist_apple.png)\n\nExtract the source link from the code pasted in your clipboard:\n```html\n<iframe allow=\"\" frameborder=\"\" height=\"\" style=\"\" sandbox=\"\" src=\"https://embed.music.apple.com/**/playlist/********\"></iframe>\n```\n\n## ⏯️ Youtube Music\n\n### 🗝️ Obtaining a token\n\nLogin to [YouTube Music](https://music.youtube.com) on any modern browser.\n\nOpen the developer tools (Ctrl-Shift-I) and select the “Network” tab\n\n![Open developer tools](/.github/readme/imgs/plugin_music_recent_youtube_cookie_1.png)\n\nFind an authenticated POST request. The simplest way is to filter by /browse using the search bar of the developer tools. If you don’t see the request, try scrolling down a bit or clicking on the library button in the top bar.\n\nClick on the Name of any matching request. In the “Headers” tab, scroll to the “Cookie” and copy this by right-clicking on it and selecting “Copy value”.\n\n![Copy cookie value](/.github/readme/imgs/plugin_music_recent_youtube_cookie_2.png)\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\nExtract the *playlist* URL of the playlist you want to share.\n\nConnect to [music.youtube.com](https://music.youtube.com) and select the playlist you want to share.\n\nExtract the source link from the code pasted in your clipboard:\n```\nhttps://music.youtube.com/playlist?list=********\n```\n\n## 📻 Last.fm\n\n### 🗝️ Obtaining a token\n\n[Create an API account](https://www.last.fm/api/account/create) or [use an existing one](https://www.last.fm/api/accounts) to obtain a Last.fm API key.\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\n*(Not available)*\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Apple Music - Random track from playlist\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.music.playlist.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_playlist: https://embed.music.apple.com/fr/playlist/usr-share/pl.u-V9D7m8Etjmjd0D\n  plugin_music_limit: 2\n\n```\n```yaml\nname: Spotify - Random track from playlist\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.music.playlist.spotify.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_playlist: https://open.spotify.com/embed/playlist/3nfA87oeJw4LFVcUDjRcqi\n\n```\n```yaml\nname: Spotify - Recently listed\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.music.recent.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_provider: spotify\n  plugin_music_mode: recent\n  plugin_music_token: ${{ secrets.SPOTIFY_TOKENS }}\n  plugin_music_limit: 2\n\n```\n```yaml\nname: Spotify - Top tracks\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_mode: top\n  plugin_music_provider: spotify\n  plugin_music_token: ${{ secrets.SPOTIFY_TOKENS }}\n  plugin_music_time_range: short\n  plugin_music_top_type: tracks\n\n```\n```yaml\nname: Spotify - Top artists\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_mode: top\n  plugin_music_provider: spotify\n  plugin_music_token: ${{ secrets.SPOTIFY_TOKENS }}\n  plugin_music_time_range: long\n  plugin_music_top_type: artists\n\n```\n```yaml\nname: Youtube Music - Random track from playlist\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_playlist: >-\n    https://music.youtube.com/playlist?list=OLAK5uy_kU_uxp9TUOl9zVdw77xith8o9AknVwz9U\n\n```\n```yaml\nname: Youtube Music - Recently listed\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music_token: ${{ secrets.YOUTUBE_MUSIC_TOKENS }}\n  plugin_music: yes\n  plugin_music_mode: recent\n  plugin_music_provider: youtube\n\n```\n```yaml\nname: Last.fm  - Recently listed\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music_token: ${{ secrets.LASTFM_TOKEN }}\n  plugin_music: yes\n  plugin_music_provider: lastfm\n  plugin_music_user: RJ\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":4077,"sizeBytes":14521},{"name":"README.md","path":"source/plugins/notable/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/notable/README.md","title":"notable Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎩 Notable contributions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays badges for notable contributions on repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Indepth analysis</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.notable.indepth.svg\" alt=\"\"></img></details>\n      <details><summary>Contributions in organizations only</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.notable.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable</code></h4></td>\n    <td rowspan=\"2\"><p>Enable notable plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_filter</code></h4></td>\n    <td rowspan=\"2\"><p>Query filter</p>\n<p>Based on <a href=\"https://docs.github.com/en/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax\">GitHub search syntax</a>.\nSupported fields are <code>stars</code>, <code>forks</code> and <code>watchers</code></p>\n<p>If <a href=\"/source/plugins/notable/README.md#plugin_notable_indepth\"><code>plugin_notable_indepth</code></a> is enabled, <code>commits</code>, <code>commits.user</code>, <code>commits.user%</code> and <code>maintainer</code> fields are also supported.\nSome repositories may not be able to reported advanced stats and in the case the default behaviour will be to bypass filtering</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_from</code></h4></td>\n    <td rowspan=\"2\"><p>Repository owner account type filter</p>\n<ul>\n<li><code>all</code>: no filtering</li>\n<li><code>organization</code>: only organization accounts repositories</li>\n<li><code>user</code>: only user accounts repositories</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> organization<br>\n<b>allowed values:</b><ul><li>all</li><li>organization</li><li>user</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Repository name</p>\n<p>Repositories hosted by user account will always have their full handle displayed</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_types</code></h4></td>\n    <td rowspan=\"2\"><p>Contribution types filter</p>\n<p>Use a combination of below values to include repositories where:</p>\n<ul>\n<li><code>commit</code>: a commit on default branch was made</li>\n<li><code>pull_request</code>: a pull request was opened</li>\n<li><code>issue</code>: an issue was opened</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> commit<br>\n<b>allowed values:</b><ul><li>commit</li><li>pull_request</li><li>issue</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_self</code></h4></td>\n    <td rowspan=\"2\"><p>Include own repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔎 `indepth` mode\n\nThe `plugin_notable_indepth` option collects additional stats about your contributions, such as:\n- Total number of commits within a repository or organization.\n\nFor each of the above, a badge is awarded. Its color and progress depends of the associated value.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Contributions\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.notable.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_notable: yes\n\n```\n```yaml\nname: Indepth analysis\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.notable.indepth.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_notable: yes\n  plugin_notable_indepth: yes\n  plugin_notable_repositories: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1929,"sizeBytes":6333},{"name":"README.md","path":"source/plugins/pagespeed/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/pagespeed/README.md","title":"pagespeed Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>⏱️ Google PageSpeed</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays performance statistics of a website.</p>\n<p>It uses <a href=\"https://developers.google.com/speed/docs/insights/v5/get-started\">Google&#39;s PageSpeed API</a> (same as <a href=\"https://web.dev\">web.dev</a>), see <a href=\"https://web.dev/performance-scoring/\">performance scoring</a> and <a href=\"https://googlechrome.github.io/lighthouse/scorecalc/\">score calculator</a> for more informations about results.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://pagespeed.web.dev/\">Google PageSpeed</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_pagespeed_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>PageSpeed scores</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.pagespeed.svg\" alt=\"\"></img></details>\n      <details><summary>PageSpeed scores with detailed report</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.pagespeed.detailed.svg\" alt=\"\"></img></details>\n      <details><summary>PageSpeed scores with a website screenshot</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.pagespeed.screenshot.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed</code></h4></td>\n    <td rowspan=\"2\"><p>Enable pagespeed plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_token</code></h4></td>\n    <td rowspan=\"2\"><p>PageSpeed token</p>\n<blockquote>\n<p>⚠️ While not mandatory, it is strongly advised pass a token to avoid triggering the rate limiter. See <a href=\"https://developers.google.com/speed/docs/insights/v5/get-started\">PageSpeed documentation</a> for more informations.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.google.pagespeed</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_url</code></h4></td>\n    <td rowspan=\"2\"><p>Audited website</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User attached website</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_detailed</code></h4></td>\n    <td rowspan=\"2\"><p>Detailed results</p>\n<p>The following additional stats will be displayed:</p>\n<ul>\n<li>First Contentful Paint</li>\n<li>Speed Index</li>\n<li>Largest Contentful Paint</li>\n<li>Time to Interactive</li>\n<li>Total Blocking Time</li>\n<li>Cumulative Layout Shift</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_screenshot</code></h4></td>\n    <td rowspan=\"2\"><p>Website screenshot</p>\n<p>Significantly increase filesize</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_pagespeed_pwa</code></h4></td>\n    <td rowspan=\"2\"><p>PWA Status</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Succinct report\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.pagespeed.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_pagespeed: yes\n  plugin_pagespeed_token: ${{ secrets.PAGESPEED_TOKEN }}\n  plugin_pagespeed_url: https://lecoq.io\n\n```\n```yaml\nname: Detailed report\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.pagespeed.detailed.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_pagespeed: yes\n  plugin_pagespeed_detailed: yes\n  plugin_pagespeed_token: ${{ secrets.PAGESPEED_TOKEN }}\n  plugin_pagespeed_url: https://lecoq.io\n\n```\n```yaml\nname: Screenshot\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.pagespeed.screenshot.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_pagespeed: yes\n  plugin_pagespeed_screenshot: yes\n  plugin_pagespeed_token: ${{ secrets.PAGESPEED_TOKEN }}\n  plugin_pagespeed_url: https://lecoq.io\n\n```\n```yaml\nname: Succinct report with PWA\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.pagespeed.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_pagespeed: yes\n  plugin_pagespeed_token: ${{ secrets.PAGESPEED_TOKEN }}\n  plugin_pagespeed_url: https://lecoq.io\n  plugin_pagespeed_pwa: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1836,"sizeBytes":6122},{"name":"README.md","path":"source/plugins/people/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/people/README.md","title":"people Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧑‍🤝‍🧑 People</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display relationships with users, such as followers, sponsors, contributors, stargazers, watchers, members, etc.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Related to a user</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.people.followers.svg\" alt=\"\"></img></details>\n      <details><summary>Related to a repository</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.people.repository.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people</code></h4></td>\n    <td rowspan=\"2\"><p>Enable people plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 24<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_identicons</code></h4></td>\n    <td rowspan=\"2\"><p>Force identicons pictures</p>\n<p>Can be used to mask profile pictures for privacy</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_identicons_hide</code></h4></td>\n    <td rowspan=\"2\"><p>Hide identicons pictures</p>\n<p>Can be used to mask users without a personal profile picture.</p>\n<p>When used with <a href=\"/source/plugins/people/README.md#plugin_people_identicons\"><code>plugin_people_identicons</code></a>, users without a personal profile picture will still be filtered out, but their picture will be replaced by an identicon instead</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_size</code></h4></td>\n    <td rowspan=\"2\"><p>Profile picture display size</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(8 ≤\n𝑥\n≤ 64)</i>\n<br>\n<b>default:</b> 28<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_types</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<p>User and organization accounts support the following values:</p>\n<ul>\n<li><code>followers</code></li>\n<li><code>following</code>/<code>followed</code></li>\n<li><code>sponsoring</code>/<code>sponsored</code></li>\n<li><code>sponsors</code></li>\n<li><code>members</code> (organization only)</li>\n<li><code>thanks</code>(to be configured with <a href=\"/source/plugins/people/README.md#plugin_people_thanks\"><code>plugin_people_thanks</code></a>)</li>\n</ul>\n<p>Repositories support the following values:</p>\n<ul>\n<li><code>sponsors</code> (same as owner sponsors)</li>\n<li><code>contributors</code></li>\n<li><code>stargazers</code></li>\n<li><code>watchers</code></li>\n<li><code>thanks</code>(to be configured with <a href=\"/source/plugins/people/README.md#plugin_people_thanks\"><code>plugin_people_thanks</code></a>)</li>\n</ul>\n<p>Specified order is honored</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> followers, following<br>\n<b>allowed values:</b><ul><li>followers</li><li>following</li><li>followed</li><li>sponsoring</li><li>members</li><li>sponsored</li><li>sponsors</li><li>contributors</li><li>stargazers</li><li>watchers</li><li>thanks</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_thanks</code></h4></td>\n    <td rowspan=\"2\"><p>Special thanks</p>\n<p>Can be used to thank specific users</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_sponsors_custom</code></h4></td>\n    <td rowspan=\"2\"><p>Custom sponsors</p>\n<p>This list can be used to add users from unsupported GitHub sponsors sources.\nThe option <a href=\"/source/plugins/people/README.md#plugin_people_types\"><code>plugin_people_types</code></a> must contain the <code>sponsors</code> section in order for this setting to be effective</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_people_shuffle</code></h4></td>\n    <td rowspan=\"2\"><p>Shuffle data</p>\n<p>Can be used to create varied outputs\nThis will fetch additional data (10 times <a href=\"/source/plugins/people/README.md#plugin_people_limit\"><code>plugin_people_limit</code></a>) to ensure output is always different</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Followers\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.people.followers.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_people: yes\n  plugin_people_types: followers\n\n```\n```yaml\nname: Contributors and sponsors\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.people.repository.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_people: yes\n  plugin_people_types: contributors, stargazers, watchers, sponsors\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":2231,"sizeBytes":7309},{"name":"README.md","path":"source/plugins/posts/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/posts/README.md","title":"posts Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>✒️ Recent posts</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays recent articles from a specified and supported external source.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Latest posts width description and cover image</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.posts.full.svg\" alt=\"\"></img></details>\n      <details><summary>Latest posts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.posts.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts</code></h4></td>\n    <td rowspan=\"2\"><p>Enable posts plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_source</code></h4></td>\n    <td rowspan=\"2\"><p>External source</p>\n<ul>\n<li><code>dev.to</code>: <a href=\"https://dev.to\">dev.to</a></li>\n<li><code>hashnode</code>: <a href=\"https://hashnode.com\">hashnode.com</a></li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>dev.to</li><li>hashnode</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_user</code></h4></td>\n    <td rowspan=\"2\"><p>External source username</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_descriptions</code></h4></td>\n    <td rowspan=\"2\"><p>Posts descriptions</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_covers</code></h4></td>\n    <td rowspan=\"2\"><p>Posts cover images</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_posts_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recent posts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.posts.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_posts: yes\n  plugin_posts_source: dev.to\n\n```\n```yaml\nname: Recent posts with descriptions and cover images\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.posts.full.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_posts: yes\n  plugin_posts_source: dev.to\n  plugin_posts_limit: 2\n  plugin_posts_descriptions: yes\n  plugin_posts_covers: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1317,"sizeBytes":4096},{"name":"README.md","path":"source/plugins/projects/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/projects/README.md","title":"projects Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗂️ GitHub projects</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays progress of profile and repository projects.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>🔑 public_repo</code> <code>🔑 read:project</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.projects.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_projects</code></h4></td>\n    <td rowspan=\"2\"><p>Enable projects plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_projects_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<p>Projects defined by <a href=\"/source/plugins/projects/README.md#plugin_projects_repositories\"><code>plugin_projects_repositories</code></a> are not affected by this option</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_projects_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Featured repositories projects</p>\n<p>Use the following syntax for each project <code>:user/:repo/projects/:project_id</code></p>\n<blockquote>\n<p>ℹ️ <a href=\"https://docs.github.com/en/issues/trying-out-the-new-projects-experience/about-projects\">GitHub projects (beta)</a> needs to use the same syntax as above and repository must specified repository must be linked to given project.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_projects_descriptions</code></h4></td>\n    <td rowspan=\"2\"><p>Projects descriptions</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔄 Enabling progress tracking\n\nBy default, projects have progress tracking disabled.\n\nTo enable it, open the `≡ Menu` from the project page and opt-in to `Track project progress`.\n\n![Enable \"Track project progress\"](/.github/readme/imgs/plugin_projects_track_progress.png)\n\n## 👤 Use personal projects\n\nTo create a personal project, select the `Projects` tab from your profile:\n![Create a new project](/.github/readme/imgs/plugin_projects_create.png)\n\nFill informations and set visibility to *public*:\n![Configure project](/.github/readme/imgs/plugin_projects_setup.png)\n\n## 📓 Use repositories projects\n\nRepositories projects are created from the `Projects` tab of a repository.\n\nTo use it with this plugin, retrieve the last section of the project URL (it should match the format `:user/:repository/projects/:project_id`) and add it in the `plugin_projects_repositories`.\n\nBe sure to tick `Track project progress` in project settings to display a progress bar.\n\n![Add a repository project](/.github/readme/imgs/plugin_projects_repositories.png)\n\n*Example: include a project repository*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_projects: yes\n    plugin_projects_repositories: lowlighter/metrics/projects/1\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Project from a repository\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.projects.svg\n  token: ${{ secrets.METRICS_TOKEN_WITH_SCOPES }}\n  base: \"\"\n  plugin_projects: yes\n  plugin_projects_repositories: lowlighter/metrics/projects/1\n  plugin_projects_descriptions: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1435,"sizeBytes":5087},{"name":"README.md","path":"source/plugins/reactions/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/reactions/README.md","title":"reactions Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎭 Comment reactions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays overall user reactions on recent issues, comments and discussions.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.reactions.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions</code></h4></td>\n    <td rowspan=\"2\"><p>Enable reactions plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (issues and pull requests comments)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_limit_issues</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (issues and pull requests, first comment)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_limit_discussions</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (discussions, first comment)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_limit_discussions_comments</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (discussions comments)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_days</code></h4></td>\n    <td rowspan=\"2\"><p>Comments maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_display</code></h4></td>\n    <td rowspan=\"2\"><p>Display mode</p>\n<ul>\n<li><code>absolute</code>: scale percentages using total reactions count</li>\n<li><code>relative</code>: scale percentages using highest reaction count</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> absolute<br>\n<b>allowed values:</b><ul><li>absolute</li><li>relative</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_details</code></h4></td>\n    <td rowspan=\"2\"><p>Additional details</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>count</li><li>percentage</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_reactions_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored users</p>\n<p>Can be used to ignore bots activity</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>users_ignored</code><br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Comment reactions\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.reactions.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_reactions: yes\n  plugin_reactions_limit: 100\n  plugin_reactions_details: percentage\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1672,"sizeBytes":5097},{"name":"README.md","path":"source/plugins/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/README.md","title":"plugins Documentation","category":"plugin-manifest","format":"markdown","content":"## 🧩 Plugins\n\nPlugins provide additional content and lets you customize rendered metrics.\n\n**📦 Maintained by core team**\n\n* **Core plugins**\n  * [🗃️ Base content <sub>`base`</sub>](/source/plugins/base/README.md)\n  * [🧱 Core <sub>`core`</sub>](/source/plugins/core/README.md)\n* **GitHub plugins**\n  * [🏆 Achievements <sub>`achievements`</sub>](/source/plugins/achievements/README.md)\n  * [📰 Recent activity <sub>`activity`</sub>](/source/plugins/activity/README.md)\n  * [📆 Commit calendar <sub>`calendar`</sub>](/source/plugins/calendar/README.md)\n  * [♐ Random code snippet <sub>`code`</sub>](/source/plugins/code/README.md)\n  * [🏅 Repository contributors <sub>`contributors`</sub>](/source/plugins/contributors/README.md)\n  * [💬 Discussions <sub>`discussions`</sub>](/source/plugins/discussions/README.md)\n  * [🎟️ Follow-up of issues and pull requests <sub>`followup`</sub>](/source/plugins/followup/README.md)\n  * [🎫 Gists <sub>`gists`</sub>](/source/plugins/gists/README.md)\n  * [💡 Coding habits and activity <sub>`habits`</sub>](/source/plugins/habits/README.md)\n  * [🙋 Introduction <sub>`introduction`</sub>](/source/plugins/introduction/README.md)\n  * [📅 Isometric commit calendar <sub>`isocalendar`</sub>](/source/plugins/isocalendar/README.md)\n  * [🈷️ Languages activity <sub>`languages`</sub>](/source/plugins/languages/README.md)\n  * [📜 Repository licenses <sub>`licenses`</sub>](/source/plugins/licenses/README.md)\n  * [👨‍💻 Lines of code changed <sub>`lines`</sub>](/source/plugins/lines/README.md)\n  * [🎩 Notable contributions <sub>`notable`</sub>](/source/plugins/notable/README.md)\n  * [🧑‍🤝‍🧑 People <sub>`people`</sub>](/source/plugins/people/README.md)\n  * [🗂️ GitHub projects <sub>`projects`</sub>](/source/plugins/projects/README.md)\n  * [🎭 Comment reactions <sub>`reactions`</sub>](/source/plugins/reactions/README.md)\n  * [📓 Featured repositories <sub>`repositories`</sub>](/source/plugins/repositories/README.md)\n  * [🌇 GitHub Skyline <sub>`skyline`</sub>](/source/plugins/skyline/README.md)\n  * [💕 GitHub Sponsors <sub>`sponsors`</sub>](/source/plugins/sponsors/README.md)\n  * [💝 GitHub Sponsorships <sub>`sponsorships`</sub>](/source/plugins/sponsorships/README.md)\n  * [✨ Stargazers <sub>`stargazers`</sub>](/source/plugins/stargazers/README.md)\n  * [💫 Star lists <sub>`starlists`</sub>](/source/plugins/starlists/README.md)\n  * [🌟 Recently starred repositories <sub>`stars`</sub>](/source/plugins/stars/README.md)\n  * [💭 GitHub Community Support <sub>`support`</sub>](/source/plugins/support/README.md) <sub>`⚠️ deprecated`</sub>\n  * [📌 Starred topics <sub>`topics`</sub>](/source/plugins/topics/README.md)\n  * [🧮 Repositories traffic <sub>`traffic`</sub>](/source/plugins/traffic/README.md)\n* **Social plugins**\n  * [🌸 Anilist watch list and reading list <sub>`anilist`</sub>](/source/plugins/anilist/README.md)\n  * [🗳️ Leetcode <sub>`leetcode`</sub>](/source/plugins/leetcode/README.md)\n  * [🎼 Music activity and suggestions <sub>`music`</sub>](/source/plugins/music/README.md)\n  * [⏱️ Google PageSpeed <sub>`pagespeed`</sub>](/source/plugins/pagespeed/README.md)\n  * [✒️ Recent posts <sub>`posts`</sub>](/source/plugins/posts/README.md)\n  * [🗼 Rss feed <sub>`rss`</sub>](/source/plugins/rss/README.md)\n  * [🗨️ Stack Overflow <sub>`stackoverflow`</sub>](/source/plugins/stackoverflow/README.md)\n  * [🕹️ Steam <sub>`steam`</sub>](/source/plugins/steam/README.md)\n  * [🐤 Latest tweets <sub>`tweets`</sub>](/source/plugins/tweets/README.md) <sub>`⚠️ deprecated`</sub>\n  * [⏰ WakaTime <sub>`wakatime`</sub>](/source/plugins/wakatime/README.md)\n\n**🎲 Maintained by community**\n* **[Community plugins](/source/plugins/community/README.md)**\n  * [🧠 16personalities <sub>`16personalities`</sub>](/source/plugins/community/16personalities/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [♟️ Chess <sub>`chess`</sub>](/source/plugins/community/chess/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [🪙 Crypto <sub>`crypto`</sub>](/source/plugins/community/crypto/README.md) by [@dajneem23](https://github.com/dajneem23)\n  * [🥠 Fortune <sub>`fortune`</sub>](/source/plugins/community/fortune/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [💉 Nightscout <sub>`nightscout`</sub>](/source/plugins/community/nightscout/README.md) by [@legoandmars](https://github.com/legoandmars)\n  * [💩 PoopMap plugin <sub>`poopmap`</sub>](/source/plugins/community/poopmap/README.md) by [@matievisthekat](https://github.com/matievisthekat)\n  * [📸 Website screenshot <sub>`screenshot`</sub>](/source/plugins/community/screenshot/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [🦑 Splatoon <sub>`splatoon`</sub>](/source/plugins/community/splatoon/README.md) by [@lowlighter](https://github.com/lowlighter)\n  * [💹 Stock prices <sub>`stock`</sub>](/source/plugins/community/stock/README.md) by [@lowlighter](https://github.com/lowlighter)\n\n","isInternal":false,"tokens":1591,"sizeBytes":5087},{"name":"README.md","path":"source/plugins/repositories/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/repositories/README.md","title":"repositories Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📓 Featured repositories</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays a list of chosen featured repositories.</p>\n<p>Since it is possible to <a href=\"https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/pinning-items-to-your-profile\">pin repositories</a> on GitHub, this plugin is mostly intended for external usage.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ Due to limitations of using SVG images inside <code>&lt;img&gt;</code> tags, clicking on a repository card will not redirect to repository page.</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Featured</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.repositories.svg\" alt=\"\"></img></details>\n      <details><summary>Pinned</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.repositories.pinned.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Enable repositories plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_featured</code></h4></td>\n    <td rowspan=\"2\"><p>Featured repositories</p>\n<p>Current <a href=\"/source/plugins/core/README.md#user\"><code>user</code></a> will be used when no owner is specified</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_pinned</code></h4></td>\n    <td rowspan=\"2\"><p>Pinned repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 6)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_starred</code></h4></td>\n    <td rowspan=\"2\"><p>Featured most starred repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_random</code></h4></td>\n    <td rowspan=\"2\"><p>Featured random repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_order</code></h4></td>\n    <td rowspan=\"2\"><p>Featured repositories display order</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<br>\n<b>default:</b> featured, pinned, starred, random<br>\n<b>allowed values:</b><ul><li>featured</li><li>pinned</li><li>starred</li><li>random</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_forks</code></h4></td>\n    <td rowspan=\"2\"><p>Include repositories forks</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_repositories_affiliations</code></h4></td>\n    <td rowspan=\"2\"><p>Repositories affiliations</p>\n<ul>\n<li><code>owner</code>: owned repositories</li>\n<li><code>collaborator</code>: repositories with push access</li>\n<li><code>organization_member</code>: repositories from an organization where user is a member</li>\n</ul>\n<p>Set to <code>&quot;&quot;</code> to disable and fetch all repositories related to given account.</p>\n<p>This option changes which repositories will be fetched by <a href=\"/source/plugins/projects/README.md#plugin_repositories_starred\"><code>plugin_repositories_starred</code></a> and <a href=\"/source/plugins/projects/README.md#plugin_repositories_random\"><code>plugin_repositories_random</code></a> options</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> owner<br>\n<b>allowed values:</b><ul><li>owner</li><li>collaborator</li><li>organization_member</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Featured repositories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.repositories.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_repositories: yes\n  plugin_repositories_featured: lowlighter/metrics\n\n```\n```yaml\nname: Pinned repositories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.repositories.pinned.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_repositories: yes\n  plugin_repositories_pinned: 2\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1914,"sizeBytes":6286},{"name":"README.md","path":"source/plugins/rss/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/rss/README.md","title":"rss Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗼 Rss feed</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays news from a given RSS feed.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.rss.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_rss</code></h4></td>\n    <td rowspan=\"2\"><p>Enable rss plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_rss_source</code></h4></td>\n    <td rowspan=\"2\"><p>RSS feed source</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_rss_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 4<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: News from hackernews\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.rss.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_rss: yes\n  plugin_rss_source: https://news.ycombinator.com/rss\n  plugin_rss_limit: 4\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":811,"sizeBytes":2446},{"name":"README.md","path":"source/plugins/skyline/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/skyline/README.md","title":"skyline Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🌇 GitHub Skyline</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the 3D commits calendar from <a href=\"https://skyline.github.com/\">skyline.github.com</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ This plugin significantly increase file size, consider using it as standalone.</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>GitHub Skyline</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.skyline.svg\" alt=\"\"></img></details>\n      <details><summary>GitHub City</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.skyline.city.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline</code></h4></td>\n    <td rowspan=\"2\"><p>Enable skyline plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.cpu.overuse</i></li>\n<li><i>metrics.npm.optional.gifencoder</i></li>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_year</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed year</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(2008 ≤\n𝑥)</i>\n<br>\n<b>default:</b> current-year<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_frames</code></h4></td>\n    <td rowspan=\"2\"><p>Frames count</p>\n<p>Use 120 for a full-loop and 60 for a half-loop.\nA higher number of frames will increase file size.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 120)</i>\n<br>\n<b>default:</b> 60<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_quality</code></h4></td>\n    <td rowspan=\"2\"><p>Image quality</p>\n<p>A higher image quality will increase file size.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0.1 ≤\n𝑥\n≤ 1)</i>\n<br>\n<b>default:</b> 0.5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_compatibility</code></h4></td>\n    <td rowspan=\"2\"><p>Compatibility mode</p>\n<p>This uses CSS animations rather than embedded GIF to support a wider range of browsers, like Firefox and Safari.\nUsing this mode significantly increase file size as each frame is encoded separately</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_skyline_settings</code></h4></td>\n    <td rowspan=\"2\"><p>Advanced settings</p>\n<p>Can be configured to use alternate skyline websites different from <a href=\"https://skyline.github.com\">skyline.github.com</a>, such as <a href=\"https://github.com/honzaap/GithubCity\">honzaap&#39;s GitHub City</a>.</p>\n<ul>\n<li><code>url</code>: Target URL (mandatory)</li>\n<li><code>ready</code>: Readiness condition (A JS function that returns a boolean)</li>\n<li><code>wait</code>: Time to wait after readiness condition is met (in seconds)</li>\n<li><code>hide</code>: HTML elements to hide (A CSS selector)</li>\n</ul>\n<p>For <code>url</code> and <code>ready</code> options, <code>${login}</code> and <code>${year}</code> will be respectively templated to user&#39;s login and specified year</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.user.js</i></li>\n</ul>\n<b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"url\": \"https://skyline.github.com/${login}/${year}\",\n  \"ready\": \"[...document.querySelectorAll('span')].map(span => span.innerText).includes('Share on Twitter')\",\n  \"wait\": 1,\n  \"hide\": \"button, footer, a\"\n}\n</code></pre></details><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: GitHub Skyline\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.skyline.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_skyline: yes\n  plugin_skyline_year: 2020\n  plugin_skyline_frames: 6\n  plugin_skyline_quality: 1\n\n```\n```yaml\nname: GitHub City\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.skyline.city.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_skyline: yes\n  plugin_skyline_year: 2020\n  plugin_skyline_frames: 6\n  plugin_skyline_quality: 1\n  plugin_skyline_settings: |\n    {\n      \"url\": \"https://honzaap.github.io/GithubCity?name=${login}&year=${year}\",\n      \"ready\": \"[...document.querySelectorAll('.display-info span')].map(span => span.innerText).includes('${login}')\",\n      \"wait\": 4,\n      \"hide\": \".github-corner, .footer-link, .buttons-options, .mobile-rotate, .display-info span:first-child\"\n    }\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1920,"sizeBytes":6210},{"name":"README.md","path":"source/plugins/sponsors/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/sponsors/README.md","title":"sponsors Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💕 GitHub Sponsors</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays sponsors and introduction text from <a href=\"https://github.com/sponsors/\">GitHub sponsors</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 read:user</code> <code>🔑 read:org</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>GitHub sponsors card</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.sponsors.svg\" alt=\"\"></img></details>\n      <details><summary>GitHub sponsors full introduction</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.sponsors.full.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors</code></h4></td>\n    <td rowspan=\"2\"><p>Enable sponsors plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>goal</code>: display GitHub active goal</li>\n<li><code>about</code>: display GitHub sponsors introduction</li>\n<li><code>list</code>: display GitHub sponsors list</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> goal, list, about<br>\n<b>allowed values:</b><ul><li>goal</li><li>about</li><li>list</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors_past</code></h4></td>\n    <td rowspan=\"2\"><p>Past sponsorships</p>\n<p>A <a href=\"/source/plugins/core/README.md#token\"><code>token</code></a> from target <a href=\"/source/plugins/core/README.md#user\"><code>user</code></a> must be specified to use this feature, as past sponsorships are gathered from sponsors activity which is private data.</p>\n<blockquote>\n<p>⚠️ Past sponsorships does not respect sponsors privacy because of current GitHub API limitations. This may be fixed in a future release.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors_size</code></h4></td>\n    <td rowspan=\"2\"><p>Profile picture display size</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(8 ≤\n𝑥\n≤ 64)</i>\n<br>\n<b>default:</b> 24<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsors_title</code></h4></td>\n    <td rowspan=\"2\"><p>Title caption</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> Sponsor Me!<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Sponsors goal\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.sponsors.svg\n  token: ${{ secrets.METRICS_TOKEN_PERSONAL }}\n  base: \"\"\n  plugin_sponsors: yes\n  plugin_sponsors_sections: goal, list\n  plugin_sponsors_past: yes\n\n```\n```yaml\nname: Sponsors introduction\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.sponsors.full.svg\n  token: ${{ secrets.METRICS_TOKEN_WITH_SCOPES }}\n  base: \"\"\n  plugin_sponsors: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1416,"sizeBytes":4644},{"name":"README.md","path":"source/plugins/sponsorships/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/sponsorships/README.md","title":"sponsorships Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💝 GitHub Sponsorships</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays sponsorships funded through <a href=\"https://github.com/sponsors/\">GitHub sponsors</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 read:user</code> <code>🔑 read:org</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.sponsorships.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsorships</code></h4></td>\n    <td rowspan=\"2\"><p>Enable sponsorships plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsorships_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>amount</code>: display total amount sponsored</li>\n<li><code>sponsorships</code>: display GitHub sponsorships</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> amount, sponsorships<br>\n<b>allowed values:</b><ul><li>amount</li><li>sponsorships</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_sponsorships_size</code></h4></td>\n    <td rowspan=\"2\"><p>Profile picture display size</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(8 ≤\n𝑥\n≤ 64)</i>\n<br>\n<b>default:</b> 24<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: 💝 GitHub Sponsorships\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.sponsorships.svg\n  token: ${{ secrets.METRICS_TOKEN_PERSONAL }}\n  base: \"\"\n  plugin_sponsorships: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":929,"sizeBytes":2962},{"name":"README.md","path":"source/plugins/stackoverflow/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/stackoverflow/README.md","title":"stackoverflow Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗨️ Stack Overflow</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays stats, questions and answer from <a href=\"https://stackoverflow.com/\">Stack Overflow</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://stackoverflow.com/\">Stack Overflow</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stackoverflow.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stackoverflow plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_user</code></h4></td>\n    <td rowspan=\"2\"><p>Stackoverflow user id</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>number</code>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>answers-top</code>: display most popular answers</li>\n<li><code>answers-recent</code>: display recent answers</li>\n<li><code>questions-top</code>: display most popular questions</li>\n<li><code>questions-recent</code>: display recent questions</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> answers-top, questions-recent<br>\n<b>allowed values:</b><ul><li>answers-top</li><li>answers-recent</li><li>questions-top</li><li>questions-recent</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (entries per section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_lines</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (lines per questions and answers)</p>\n<p>Code snippets count as a single line and must be configured with <a href=\"/source/plugins/stackoverflow/README.md#plugin_stackoverflow_lines_snippet\"><code>plugin_stackoverflow_lines_snippet</code></a> instead</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stackoverflow_lines_snippet</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (lines per code snippets)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Top answers from stackoverflow\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stackoverflow.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_stackoverflow: yes\n  plugin_stackoverflow_user: 1\n  plugin_stackoverflow_sections: answers-top\n  plugin_stackoverflow_limit: 2\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1390,"sizeBytes":4468},{"name":"README.md","path":"source/plugins/stargazers/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/stargazers/README.md","title":"stargazers Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>✨ Stargazers</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays stargazers evolution across affiliated repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>🗝️ plugin_stargazers_worldmap_token</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Classic charts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stargazers.svg\" alt=\"\"></img></details>\n      <details><summary>Graph charts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stargazers.graph.svg\" alt=\"\"></img></details>\n      <details open><summary>Worldmap</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stargazers.worldmap.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## 🗝️ Obtaining a Google Maps API token\n\nSome features like `plugin_stagazers_worldmap` require a Google Geocoding API token.\nFollow instructions from their [documentation](https://developers.google.com/maps/documentation/geocoding/get-api-key) for more informations.\n\n> 💳 A billing account is required to get a token. However a recurring [monthly credit](https://developers.google.com/maps/billing-credits#monthly) is offered which means you should not be charged if you don't exceed the free quota.\n>\n> It is advised to set the quota limit at 1200 requests per day\n>\n> Use at your own risk, *metrics* and its authors cannot be held responsible for anything charged.\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stargazers plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_days</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<p>If set to <code>0</code> the account registration date will be used.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> see description</br>\n<b>default:</b> 14<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_charts</code></h4></td>\n    <td rowspan=\"2\"><p>Charts</p>\n<p>It includes total number of stargazers evolution, along with the number of new stars per day over the last two weeks.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_charts_type</code></h4></td>\n    <td rowspan=\"2\"><p>Charts display type</p>\n<ul>\n<li><code>classic</code>: <code>&lt;div&gt;</code> based charts, simple and lightweight</li>\n<li><code>graph</code>: <code>&lt;svg&gt;</code> based charts, smooth</li>\n</ul>\n<blockquote>\n<p>⚠️ <code>chartist</code> option has been deprecated and is now equivalent to <code>graph</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.d3</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> classic<br>\n<b>allowed values:</b><ul><li>classic</li><li>graph</li><li>chartist</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_worldmap</code></h4></td>\n    <td rowspan=\"2\"><p>Stargazers worldmap</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.google.maps</i></li>\n<li><i>metrics.npm.optional.d3</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_worldmap_token</code></h4></td>\n    <td rowspan=\"2\"><p>Stargazers worldmap token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stargazers_worldmap_sample</code></h4></td>\n    <td rowspan=\"2\"><p>Stargazers worldmap sample</p>\n<p>Use this setting to randomly sample and limit your stargazers.\nHelps to avoid consuming too much Google Geocoding API requests while still being representative.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Using classic charts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stargazers.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_stargazers: yes\n\n```\n```yaml\nname: Using graph charts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stargazers.graph.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_stargazers: yes\n  plugin_stargazers_charts_type: graph\n\n```\n```yaml\nname: With worldmap\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stargazers.worldmap.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_stargazers: yes\n  plugin_stargazers_charts: no\n  plugin_stargazers_worldmap: yes\n  plugin_stargazers_worldmap_token: ${{ secrets.GOOGLE_MAP_TOKEN }}\n  plugin_stargazers_worldmap_sample: 200\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":2067,"sizeBytes":6804},{"name":"README.md","path":"source/plugins/starlists/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/starlists/README.md","title":"starlists Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💫 Star lists</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays star lists.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Repositories from star lists</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.starlists.svg\" alt=\"\"></img></details>\n      <details open><summary>Languages from star lists</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.starlists.languages.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists</code></h4></td>\n    <td rowspan=\"2\"><p>Enable starlists plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (star lists)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_limit_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (repositories per star list)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Star lists languages statistics</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_limit_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (languages per star list)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 8<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_languages_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored languages in star lists</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_languages_aliases</code></h4></td>\n    <td rowspan=\"2\"><p>Custom languages names in star lists</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_shuffle_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Shuffle data</p>\n<p>Can be used to create varied outputs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped star lists</p>\n<p>Case and emojis insensitive</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_starlists_only</code></h4></td>\n    <td rowspan=\"2\"><p>Showcased star lists</p>\n<p>Case and emojis insensitive.</p>\n<p>Equivalent to <a href=\"/source/plugins/starlists/README.md#plugin_starlists_ignored\"><code>plugin_starlists_ignored</code></a> with all star lists except the ones listed in this option</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Featured star list\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.starlists.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_starlists: yes\n  plugin_starlists_limit_repositories: 2\n  plugin_starlists_only: TC39\n\n```\n```yaml\nname: Featured star list languages\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.starlists.languages.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_starlists: yes\n  plugin_starlists_languages: yes\n  plugin_starlists_limit_languages: 8\n  plugin_starlists_limit_repositories: 0\n  plugin_starlists_only: Awesome\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1827,"sizeBytes":5747},{"name":"README.md","path":"source/plugins/stars/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/stars/README.md","title":"stars Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🌟 Recently starred repositories</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays recently starred repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stars.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stars</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stars plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stars_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recently starred\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stars.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_stars: yes\n  plugin_stars_limit: 3\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":739,"sizeBytes":2343},{"name":"README.md","path":"source/plugins/steam/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/steam/README.md","title":"steam Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🕹️ Steam</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display your player profile and played games from your Steam account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://store.steampowered.com\">Steam</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_steam_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Recently played games</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.steam.svg\" alt=\"\"></img></details>\n      <details><summary>Profile and detailed game history</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.steam.full.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam</code></h4></td>\n    <td rowspan=\"2\"><p>Enable steam plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_token</code></h4></td>\n    <td rowspan=\"2\"><p>Steam token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.steam</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>player</code>: display profile</li>\n<li><code>most-played</code>: display most played games</li>\n<li><code>recently-played</code>: display recently played games</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> player, most-played, recently-played<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_user</code></h4></td>\n    <td rowspan=\"2\"><p>Steam user id</p>\n<p>This can be found on your Steam user account details</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_games_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored games</p>\n<p>Use App id as they are referenced in Steam catalog</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_games_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Most played games)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_recent_games_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Recently played games)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_achievements_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Games achievements)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_steam_playtime_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Display threshold (Game playtime in hours)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a *Steam Web API* token\n\nGo to [steamcommunity.com/dev/apikey](https://steamcommunity.com/dev/apikey) to obtain a Steam Web API token:\n\n![Token](/.github/readme/imgs/plugin_steam_webtoken.png)\n\nTo retrieve your Steam ID, access your user account on [store.steampowered.com/account](https://store.steampowered.com/account) and copy the identifier located behind the header:\n\n![User ID](/.github/readme/imgs/plugin_steam_userid.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recently played games\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.steam.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_steam_token: ${{ secrets.STEAM_TOKEN }}\n  plugin_steam: yes\n  plugin_steam_user: \"0\"\n  plugin_steam_sections: recently-played\n  plugin_steam_achievements_limit: 0\n\n```\n```yaml\nname: Profile and detailed game history\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.steam.full.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_steam_token: ${{ secrets.STEAM_TOKEN }}\n  plugin_steam: yes\n  plugin_steam_user: \"0\"\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1907,"sizeBytes":5993},{"name":"README.md","path":"source/plugins/support/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/support/README.md","title":"support Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💭 GitHub Community Support</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays statistics from a <a href=\"https://github.community/\">GitHub Support Community</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Deprecated</th><td><p>GitHub Support Community has been moved to <a href=\"https://github.blog/2022-07-26-launching-github-community-powered-by-github-discussions\">GitHub Discussions</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.support.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_support</code></h4></td>\n    <td rowspan=\"2\"><p>Enable support plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: GitHub Community Support\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.support.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_support: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":682,"sizeBytes":2298},{"name":"README.md","path":"source/plugins/topics/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/topics/README.md","title":"topics Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📌 Starred topics</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays <a href=\"https://github.com/stars?filter=topics\">starred topics</a>.</p>\n<p>Check out <a href=\"https://github.com/topics\">GitHub topics</a> to search interesting topics.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>With icons</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.topics.icons.svg\" alt=\"\"></img></details>\n      <details open><summary>With labels</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.topics.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_topics</code></h4></td>\n    <td rowspan=\"2\"><p>Enable topics plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_topics_mode</code></h4></td>\n    <td rowspan=\"2\"><p>Display mode</p>\n<ul>\n<li><code>labels</code>: display labels</li>\n<li><code>icons</code>: display icons <em>(topics without icons will not be displayed)</em></li>\n<li><code>starred</code>: alias for <code>labels</code></li>\n<li><code>mastered</code>: alias for <code>icons</code></li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> starred<br>\n<b>allowed values:</b><ul><li>labels</li><li>icons</li><li>starred</li><li>mastered</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_topics_sort</code></h4></td>\n    <td rowspan=\"2\"><p>Sorting method</p>\n<ul>\n<li><code>stars</code>: sort by most stars</li>\n<li><code>activity</code>: sort by recent activity</li>\n<li><code>starred</code>: sort by starred date</li>\n<li><code>random</code>: sort randomly</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> stars<br>\n<b>allowed values:</b><ul><li>stars</li><li>activity</li><li>starred</li><li>random</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_topics_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 20)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 15<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Labels\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.topics.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_topics: yes\n  plugin_topics_limit: 12\n\n```\n```yaml\nname: Icons\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.topics.icons.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_topics: yes\n  plugin_topics_limit: 0\n  plugin_topics_mode: icons\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1339,"sizeBytes":4233},{"name":"README.md","path":"source/plugins/traffic/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/traffic/README.md","title":"traffic Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧮 Repositories traffic</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the number of page views across affiliated repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 repo</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.traffic.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_traffic</code></h4></td>\n    <td rowspan=\"2\"><p>Enable traffic plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_traffic_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Repositories traffic\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.traffic.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: repositories\n  plugin_traffic: yes\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":788,"sizeBytes":2603},{"name":"README.md","path":"source/plugins/tweets/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/tweets/README.md","title":"tweets Documentation","category":"plugin-manifest","format":"markdown","content":"<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🐤 Latest tweets</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the latest tweets from a <a href=\"https://twitter.com\">Twitter</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Deprecated</th><td><p>As <a href=\"https://twitter.com\">Twitter</a> removed the ability to fetch tweets from their free API as part of their new <a href=\"https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api\">pricing policy</a>, this plugin is no longer maintained.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://twitter.com\">Twitter</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_tweets_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Latest tweets with attachments</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.tweets.attachments.svg\" alt=\"\"></img></details>\n      <details><summary>Latest tweets</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.tweets.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets</code></h4></td>\n    <td rowspan=\"2\"><p>Enable tweets plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.twitter.tweets</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets_token</code></h4></td>\n    <td rowspan=\"2\"><p>Twitter API token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets_user</code></h4></td>\n    <td rowspan=\"2\"><p>Twitter username</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User attached twitter</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets_attachments</code></h4></td>\n    <td rowspan=\"2\"><p>Tweets attachments</p>\n<p>Can be used to display linked images, video thumbnails, etc.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_tweets_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 10)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a Twitter token\n\nTo get a Twitter token, it is required to apply to the [developer program](https://apps.twitter.com).\nIt's a bit tedious, but requests seems to be approved quite quickly.\n\nCreate an app from the [developer dashboard](https://developer.twitter.com/en/portal/dashboard) and register your bearer token in repository secrets.\n\n![Twitter token](/.github/readme/imgs/plugin_tweets_secrets.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Latest tweets\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.tweets.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_tweets: yes\n  plugin_tweets_token: ${{ secrets.TWITTER_TOKEN }}\n  plugin_tweets_user: github\n\n```\n```yaml\nname: Latest tweets including attachments\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.tweets.attachments.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_tweets: yes\n  plugin_tweets_token: ${{ secrets.TWITTER_TOKEN }}\n  plugin_tweets_attachments: yes\n  plugin_tweets_user: github\n  plugin_tweets_limit: 1\n\n```\n<!--/examples-->\n","isInternal":false,"tokens":1439,"sizeBytes":4820},{"name":"README.md","path":"source/plugins/wakatime/README.md","rawUrl":"https://raw.githubusercontent.com/lowlighter/metrics/HEAD/source/plugins/wakatime/README.md","title":"wakatime Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/lowlighter/metrics?path=source%2Fplugins%2Fwakatime%2FREADME.md -->","isInternal":false,"tokens":2099,"sizeBytes":6296}],"systemPromptSnippet":"<yakaai_skills repo=\"lowlighter/metrics\">\n<!-- File: source/plugins/achievements/README.md (Tokens: ~1733 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🏆 Achievements</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays several highlights about what an account has achieved on GitHub.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Compact display</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.achievements.compact.svg\" alt=\"\"></img></details>\n      <details><summary>Detailed display</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.achievements.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements</code></h4></td>\n    <td rowspan=\"2\"><p>Enable achievements plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Rank threshold filter</p>\n<p>Use <code>X</code> to display achievements not yet unlocked</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> C<br>\n<b>allowed values:</b><ul><li>S</li><li>A</li><li>B</li><li>C</li><li>X</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_secrets</code></h4></td>\n    <td rowspan=\"2\"><p>Secrets achievements</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_display</code></h4></td>\n    <td rowspan=\"2\"><p>Display style</p>\n<ul>\n<li><code>detailed</code>: display icon, name, description and ranking</li>\n<li><code>compact</code>: display icon, name and value</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> detailed<br>\n<b>allowed values:</b><ul><li>detailed</li><li>compact</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored achievements</p>\n<p>Use achievements names without their rank adjective (i.e. without &quot;great&quot;, &quot;super&quot; or &quot;master&quot;)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_achievements_only</code></h4></td>\n    <td rowspan=\"2\"><p>Showcased achievements</p>\n<p>Use achievements names without their rank adjective (i.e. without &quot;great&quot;, &quot;super&quot; or &quot;master&quot;)</p>\n<p>This option is equivalent to <a href=\"/source/plugins/achievements/README.md#plugin_achievements_ignored\"><code>plugin_achievements_ignored</code></a> with all existing achievements except the ones listed in this option</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Detailed display\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.achievements.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_achievements: yes\n  plugin_achievements_only: sponsor, maintainer, octonaut\n\n```\n```yaml\nname: Compact display\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.achievements.compact.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_achievements: yes\n  plugin_achievements_only: >-\n    polyglot, stargazer, sponsor, deployer, member, maintainer, developer,\n    scripter, packager, explorer, infographile, manager\n  plugin_achievements_display: compact\n  plugin_achievements_threshold: X\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/activity/README.md (Tokens: ~2032 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📰 Recent activity</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays recent activity on GitHub.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/markdown/README.md\"><code>📒 Markdown template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.activity.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity</code></h4></td>\n    <td rowspan=\"2\"><p>Enable activity plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_load</code></h4></td>\n    <td rowspan=\"2\"><p>Events to load</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(100 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 300<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_days</code></h4></td>\n    <td rowspan=\"2\"><p>Events maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 365)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 14<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_visibility</code></h4></td>\n    <td rowspan=\"2\"><p>Events visibility</p>\n<p>Can be used to toggle private activity visibility when using a token with <code>repo</code> scope</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> all<br>\n<b>allowed values:</b><ul><li>public</li><li>all</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_timestamps</code></h4></td>\n    <td rowspan=\"2\"><p>Events timestamps</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored users</p>\n<p>Can be used to ignore bots activity</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>users_ignored</code><br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_activity_filter</code></h4></td>\n    <td rowspan=\"2\"><p>Events types</p>\n<p>These are fetched from <a href=\"https://docs.github.com/en/free-pro-team@latest/developers/webhooks-and-events/github-event-types\">GitHub events API</a> and the following types are currently supported:</p>\n<ul>\n<li><code>push</code>: Push of commits</li>\n<li><code>issue</code>: Opening/Reopening/Closing of issues</li>\n<li><code>pr</code>: Opening/Closing of pull requests</li>\n<li><code>ref/create</code>: Creation of git tags or git branches</li>\n<li><code>ref/delete</code>: Deletion of git tags or git branches</li>\n<li><code>release</code>: Publication of new releases</li>\n<li><code>review</code>: Review of pull requests</li>\n<li><code>comment</code>: Comments on commits, issues and pull requests</li>\n<li><code>wiki</code>: Changes of wiki pages</li>\n<li><code>fork</code>: Forking of repositories</li>\n<li><code>star</code>: Starring of repositories</li>\n<li><code>public</code>: Repositories made public</li>\n<li><code>member</code>: Addition of new collaborator in repository</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> all<br>\n<b>allowed values:</b><ul><li>all</li><li>comment</li><li>ref/create</li><li>ref/delete</li><li>release</li><li>push</li><li>issue</li><li>pr</li><li>review</li><li>wiki</li><li>fork</li><li>star</li><li>member</li><li>public</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Recent activity\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.activity.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_activity: yes\n  plugin_activity_limit: 5\n  plugin_activity_days: 0\n  plugin_activity_filter: issue, pr, release, fork, review, ref/create\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/anilist/README.md (Tokens: ~1799 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🌸 Anilist watch list and reading list</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays favorites animes, mangas and characters from a <a href=\"https://anilist.co\">AniList</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://anilist.co\">AniList</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>For anime watchers</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.anilist.svg\" alt=\"\"></img></details>\n      <details><summary>For manga readers</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.anilist.manga.svg\" alt=\"\"></img></details>\n      <details open><summary>For waifus simp</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.anilist.characters.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist</code></h4></td>\n    <td rowspan=\"2\"><p>Enable aniList plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_user</code></h4></td>\n    <td rowspan=\"2\"><p>AniList login</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_medias</code></h4></td>\n    <td rowspan=\"2\"><p>Medias types</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> anime, manga<br>\n<b>allowed values:</b><ul><li>anime</li><li>manga</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>favorites</code> will display favorites from <code>plugin_anilist_medias</code></li>\n<li><code>watching</code> will display animes currently in watching list</li>\n<li><code>reading</code> will display manga currently in reading list</li>\n<li><code>characters</code> will display liked characters</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> favorites<br>\n<b>allowed values:</b><ul><li>favorites</li><li>watching</li><li>reading</li><li>characters</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (medias)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 2<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_limit_characters</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (characters)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 22<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_anilist_shuffle</code></h4></td>\n    <td rowspan=\"2\"><p>Shuffle data</p>\n<p>Can be used to create varied outputs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Favorites anime and currently watching\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.anilist.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_anilist: yes\n  plugin_anilist_medias: anime\n  plugin_anilist_sections: favorites, watching\n  plugin_anilist_limit: 1\n\n```\n```yaml\nname: Favorites manga and currently reading\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.anilist.manga.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_anilist: yes\n  plugin_anilist_medias: manga\n  plugin_anilist_sections: favorites, reading\n  plugin_anilist_limit: 1\n\n```\n```yaml\nname: Favorites characters\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.anilist.characters.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_anilist: yes\n  plugin_anilist_sections: characters\n  plugin_anilist_limit_characters: 22\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/base/README.md (Tokens: ~2385 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗃️ Base content</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n<td colspan=\"2\"><table><tr>\n<td align=\"center\">\n<img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.classic.svg\" alt=\"\"></img>\n</td>\n<td align=\"center\">\n<img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.organization.svg\" alt=\"\"></img>\n</td>\n</tr></table></td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base</code></h4></td>\n    <td rowspan=\"2\"><p>Base content</p>\n<p>The following sections are supported:</p>\n<ul>\n<li><code>header</code>, which usually contains username, two-weeks commits calendars and a few additional data</li>\n<li><code>activity</code>, which contains recent activity (commits, pull requests, issues, etc.)</li>\n<li><code>community</code>, which contains community stats (following, sponsors, organizations, etc.)</li>\n<li><code>repositories</code>, which contains repository stats (license, forks, stars, etc.)</li>\n<li><code>metadata</code>, which contains information about generated metrics</li>\n</ul>\n<p>These are all enabled by default, but it is possible to explicitly opt out from them.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> header, activity, community, repositories, metadata<br>\n<b>allowed values:</b><ul><li>header</li><li>activity</li><li>community</li><li>repositories</li><li>metadata</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode</p>\n<p>Enabling this will consume additional API queries to fetch more data.\nThis currently improves the accuracy of the following statistics:</p>\n<ul>\n<li>total commits</li>\n<li>total issues</li>\n<li>total pull requests</li>\n<li>total pull requests reviews</li>\n<li>total repositories contributed to</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base_hireable</code></h4></td>\n    <td rowspan=\"2\"><p>Show <code>Available for hire!</code> in header section</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>base_skip</code></h4></td>\n    <td rowspan=\"2\"><p>Skip base content</p>\n<blockquote>\n<p>⚠️ Any plugin that relies on base content data may break!\nOnly use this option when using a plugin that can be configured with <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Fetched repositories</p>\n<p>A higher value result in more accurate metrics but can hit GitHub API rate-limit more easily (especially with a lot of plugins enabled)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_batch</code></h4></td>\n    <td rowspan=\"2\"><p>Fetched repositories per query</p>\n<p>If you receive <code>Something went wrong while executing your query</code> (which is usually caused by API timeouts), lowering this value may help.\nThis setting may not be supported by all plugins.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 100<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_forks</code></h4></td>\n    <td rowspan=\"2\"><p>Include forks</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_affiliations</code></h4></td>\n    <td rowspan=\"2\"><p>Repositories affiliations</p>\n<ul>\n<li><code>owner</code>: owned repositories</li>\n<li><code>collaborator</code>: repositories with push access</li>\n<li><code>organization_member</code>: repositories from an organization where user is a member</li>\n</ul>\n<p>Some plugin outputs may be affected by this setting too.</p>\n<p>Set to <code>&quot;&quot;</code> to disable and fetch all repositories related to given account.\nBroad affiliations will result in less representative metrics.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> owner<br>\n<b>allowed values:</b><ul><li>owner</li><li>collaborator</li><li>organization_member</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repositories_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Default skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>users_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Default ignored users</p>\n<p>Note that emails are only supported in commits-related elements.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> github-actions[bot], dependabot[bot], dependabot-preview[bot], actions-user, action@github.com<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>commits_authoring</code></h4></td>\n    <td rowspan=\"2\"><p>Identifiers that has been used for authoring commits</p>\n<p>Specify names, surnames, username, email addresses that has been used in the past that can be used to detect commits ownerships in some plugins</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Default metrics\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.base.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: header, activity, community, repositories, metadata\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/calendar/README.md (Tokens: ~963 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📆 Commit calendar</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display commit calendar across several years.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details><summary>Current year</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.calendar.svg\" alt=\"\"></img></details>\n      <details open><summary>Full history</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.calendar.full.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_calendar</code></h4></td>\n    <td rowspan=\"2\"><p>Enable calendar plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_calendar_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Years to display</p>\n<p>This option has different behaviours depending on its value:</p>\n<ul>\n<li><code>n &gt; 0</code> will display the last <code>n</code> years, relative to current year</li>\n<li><code>n == 0</code> will display all years starting from GitHub account registration date</li>\n<li><code>n &lt; 0</code> will display all years plus <code>n</code> additional years, relative to GitHub account registration date<ul>\n<li>Use this when there are commits pushed before GitHub registration</li>\n</ul>\n</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Current year calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.calendar.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_calendar: yes\n\n```\n```yaml\nname: Full history calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.calendar.full.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_calendar: yes\n  plugin_calendar_limit: 0\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/code/README.md (Tokens: ~1461 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>♐ Random code snippet</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays a random code snippet from recent activity history.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ When improperly configured, this plugin could display private code.\nIf you work with sensitive data or company code, it is advised to keep this plugin disabled.\nUse at your own risk, <em>metrics</em> and its authors cannot be held responsible for any resulting code leaks.</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.code.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code</code></h4></td>\n    <td rowspan=\"2\"><p>Enable code plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_lines</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (lines per code snippets)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 128)</i>\n<br>\n<b>default:</b> 12<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_load</code></h4></td>\n    <td rowspan=\"2\"><p>Events to load</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(100 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 400<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_days</code></h4></td>\n    <td rowspan=\"2\"><p>Events maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 365)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 3<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_visibility</code></h4></td>\n    <td rowspan=\"2\"><p>Events visibility</p>\n<p>Can be used to toggle private activity visibility when using a token with <code>repo</code> scope</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> public<br>\n<b>allowed values:</b><ul><li>public</li><li>all</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_code_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Showcased languages</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: JavaScript or TypeScript snippet of the day\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.code.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_code: yes\n  plugin_code_languages: javascript, typescript\n  plugin_code_load: 400\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/community/16personalities/README.md (Tokens: ~1204 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧠 16personalities</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays personality profile from a <a href=\"https://www.16personalities.com/profile\">16personalities profile</a>.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://www.16personalities.com\">16personalities</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.16personalities.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities</code></h4></td>\n    <td rowspan=\"2\"><p>Enable 16personalities plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities_url</code></h4></td>\n    <td rowspan=\"2\"><p>Profile URL</p>\n<p>This can be obtained after doing the <a href=\"https://www.16personalities.com/free-personality-test\">test on 16personalities</a> and registering an email.\nLogin with the generated password received in your mailbox and copy the link that is displayed when sharing the profile.</p>\n<img src=\"/.github/readme/imgs/plugin_16personalities_profile.png\" width=\"800\" />\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>personality</code> will display personality type</li>\n<li><code>profile</code> will display role and strategy</li>\n<li><code>traits</code> will display mind, energy, nature, tactics and identity traits</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> personality<br>\n<b>allowed values:</b><ul><li>personality</li><li>profile</li><li>traits</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_16personalities_scores</code></h4></td>\n    <td rowspan=\"2\"><p>Display traits scores</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: MBTI Personality profile\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.16personalities.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_16personalities: yes\n  plugin_16personalities_url: ${{ secrets.SIXTEEN_PERSONALITIES_URL }}\n  plugin_16personalities_sections: personality, traits\n  plugin_16personalities_scores: no\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/community/chess/README.md (Tokens: ~1376 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>♟️ Chess</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the last game you played on a supported chess platform.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with any of the supported provider.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_chess_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.chess.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess</code></h4></td>\n    <td rowspan=\"2\"><p>Enable chess plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_token</code></h4></td>\n    <td rowspan=\"2\"><p>Chess platform token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.chess.any</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_user</code></h4></td>\n    <td rowspan=\"2\"><p>Chess platform login</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_platform</code></h4></td>\n    <td rowspan=\"2\"><p>Chess platform</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>lichess.org</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_chess_animation</code></h4></td>\n    <td rowspan=\"2\"><p>Animation settings</p>\n<ul>\n<li><code>size</code> is the size of a single chessboard square in pixels (board will be 8 times larger)</li>\n<li><code>delay</code> is the delay before starting animation (in seconds)</li>\n<li><code>duration</code> is the duration of the animation of a move (in seconds)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"size\": 40,\n  \"delay\": 3,\n  \"duration\": 0.6\n}\n</code></pre></details><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a lichess.org token\n\nCreate a [lichess.org account](https://lichess.org) and select [API access tokens](https://lichess.org/account/oauth/token) to get a token.\n\n![lichess.org token](/.github/readme/imgs/plugin_chess_lichess_token_0.png)\n\nIt is not necessary to add additional scopes:\n\n![lichess.org token](/.github/readme/imgs/plugin_chess_lichess_token_1.png)\n\nCreate token and store it in your secrets:\n\n![lichess.org token](/.github/readme/imgs/plugin_chess_lichess_token_0.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Last chess game from lichess.org\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.chess.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_chess: yes\n  plugin_chess_token: ${{ secrets.CHESS_TOKEN }}\n  plugin_chess_platform: lichess.org\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/community/crypto/README.md (Tokens: ~1131 | Category: plugin-manifest) -->\n<!-- Header -->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🪙 Crypto</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\">\n    <p>This plugin generates an SVG image containing crypto metrics from a given address. It uses the CoinGecko API to fetch crypto prices.</p>\n    <p>For more information, check the <a href=\"https://www.coingecko.com/vi/api/documentation\">CoinGecko API documentation</a>.</p>\n  </td></tr>\n  <tr><th>Authors</th><td><a href=\"https://github.com/dajneem23\">@dajneem23</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported Features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td>\n      <ul>\n        <li><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></li>\n        <li><a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></li>\n      </ul>\n    </td>\n  </tr>\n  <tr>\n    <td>\n      <ul>\n        <li><code>👤 Users</code></li>\n        <li><code>👥 Organizations</code></li>\n        <li><code>📓 Repositories</code></li>\n      </ul>\n    </td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_crypto</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://via.placeholder.com/468x60?text=No%20preview%20available\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!-- /Header -->\n\n## ➡️ Available Options\n\n<!-- Options -->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto</code></h4></td>\n    <td rowspan=\"2\"><p>Enable crypto plugin</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>boolean</code><br>Default: <code>no</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_id</code></h4></td>\n    <td rowspan=\"2\"><p>Crypto id (from Coingecko)</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>string</code><br>Default: \"\"<br>Example: bitcoin<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_vs_currency</code></h4></td>\n    <td rowspan=\"2\"><p>The target currency of market data (usd, eur, jpy, etc.)</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>string</code><br>Default: \"usd\"<br>Example: \"usd\"<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_days</code></h4></td>\n    <td rowspan=\"2\"><p>Data up to number of days ago (eg. 1,14,30,max)</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>string</code><br>Default: \"1\"<br>Example: 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_crypto_precision</code></h4></td>\n    <td rowspan=\"2\"><p>The number of decimal places to use</p><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">Type: <code>number</code><br>Default: 2<br>Example: 2<br></td>\n  </tr>\n</table>\n<!-- /Options -->\n\n<!--examples-->\n```yaml\nname: Crypto Metrics\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.crypto.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_crypto: yes\n  plugin_crypto_id: bitcoin\n  plugin_crypto_vs_currency: usd\n  plugin_crypto_days: 1\n  plugin_crypto_precision: 2\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/community/fortune/README.md (Tokens: ~528 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🥠 Fortune</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugins displays a random fortune message</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.fortune.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_fortune</code></h4></td>\n    <td rowspan=\"2\"><p>Enable fortune plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Fortune\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.fortune.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_fortune: yes\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/community/nightscout/README.md (Tokens: ~1398 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💉 Nightscout</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays blood sugar values from a <a href=\"http://nightscout.info\">Nightscout</a> site.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"http://nightscout.info\">Nightscout</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/legoandmars\">@legoandmars</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/legoandmars/legoandmars/blob/master/metrics.plugin.nightscout.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout</code></h4></td>\n    <td rowspan=\"2\"><p>Enable nightscout plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_url</code></h4></td>\n    <td rowspan=\"2\"><p>Nightscout URL</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> https://example.herokuapp.com<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_datapoints</code></h4></td>\n    <td rowspan=\"2\"><p>Number of datapoints shown the graph</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 12<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_lowalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for low blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 80<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_highalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for high blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 180<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_urgentlowalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for urgently low blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 50<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_nightscout_urgenthighalert</code></h4></td>\n    <td rowspan=\"2\"><p>Threshold for urgently high blood sugar</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 250<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🌐 Setup a Nightscout instance\n\nThe [nightscout website](http://www.nightscout.info/) details how to self-host a nightscout site.\nCheck out the instructions there.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  plugin_nightscout: yes\n  plugin_nightscout_url: ${{ secrets.NIGHTSCOUT_URL }}\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/community/poopmap/README.md (Tokens: ~1209 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💩 PoopMap plugin</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays statistics from a <a href=\"https://poopmap.net\">PoopMap</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://poopmap.net\">PoopMap</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/matievisthekat\">@matievisthekat</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_poopmap_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/matievisthekat/matievisthekat/blob/master/metrics.plugin.poopmap.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_poopmap</code></h4></td>\n    <td rowspan=\"2\"><p>Enable poopmap plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_poopmap_token</code></h4></td>\n    <td rowspan=\"2\"><p>PoopMap API token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_poopmap_days</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>default:</b> 7<br>\n<b>allowed values:</b><ul><li>7</li><li>30</li><li>180</li><li>365</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a PoopMap token\n\nInstall PoopMap app ([iOS](https://itunes.apple.com/us/app/poop-map/id1303269455?mt=8)/[Android](https://play.google.com/store/apps/details?id=net.poopmap)) and create an account.\n\nNavigate to your profile in the app\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/45036977/143533812-c2776bcc-1fda-441e-bc96-cf21d4c69ca1.jpg\" width=\"150\" />\n</div>\n\nTap \"Share Profile\" in the top right\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/45036977/143533849-b7e03b4d-2903-4339-bbb7-e1fc0ea9724e.jpg\" width=\"150\" />\n</div>\n\nTap \"Copy to Clipboard\"\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/45036977/143533856-f4a9fc0d-7bde-48c2-b579-e8ee91804d78.jpg\" width=\"150\" />\n</div>\n\nIt should result in something like `Haha, check out the places I've pooped on Poop Map https://api.poopmap.net/map?token=xxxxxxxxxx` copied.\n\nExtract the `token` query parameter from the link and use it in `plugin_poopmap_token`.\nThis token will not expire and it will be able to access only public details.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  plugin_poopmap_token: ${{ secrets.POOPMAP_TOKEN }}\n  plugin_poopmap: yes\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/community/README.md (Tokens: ~4741 | Category: plugin-manifest) -->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎲 Community plugins</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\">Additional plugins maintained by community for even more features!</td></tr>\n  <tr>\n    <th><a href=\"/source/plugins/community/16personalities/README.md\">🧠 16personalities</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n    <th><a href=\"/source/plugins/community/chess/README.md\">♟️ Chess</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.16personalities.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.chess.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/crypto/README.md\">🪙 Crypto</a><br><sup>by <a href=\"https://github.com/dajneem23\">@dajneem23</a></sup></th>\n    <th><a href=\"/source/plugins/community/fortune/README.md\">🥠 Fortune</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://via.placeholder.com/468x60?text=No%20preview%20available\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.fortune.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/nightscout/README.md\">💉 Nightscout</a><br><sup>by <a href=\"https://github.com/legoandmars\">@legoandmars</a></sup></th>\n    <th><a href=\"/source/plugins/community/poopmap/README.md\">💩 PoopMap plugin</a><br><sup>by <a href=\"https://github.com/matievisthekat\">@matievisthekat</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/legoandmars/legoandmars/blob/master/metrics.plugin.nightscout.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/matievisthekat/matievisthekat/blob/master/metrics.plugin.poopmap.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/screenshot/README.md\">📸 Website screenshot</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n    <th><a href=\"/source/plugins/community/splatoon/README.md\">🦑 Splatoon</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.screenshot.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.splatoon.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>  <tr>\n    <th><a href=\"/source/plugins/community/stock/README.md\">💹 Stock prices</a><br><sup>by <a href=\"https://github.com/lowlighter\">@lowlighter</a></sup></th>\n    <th></th>\n  </tr>\n  <tr>\n    <td  align=\"center\">\n      <img alt=\"\" width=\"400\" src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stock.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n<td align=\"center\"><img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n</table>\n\n## 📪 Creating community plugins\n\nPlugins creation requires you to be comfortable with JavaScript, HTML, CSS and [EJS](https://github.com/mde/ejs).\n\n### 💬 Before creating a new plugin\n\nBe sure to read [contribution guide](/CONTRIBUTING.md) and [architecture](/ARCHITECTURE.md) first.\n\n> ℹ️ *metrics* maintainers have no obligation towards community plugins support and may redirect any help, feature or fix requests from other users to you. Of course you are not bound to work on it, but it would be great if you plan to merge a plugin in the main repository\n\nPlease respect the following guidelines:\n\n- A plugin should be independent and should not rely on other plugins\n  - [🧱 core](/source/plugins/core/README.md) and [🗃️ base](/source/plugins/base/README.md) output can be reused though\n- A plugin should never edit its original arguments, as it is shared amongst other plugins and would create unattended side effects\n- Use `imports.metadata.plugins.{plugin-name}.inputs()` to automatically type check and default user inputs through defined `metadata.yml`\n- Plugin options should respect the \"lexical field\" of existing option to keep consistency\n- Plugin errors should be handled gracefully by partials with error message\n- New dependencies should be avoided, consider using existing `imports`\n- Spawning sub-process should be avoided, unless absolute necessity\n  - Use `imports.which()` to detect whether a command is available\n  - Use `imports.run()` to run a command\n    - Pass `{prefixed: true}` to wrap automatically command with [WSL](https://docs.microsoft.com/windows/wsl/about) on Windows\n  - It is required to work on Linux Ubuntu (as the GitHub action run on it)\n\n> 💡 While the following guide intend to explain the creation process of new plugin, it may also be a good idea to see what existing plugins looks like and see if you want to embark on the adventure!\n\n### 💬 Quick-start\n\nTo create a new plugin, clone and setup this repository first:\n```shell\ngit clone https://github.com/lowlighter/metrics.git\ncd metrics/\nnpm install\n```\n\nFind a cool name and an [unused emoji](https://emojipedia.org) for your new plugin and run the following:\n```shell\nnpm run quickstart plugin <plugin_name>\n```\n\n> ⚠️ Community plugins cannot have the same name as official plugins. *metrics* maintainers may also reserve a plugin name for future usage and may ask you to rename it in case of conflicts\n\nIt will create a new directory in `/source/plugins/community` with the following file structure:\n* `/source/plugins/community/{plugin-name}`\n  * `README.md`\n  * `metadata.yml`\n  * `examples.mjs`\n  * `index.mjs`\n\nPlugins are auto-loaded based on their folder existence, so there's no need to register them somewhere.\n\n### 💬 Filling `metadata.yml`\n\n`metadata.yml` is a required file which describes supported account types, output formats, scopes, etc.\n\nThe default file looks like below:\n```yaml\nname: \"🧩 Plugin name\"\ncategory: community\ndescription: Short description\nexamples:\n  default: https://via.placeholder.com/468x60?text=No%20preview%20available\nauthors:\n  - octocat\nsupports:\n  - user\n  - organization\n  - repository\nscopes: []\ninputs:\n\n  plugin_{name}:\n    description: Enable {name} plugin\n    type: boolean\n    default: no\n```\n\n> 💡 It is important to correctly define `metadata.yml` because *metrics* will use its content for various usage\n\n[`🧱 core`](/source/plugins/core/README.md) plugin (which is always called) will automatically verify user inputs against `supports` and `inputs` values and throw an error in case of incompatibility.\n\n`name`, `description`, `scopes`, `examples` are used to auto-generate documentation in the `README.md`. For community plugins, `examples` should be set with auto-generated examples of your own profile.\n\n`authors` should contain your GitHub username\n\n`category` should be set to `community`.\n\nBecause of GitHub Actions original limitations, only strings, numbers and boolean were actually supported by `action.yml`. *metrics* implemented its own `inputs` validator to circumvent this. It should be pretty simple to use.\n\n*Example: boolean type, defaults to `false`*\n```yml\n  plugin_{name}_{option}:\n    description: Boolean type\n    type: boolean\n    default: no\n```\n\n```yml\n  plugin_{name}_{option}:\n    description: String type\n    type: string\n    default: .user.login\n```\n\n> 💡 `.user.login`, `.user.twitter` and `.user.website` are special default values that will be respectively replaced by user's login, Twitter username and attached website. Note that these are not available if `token: NOT_NEEDED` is set by user\n\n*Example: string type, defaults to `foo` with `foo` or `bar` as allowed values*\n```yml\n  plugin_{name}_{option}:\n    description: Select type\n    type: string\n    values:\n      - foo\n      - bar\n    default: foo\n```\n\n> 💡 `values` restricts what can be passed by user\n\n*Example: number type, defaults to `1` and expected to be between `0` and `100`*\n```yml\n  plugin_{name}_{option}:\n    description: Number type\n    type: number\n    default: 1\n    min: 0\n    max: 100\n```\n\n> 💡 `min` and `max` restricts what can be passed by user. Omit these to respectively remove lower and upper limits.\n\n> 💡 Zero may have a special behaviour (usually to disable limitations), if that's the case add a `zero` attribute (e.g. `zero: disable`) to reference this in documentation\n\n*Example: array type, with comma-separated elements*\n```yml\n  plugin_{name}_{option}:\n    description: Array type\n    type: array\n    format: comma-separated\n    values:\n      - foo\n      - bar\n    default: foo, bar\n```\n\n> 💡 An array can be either `comma-separated` or `space-separated`, and will split user input by mentioned separator. Each value is trimmed and lowercased.\n\n*Example: json type*\n```yml\n  plugin_{name}_{option}:\n    description: JSON type\n    type: json\n    default: |\n      {\n        \"foo\": \"bar\"\n      }\n```\n\n> 💡 JSON types should be avoided when possible, as they're usually kind of unpractical to write within a YAML document\n\nFor complex inputs, pass an `example` that will be displayed as a placeholder on web instances.\n\nWhen calling `imports.metadata.plugins.{plugin-name}.inputs({data, account, q})`, an object with verified user inputs and correct typing will be returned.\n\nAny invalid input will use have the `default` value instead.\n\n> ⚠️ Returned object will use the web syntax for options rather than the action one. It means that `plugin_` prefix is dropped, and all underscores (`_`) are replaced by dots (`.`)\n\n*Example: validating user inputs*\n```javascript\nlet {limit, \"limit.field\":limit_field} = imports.metadata.plugins.myplugin.inputs({data, account, q})\nconsole.assert(limit === true)\n```\n\n### 💬 Filling `index.mjs`\n\nPlugins use [JavaScript modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules).\n\nThe default exported module of `index.mjs` will be auto-loaded when *metrics* start.\n\nBelow is a breakdown of basic `index.mjs` content\n```js\nexport default async function(\n  //Shared inputs\n  {\n    login, //GitHub username\n    q, //Raw user inputs (dot notation without plugin_ prefix, don't use it directly)\n    imports, //Various utilities (axios, puppeteer, fs, etc., see /source/app/metrics/utils.mjs)\n    data, //Raw data from core/base plugin\n    computed, //Computed data from core/base plugin\n    rest, //Rest authenticated GitHub octokit\n    graphql, //Graph QL authenticated GitHub octokit\n    queries, //Autoloaded queries from ./queries\n    account, //Account type (\"user\" or \"organization\")\n  },\n  //Settings and tokens\n  {\n    enabled = false,\n    extras = false,\n  } = {}) {\n    //Plugin execution\n    try {\n      //Check if plugin is enabled and requirements are met\n      if ((!q.my_plugin)||(imports.metadata.plugins.my_plugin.enabled(enabled, {extras})))\n        return null\n\n      //Automatically validate user inputs\n      //An error will be thrown if `account` type is not supported\n      //Inputs will have correct typing from `metadata.yml` and unset or invalid options will be set to default\n      let {option} = imports.metadata.plugins.my_plugin.inputs({data, account, q})\n\n      //Automatically template query from /source/plugins/myplugin/queries/myquery.graph ql\n      const {[account]:stuff} = await graphql(queries.myplugin.myquery({login, account, option}))\n\n      //Results\n      return {stuff}\n    }\n    //Handle errors\n    catch (error) {\n      throw imports.format.error(error)\n    }\n}\n```\n\n> ⚠️ Remember, a plugin should never edit its original arguments, as it is shared amongst other plugins and would create unattended side effects\n\n### 💬 Creating partials\n\nJust create a new `.ejs` file in `partials` folder from templates you wish to support, and reference it into their `partials/_.json`.\n\nPlugin partials should be able to handle gracefully their own state and errors.\n\nBelow is a minimal snippet of a partial:\n```ejs\n<% if (plugins.{plugin_name}) { %>\n  <% if (plugins.{plugin_name}.error) { %>\n    <%= plugins.{plugin_name}.error.message %>\n  <% } else { %>\n    <%# content %>\n  <% } %>\n<% } %>\n```\n\nPartials should have the match the same name as plugin handles, as they're used to display plugin compatibility in auto-generated header.\n\n[EJS](https://github.com/mde/ejs) framework is used to template content through templating tags (``).\n\n### 💬 Filling `README.md`\n\n`README.md` is used as documentation.\n\nMost of it will is auto-generated by `metadata.yml` and `examples.yml` content, so usually it is not required to manually edit it.\n\nThe default content looks like below:\n```markdown\n<ǃ--header-->\n<ǃ--/header-->\n\n## ➡️ Available options\n\n<ǃ--options-->\n<ǃ--/options-->\n\n## ℹ️ Examples workflows\n\n<ǃ--examples-->\n<ǃ--/examples-->\n```\n\n- `<ǃ--header-->` will be replaced by an auto-generated header containing plugin name, supported features and output examples based on `metadata.yml`\n- `<ǃ--options-->` will be replaced by an auto-generated table containing all referenced option from `metadata.yml`\n- `<ǃ--examples-->` will be replaced by workflows from `examples.yml`\n\n> ⚠️ Do not replace these auto-generated placeholder yet! They will be built by the ci workflow and will help making your pull request easier to read\n\nWhen a plugin requires a token, please add a `## 🗝️ Obtaining a {service} token` section after the available options section.\n\nComplex features may also be documented in additional sections after available options section options if required.\n\nTry to respect current format of `README.md` from other plugins and use a neutral and impersonal writing style if possible.\n\n### 💬 Filling `examples.yml`\n\nWorkflow examples from `examples.yml` are used as unit testing and to auto-generate documentation in the `README.md`.\n\nIt uses the same syntax as GitHub action and looks like below:\n```yml\n- name: Test name\n  uses: lowlighter/metrics@latest\n  with:\n    filename: metrics.plugin.{name}.svg\n    token: ${{ secrets.METRICS_TOKEN }}\n    base: \"\"\n    plugin_{name}: yes\n  prod:\n    skip: true\n  test:\n    timeout: 1800000\n    modes:\n      - action\n      - web\n      - placeholder\n```\n\n> 💡 Tests are executed in a mocked environment to avoid causing charges on external services. It may be required to create mock testing files.\n\n`test` is usually not needed and optional but can be set to set a custom timeout (for plugins with a high execution time) and `modes` can be used to restrict which environment should be used.\n\n`prod` should keep `skip: true` as you should use your own render outputs as examples.\n\n### 💬 Testing locally and creating mocked data\n\nThe easiest way to test a new plugin is to setup a web instance locally ([see documentation](.github/readme/partials/documentation/setup/local.md)).\n\nOnce server is started, open a browser and try to generate an output with your new plugin enabled and check if it works as expected:\n```\nhttp://localhost:3000/username?base=0&my-plugin=1\n```\n\n> 💡 You may need to configure your server first by editing `settings.json`. Ensure that:\n> - `token` is correctly set when working with GitHub APIs\n> - `plugins.default` is set to `true` as plugins are disabled by default\n>   - or enable your plugins by manually in `plugins`.`my-plugin`.`enabled`\n> -  `debug` is set to `true` for more verbose output\n\nWhen your plugin is finalized, you may need to create mocked data if it either uses GitHub APIs or any external service.\n\nThey must be created in `tests/mocks/api`:\n- use `github` directory for all related GitHub APIs data\n- use `axios` directory for all external service that you call using `imports.axios`\n\n> 💡 Files from these directories are auto-loaded, so it is just required to create them with faked data.\n\nFinally [/source/app/web/statics/app.placeholder.js](/source/app/web/statics/app.placeholder.js) to add mocked placeholder data to make users using the shared instance able to preview a render locally without any server computation.\n\n### 💬 Submitting a pull request\n\nIf you made it until there, congratulations 🥳!\n\nYou're almost done, review the following checklist before submitting a pull request:\n- [x] I have correctly filled `metadata.yml`\n  - [x] `name` is set with an unused emoji and plugin name\n  - [x] `category` is set to `community`\n  - [x] `examples` contains links towards a rendered output hosted by you\n  - [x] `authors` contains my GitHub username\n  - [x] `supports` list which account type are supported\n  - [x] `scopes` are correctly listed with their associated names on GitHub (leave an empty array if not applicable)\n  - [x] `inputs` are correctly filled\n- [x] I have implemented my plugin\n  - [x] `index.mjs` respects the plugins guidelines\n- [x] I have tested my plugin locally\n  - [x] `tests/mocks` ... have been created\n  - [x] `app.placeholder.js` has been updated for preview from web instances\n  - [x] `examples.yml` contains workflows examples (at least one is required)\n    - [x] `skip: true` has been set for `prod` attribute in each test\n  - [x] `npm run linter` yields no errors\n- [x] I have documented my plugin\n  - [x] `README.md` eventually describes complex setup or options (if applicable)\n- [x] I am ready!\n  - [x] Checkout any generated files (in fact, don't run `npm run build`)\n  - [x] Commit and push your changes (commits are squashed, no need to rebase)\n  - [x] Open a new [pull request](https://github.com/lowlighter/metrics/pulls)\n  - [x] Post a screenshot or a render in the pull request so it can be previewed\n\n> 💡 A pull request **will need** to have passing builds and an example screenshot if you want to get it merged.\n> Maintainers may request changes in some cases\n\n> 🎊 Thanks a lot for your contribution!\n\n<!-- File: source/plugins/community/screenshot/README.md (Tokens: ~1582 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📸 Website screenshot</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays a screenshot from any website.</p>\n<p>It can either show the full page or a portion restricted by a <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors\">CSS selector</a>.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.screenshot.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot</code></h4></td>\n    <td rowspan=\"2\"><p>Enable screenshot plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_title</code></h4></td>\n    <td rowspan=\"2\"><p>Title caption</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> Screenshot<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_url</code></h4></td>\n    <td rowspan=\"2\"><p>Website URL</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_selector</code></h4></td>\n    <td rowspan=\"2\"><p>CSS Selector</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> body<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_mode</code></h4></td>\n    <td rowspan=\"2\"><p>Output mode</p>\n<ul>\n<li><code>image</code>: screenshot of selected element</li>\n<li><code>text</code>: keep <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText\"><code>innerText</code></a> of selected element<ul>\n<li><em>⚠️ Any CSS style applied to text such as font size, weight or color will be removed</em></li>\n</ul>\n</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> image<br>\n<b>allowed values:</b><ul><li>image</li><li>text</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_viewport</code></h4></td>\n    <td rowspan=\"2\"><p>Viewport options</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"width\": 1280,\n  \"height\": 1280\n}\n</code></pre></details><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_wait</code></h4></td>\n    <td rowspan=\"2\"><p>Wait time before taking screenshot (ms)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_screenshot_background</code></h4></td>\n    <td rowspan=\"2\"><p>Background</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: XKCD of the day\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.screenshot.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_screenshot: yes\n  plugin_screenshot_title: XKCD of the day\n  plugin_screenshot_url: https://xkcd.com\n  plugin_screenshot_selector: \"#comic img\"\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/community/splatoon/README.md (Tokens: ~2415 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🦑 Splatoon</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays your Splatoon 3 recent matches based on data fetched from Splatnet.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://www.nintendo.com\">Nintendo</a> or <a href=\"https://splatoon.nintendo.com\">Splatoon</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n<p>This specific plugin is licensed under GPL-3.0 rather than MIT to comply with <a href=\"https://github.com/spacemeowx2/s3si.ts\">spacemeowx2/s3si.ts</a> license.</p>\n<p>Note that <em>Nintendo Switch Online</em> web tokens usage are not explicitly allowed by <em>Nintendo</em>, use at your own risk.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_splatoon_token</code> <code>🗝️ plugin_splatoon_statink_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.splatoon.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon</code></h4></td>\n    <td rowspan=\"2\"><p>Enable splatoon plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_token</code></h4></td>\n    <td rowspan=\"2\"><p>Splatnet token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.nintendo.splatnet</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>player</code> for overall player recap</li>\n<li><code>versus</code> for <em>Turf war</em> and <em>Anarchy battle</em> matches</li>\n<li><code>salmon-run</code> for <em>Salmon run next wave</em> matches</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> player, versus, salmon-run<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_versus_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Versus)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 6)</i>\n<br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_salmon_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (Salmon run)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 6)</i>\n<br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_statink</code></h4></td>\n    <td rowspan=\"2\"><p>stat.ink integration</p>\n<p>If set, fetched data will also be uploaded to stat.ink\nRequires <a href=\"/source/plugins/community/splatoon/README.md#plugin_splatoon_statink_token\"><code>plugin_splatoon_statink_token</code></a> to be set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.statink</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_statink_token</code></h4></td>\n    <td rowspan=\"2\"><p>stat.ink token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_splatoon_source</code></h4></td>\n    <td rowspan=\"2\"><p>Source</p>\n<ul>\n<li><code>splatnet</code> will fetch data from Splatnet using <a href=\"https://github.com/spacemeowx2/s3si.ts\">spacemeowx2/s3si.ts</a> tool</li>\n<li><code>local</code> will assume <code>s3si/export</code> directory already exists and is populated (use this when developping new features for this plugin to save network resources and time)</li>\n<li><code>mocks</code> will use <code>s3si/mocks</code> directory (use this when developping new features for this plugin to avoid setting up a NSO token)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> splatnet<br>\n<b>allowed values:</b><ul><li>splatnet</li><li>local</li><li>mocks</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a *Nintendo Switch Online* token\n\nThe helper script is intended to be run by [deno runtime](https://deno.land/). Either [install it locally](https://deno.land/manual/getting_started/installation) or use its [docker image](https://hub.docker.com/r/denoland/deno).\n\nRun the following command in your terminal and follow instructions:\n```bash\ndeno run --allow-run=deno --allow-read=profile.json --allow-write=profile.json --unstable https://raw.githubusercontent.com/lowlighter/metrics/master/source/plugins/community/splatoon/token.ts\n```\n\n![Script](/.github/readme/imgs/plugin_splatoon_script.png)\n\n![Authentication](/.github/readme/imgs/plugin_splatoon_auth.png)\n\n## 🐙 [stat.ink](https://stat.ink) integration\n\nIt is possible to make this plugin automatically export fetched games to [stat.ink](https://stat.ink) by adding the following:\n\n```yaml\nplugin_splatoon_statink: yes\nplugin_splatoon_statink_token: ${{ secrets.SPLATOON_STATINK_TOKEN }}\n```\n\n[stat.ink](https://stat.ink) API key can be found on user profile:\n\n![stat.ink](/.github/readme/imgs/plugin_splatoon_statink.png)\n\n## 👨‍💻 About\n\nData are fetched using [spacemeowx2/s3si.ts](https://github.com/spacemeowx2/s3si.ts) tool (which is itself based on [frozenpandaman/s3s](https://github.com/frozenpandaman/s3s)).\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Splatnet data\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.splatoon.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_splatoon: yes\n  plugin_splatoon_token: ${{ secrets.SPLATOON_TOKEN }}\n\n```\n```yaml\nname: Splatnet data with stat.ink integration\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.splatoon.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_splatoon: yes\n  plugin_splatoon_token: ${{ secrets.SPLATOON_TOKEN }}\n  plugin_splatoon_statink: yes\n  plugin_splatoon_statink_token: ${{ secrets.SPLATOON_STATINK_TOKEN }}\n  extras_css: |\n    h2 { display: none !important; }\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/community/stock/README.md (Tokens: ~1516 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💹 Stock prices</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the stock market price of a given company.</p>\n</td></tr>\n<tr><th>Authors</th><td><a href=\"https://github.com/lowlighter\">@lowlighter</a></td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_stock_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.stock.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock</code></h4></td>\n    <td rowspan=\"2\"><p>Enable stock plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.d3</i></li>\n<li><i>metrics.api.yahoo.finance</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_token</code></h4></td>\n    <td rowspan=\"2\"><p>Yahoo Finance token</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_symbol</code></h4></td>\n    <td rowspan=\"2\"><p>Company stock symbol</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_duration</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<ul>\n<li><code>1d</code>: Today</li>\n<li><code>5d</code>: 5 days</li>\n<li><code>1mo</code>: 1 month</li>\n<li><code>3mo</code>: 3 months</li>\n<li><code>6mo</code>: 6 months</li>\n<li><code>1y</code>: 1 year</li>\n<li><code>2y</code>: 2 years</li>\n<li><code>5y</code>: 5 years</li>\n<li><code>10y</code>: 10 years</li>\n<li><code>ytd</code>: Year to date</li>\n<li><code>max</code>: All time</li>\n</ul>\n<p>This is relative to current date</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 1d<br>\n<b>allowed values:</b><ul><li>1d</li><li>5d</li><li>1mo</li><li>3mo</li><li>6mo</li><li>1y</li><li>2y</li><li>5y</li><li>10y</li><li>ytd</li><li>max</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_stock_interval</code></h4></td>\n    <td rowspan=\"2\"><p>Time interval between points</p>\n<ul>\n<li><code>1m</code>: 1 minute</li>\n<li><code>2m</code>: 2 minutes</li>\n<li><code>5m</code>: 5 minutes</li>\n<li><code>15m</code>: 15 minutes</li>\n<li><code>60m</code>: 60 minutes</li>\n<li><code>1d</code>: 1 day</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 5m<br>\n<b>allowed values:</b><ul><li>1m</li><li>2m</li><li>5m</li><li>15m</li><li>60m</li><li>1d</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗝️ Obtaining a RapidAPI Yahoo Finance token\n\nCreate a [RapidAPI account](https://rapidapi.com) and subscribe to [Yahoo Finance API](https://rapidapi.com/apidojo/api/yahoo-finance1) to get a token.\n\n![RapidAPI token](/.github/readme/imgs/plugin_stock_token.png)\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Stock prices from Tesla\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.stock.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_stock: yes\n  plugin_stock_token: ${{ secrets.STOCK_TOKEN }}\n  plugin_stock_symbol: TSLA\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/contributors/README.md (Tokens: ~1923 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🏅 Repository contributors</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin display repositories contributors from a commit range along with additional stats.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>By contribution types</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.contributors.categories.svg\" alt=\"\"></img></details>\n      <details><summary>By number of contributions</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.contributors.contributions.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors</code></h4></td>\n    <td rowspan=\"2\"><p>Enable contributors plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_base</code></h4></td>\n    <td rowspan=\"2\"><p>Base reference</p>\n<p>Can be a commit, tag, branch, etc.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_head</code></h4></td>\n    <td rowspan=\"2\"><p>Head reference</p>\n<p>Can be a commit, tag, branch, etc.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> master<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored users</p>\n<p>Can be used to ignore bots activity</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>users_ignored</code><br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_contributions</code></h4></td>\n    <td rowspan=\"2\"><p>Contributions count</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>contributors</code>: all contributors</li>\n<li><code>categories</code>: contributors sorted by contributions categories (must be configured with <a href=\"/source/plugins/contributors/README.md#plugin_contributors_categories\"><code>plugin_contributors_categories</code></a>)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> contributors<br>\n<b>allowed values:</b><ul><li>contributors</li><li>categories</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_contributors_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Contribution categories</p>\n<p>This option requires <a href=\"/source/plugins/contributors/README.md#plugin_contributors_sections\"><code>plugin_contributors_sections</code></a> to have <code>categories</code> in it to be effective.\nPass a JSON object mapping category with file globs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n</ul>\n<b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{\n  \"📚 Documentation\": [\"README.md\", \"docs/**\"],\n  \"💻 Code\": [\"source/**\", \"src/**\"],\n  \"#️⃣ Others\": [\"*\"]\n}\n</code></pre></details><br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🗂️ Setting up contribution categories\n\nPass a JSON object to `plugin_contributors_categories` with categories names as keys and arrays of file globs as values to configure contributions categories.\n\nEach modified file by a contributor matching a file glob will add them in said category.\n\n> 💡 File matching respect keys order\n\n> 💡 Use `|` YAML multiline operator for better readability\n\n*Example: *\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_contributors: yes\n    plugin_contributors_categories: |\n      {\n        \"📚 Documentation\": [\"README.md\", \"docs/**\"],\n        \"💻 Code\": [\"source/**\", \"src/**\"],\n        \"#️⃣ Others\": [\"*\"]\n      }\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Contributors with contributions count\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.contributors.contributions.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_contributors: yes\n  plugin_contributors_contributions: yes\n\n```\n```yaml\nname: Contributors by categories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.contributors.categories.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_contributors: yes\n  plugin_contributors_sections: categories\n  plugin_contributors_categories: |\n    {\n      \"🧩 Plugins / 🖼️ templates\":[\"source/plugins/**\", \"source/templates/**\"],\n      \"📚 Documentation\":[\"README.md\", \"**/README.md\", \"**/metadata.yml\"],\n      \"💻 Code (other)\":[\"source/**\", \"Dockerfile\"]\n    }\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/core/README.md (Tokens: ~12693 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🧱 Core</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>Global configuration and options</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ token</code> <code>🗝️ committer_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n[➡️ Jump to all available options](#%EF%B8%8F-available-options)\n\n## 🌐 Configure used timezone\n\nBy default, dates use Greenwich meridian (GMT/UTC).\n\nConfigure `config_timezone` (see [supported timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) to avoid time offsets.\n\n*Example: configuring timezone*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_timezone: Europe/Paris\n```\n\n## 📦 Ordering content\n\nContent can be manually ordered using `config_order` option.\n\n*Example: display base.header, isocalendar, languages and stars in this specific order*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    base: header\n    plugin_isocalendar: yes\n    plugin_languages: yes\n    plugin_stars: yes\n    config_order: base.header, isocalendar, languages, stars\n```\n\n> 💡 Omitted sections will be appended at the end using default order\n\n> ℹ️ The handles to use for each plugin and sections is based on the [`partials/_.json`](/source/templates/classic/partials/_.json) of the template.\n> It may not necessarily be the plugin id (e.g. `base.header`, `base.activity+community`, `base.repositories`, etc.).\n\n## 🔕 Skipping repositories in plugins\n\nSome plugins support a `plugin_*_skipped` option which is used to skipped repositories from result. It inherits the global option [`repositories_skipped`](/source/plugins/base/README.md#repositories_skipped) which makes it easier to ignore repositories from all plugins at once.\n\nThese options support two different syntaxes:\n\n### Basic pattern matching\n\nSkip repositories by:\n- using their full handle (e.g. `user/repo`)\n- using only their name (e.g. `repo`)\n  - *in this case, the owner may be implicitly set to current `user` option*\n\n*Example: skipping repositories with basic pattern matching*\n```yml\nrepositories_skipped: my-repo, user/my-repo\n```\n\n> 💡 Either comma or newlines can be used to separate basic patterns\n\n### Advanced pattern matching\n\nTo enable advanced pattern matching to skip repositories, include `@use.patterns` at the beginning of the option value.\n\nSkip repositories by writing file-glob patterns, with any of the supported operation:\n- `#` to write comments\n- `-` to exclude repositories\n  - *the `-` is implicit and may be omitted from excluding patterns*\n- `+` to include back repositories\n\n> ℹ️ *metrics* use [isaacs/minimatch](https://github.com/isaacs/minimatch) as its file-glob matcher\n\n*Example: skipping repositories with basic advanced matching*\n```yml\nrepositories_skipped: |\n  @use.patterns\n\n  # Skip a specific repository (both patterns are equivalent)\n  user/repo\n  -user/repo\n\n  # Skip repositories matching a given pattern\n  user/repo-*\n  {user1, user2, user3}/*\n\n  # Include back a previously skipped repository\n  org/repo\n  +org/include-this-repo\n```\n\n> ℹ️ Unlike basic pattern matching, patterns are always tested against the full repository handle (the user will not be implicitly added)\n\n> ⚠️ As patterns may contain commas, be sure to use newlines rather than commas as separator to ensure patterns are correctly parsed\n\n## 🪛 Using presets\n\nIt is possible to reuse the same configuration across different repositories and workflows using configuration presets.\nA preset override the default values of inputs, and multiple presets can be provided at once through URLs or file paths.\n\nOptions resolution is done in the following order:\n- default values\n- presets, from first to last\n- user values\n\n*Example: using a configuration preset from an url*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_presets: https://raw.githubusercontent.com/lowlighter/metrics/presets/lunar-red/preset.yaml\n```\n\nSome presets are hosted on this repository on the [`@presets`](https://github.com/lowlighter/metrics/tree/presets) branch and can be used directly by using their identifier prefixed by an arobase (`@`).\n\n*Example: using a pre-defined configuration preset*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_presets: \"@lunar-red\"\n```\n\n> ⚠️ `🔐 Tokens` and options marked with `⏯️ Cannot be preset`, as they suggest, cannot be preset and thus requires to be explicitly defined to be set.\n\n> ℹ️ Presets configurations use [schemas](https://github.com/lowlighter/metrics/tree/presets/%40schema) to ensure compatibility between format changes\n\n## 🎨 Custom CSS styling\n\nAdditional CSS can be injected using `extras_css` option.\n\n*Example: changing the color of `h2`*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    base: header\n    extras_css: |\n      h2 {\n        color: red;\n      }\n```\n\n> 💡 *metrics* does not use `!important` keyword, so use it when having trouble when styling is not applied\n\n> 💡 If you make an heavy use of this option, creating a [community templates](/source/templates/community/README.md) may be a better alternative\n\n> ⚠️ CSS styles may slightly change between releases, backward compatibility is not guaranteed!\n\n## 🗳️ Custom JavaScript scripting\n\nAdditional JavaScript can be injected using `extras_js` option.\n\n*Example: removing all `h2`*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    base: header\n    extras_js: |\n      document.querySelectorAll(\"h2\")?.forEach(h2 => h2.remove())\n```\n\n> ℹ️ JavaScript is executed in puppeteer context during the rendering phase, **not** in *metrics* context.\n> It will be possible to access `document` and all other features accessible like if the SVG was opened in a browser page\n\n> 💡 If you make an heavy use of this option, creating a [community templates](/source/templates/community/README.md) may be a better alternative\n\n> ⚠️ HTML elements may slightly change between releases, backward compatibility is not guaranteed!\n\n## 🔲 Adjusting padding\n\nSVG rendering is dependent on operating system, browser and fonts combination and may look different across different platforms.\n\nIt may not look like it, but computing the height of a SVG is not trivial. *metrics* spawns an headless browser and try to do its best to resize the result, but it may sometimes ends up in either cropped or oversized images.\n\nTweak `config_padding` option to manually adjust padding and solve this issue.\n\nThis settings supports the following format:\n- 1 value for both width and height\n- 2 values for width first and height second, separated by a comma (`,`)\n\n> 💡 Both negative and positive values are allowed\n\nEach value need to respect the following format:\n- {number}\n- {number} + {number}%\n- {number}%\n\n> 💡 Percentage based values are relative to the height computed by puppeteer\n\n*Example: add 10px padding for both width and height*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_padding: 10\n```\n\n*Example: add 10px padding to height and increase it by 8%*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_padding: 0, 10 + 8%\n```\n\n*Example: remove 10% from height*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_padding: 0, -10%\n```\n\n## ↔️ Controlling display size\n\nSome templates may support different output display size.\n\nA `regular` display size will render a medium-sized image suitable for both desktop and mobile displays, while a `large` one will be more suitable only for desktop and some plugins (like [`📌 topics`](/source/plugins/topics/README.md) or [`🏅 contributors`](/source/plugins/contributors/README.md))\n\nThe `columns` display will render a full-width image with automatic resizing: two columns for desktop and a single one column for mobiles.\n\n*Example: output a PNG image*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_display: large\n```\n\n## 💱 Configuring output format\n\nUse `config_output` to change output format.\n\n*Example: output a PNG image*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_output: png\n```\n\nA JSON output can be used to retrieved collected data and use it elsewhere.\n\n*Example: output a JSON data dump*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_output: json\n```\n\nWhen using a PDF output, it is advised to set `config_base64: yes` to encode embed images in base64 in order to make self-contained documents.\n\n*Example: output a self-contained PDF document*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    markdown: TEMPLATE.md\n    config_output: markdown-pdf\n    config_base64: yes\n```\n\n## ✨ Render `Metrics insights` statically\n\nIt is possible to generate a self-contained HTML file containing `✨ Metrics insights` output by using `config_output: insights`.\n\n> 💡 Note that like `✨ Metrics insights` content is not configurable, thus any other plugin option will actually be ignored\n\n*Example: output `✨ Metrics insights` report*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_output: insights\n```\n\n## 🧶 Configuring output action\n\nBefore configuring output action, ensure that workflows permissions are properly set.\nThese can be changed either through repository settings in Actions tab:\n\n![Setting workflows permissions](/.github/readme/imgs/setup_workflow_permissions.light.png#gh-light-mode-only)\n![Setting workflows permissions](/.github/readme/imgs/setup_workflow_permissions.dark.png#gh-dark-mode-only)\n\nOr more granulary [at job or workflow level](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token).\n\n### Using commits (default)\n\nUse `output_action: commit` to make the action directly push changes to `committer_branch` with a commit.\nA custom commit message can be used through `committer_message`.\n\n> 💡 *metrics* will automatically ignore push events with a commit message containing `[Skip GitHub Action]` or `Auto-generated metrics for run #` to avoid infinite loops. Note that by default, GitHub already ignore events pushed by `${{ github.token }}` or containing `[skip ci]` in commit message\n\n*Example: push output to metrics-renders branch rather than the default branch*\n```yaml\nmetrics:\n  permissions:\n    contents: write\n  steps:\n    - uses: lowlighter/metrics@latest\n      with:\n        output_action: commit\n        committer_branch: metrics-renders\n        committer_message: \"chore: update metrics\"\n```\n\n### Using pull requests\n\nUse `output_action: pull-request` to make the action open a new pull request and push changes from the same run on it.\n\nThe last step should use either `pull-request-merge`, `pull-request-squash` or `pull-request-rebase` to merge changes to `committer_branch`.\n\n> 💡 When using `pull-request` output action, do not forget to change `filename` too or previous output will be overwritten!\n\n*Example: push two outputs using a merge pull request*\n```yaml\nmetrics:\n  permissions:\n    contents: write\n    pull-requests: write\n  steps:\n    - uses: lowlighter/metrics@latest\n      with:\n        filename: my-metrics-0.svg\n        output_action: pull-request\n\n    - uses: lowlighter/metrics@latest\n      with:\n        filename: my-metrics-1.svg\n        output_action: pull-request-merge\n```\n\n### Using gists\n\nUse `output_action: gist` to push output to a [GitHub gist](https://gist.github.com) instead.\nIt is required to provide a gist id to `committer_gist` option to make it work.\n\n> 💡 This feature will use `token` instead of `committer_token` to push changes, so `gists` scope must be granted to the original `token` first\n\n*Example: push output to a gist*\n```yaml\nmetrics:\n  steps:\n    - uses: lowlighter/metrics@latest\n      with:\n        output_action: gist\n        committer_gist: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n### Manual handling\n\nUse `output_action: none` to perform custom processing with outputs.\nThey will be available under `/metrics_renders/{filename}` in the runner.\n\n*Example: generate outputs and manually push them*\n```yaml\nmetrics:\n  permissions:\n    contents: write\n  steps:\n    - name: Checkout repository\n      uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n\n    - uses: lowlighter/metrics@latest\n      with:\n        output_action: none\n\n    - uses: lowlighter/metrics@latest\n      run: |\n        set +e\n        git checkout metrics-renders\n        git config user.name github-actions[bot]\n        git config user.email 41898282+github-actions[bot]@users.noreply.github.com\n        sudo mv /metrics_renders/* ./\n        git add --all\n        git commit -m \"chore: push metrics\"\n        git push\n```\n\n## ♻️ Retrying automatically failed rendering and output action\n\nRendering is subject to external factors and can fail occasionally.\nUse `retries` and `retries_delay` options to automatically retry rendering.\n\n*Example: retry render up to 3 times (wait 5 minutes between each fail)*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    retries: 3\n    retries_delay: 300\n```\n\nOutput action is also subject to GitHub API rate-limiting and overall health status and can fail occasionally.\nUse `retries_output_action` and `retries_delay_output_action` options to automatically retry output action.\n\n> 💡 As output action is a separate step from rendering, render step won't be called again\n\n*Example: retry output action up to 5 times (wait 2 minutes between each fail)*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    retries_output_action: 5\n    retries_delay_output_action: 120\n```\n\n## 🗜️ Optimize SVG output\n\nTo reduce filesize and decrease loading time, *metrics* offers several optimization options, such as purging unused CSS and style minification, XML pretty-printing (which also reduce diffs between changes) and general SVG optimization (still experimental).\n\n> 💡 This option is enabled by default!\n\n*Example: optimize CSS and XML*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    optimize: css, xml\n```\n\n*Example: optimize SVG (experimental)*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    optimize: svg\n    experimental_features: --optimize-svg\n```\n\n## 🐳 Faster execution with prebuilt docker images\n\nWhen using `lowlighter/metrics` official releases as a GitHub Action, a prebuilt docker container image will be pulled from [GitHub Container Registry](https://github.com/users/lowlighter/packages/container/package/metrics). It allows to significantly reduce workflow execution time.\n\n> 💡 This option is enabled by default!\n\nOn forks, this feature is disable to take into account any changes you made on it.\n\n*Example: using prebuilt docker image*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    use_prebuilt_image: yes\n```\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>token</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub Personal Access Token</p>\n<p>No scopes are required by default, though some plugins and features may require additional scopes.</p>\n<p>When using a configuration which does not requires a GitHub PAT, it is possible to pass <code>NOT_NEEDED</code> instead.\nWhen doing so, any settings which defaults on user fetched values will not be templated (e.g. <code>.user.*</code>) and will usually need to be set manually.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">✔️ Required<br>\n🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>user</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub username</p>\n<p>Defaults to <a href=\"/source/plugins/core/README.md#token\"><code>token</code></a> owner username.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>repo</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub repository</p>\n<p>This option is only revelant for repositories templates</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_token</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub Token used to commit metrics</p>\n<p>Leave this to <code>${{ github.token }}</code> or <code>${{ secrets.GITHUB_TOKEN }}</code>, which is a special auto-generated token restricted to current repository scope.</p>\n<blockquote>\n<p>💡 When using <a href=\"/source/plugins/core/README.md#output_action\"><code>output_action: gist</code></a>, it will use <a href=\"/source/plugins/core/README.md#token\"><code>token</code></a> instead, since gists are outside of scope</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n<b>type:</b> <code>token</code>\n<br>\n<b>default:</b> ${{ github.token }}<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_branch</code></h4></td>\n    <td rowspan=\"2\"><p>Target branch</p>\n<p>Defaults to current repository default branch</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_message</code></h4></td>\n    <td rowspan=\"2\"><p>Commit message</p>\n<p>Use <code>${filename}</code> to display filename</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> Update ${filename} - [Skip GitHub Action]<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>committer_gist</code></h4></td>\n    <td rowspan=\"2\"><p>Gist id</p>\n<p>Specify an existing gist id (can be retrieved from its URL) when using <a href=\"/source/plugins/core/README.md#output_action\"><code>output_action: gist</code></a>.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>filename</code></h4></td>\n    <td rowspan=\"2\"><p>Output path</p>\n<p>When using an asterisk (<code>*</code>), correct extension will automatically be applied according to <a href=\"/source/plugins/core/README.md#config_output\"><code>config_output</code></a> value</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> github-metrics.*<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>markdown</code></h4></td>\n    <td rowspan=\"2\"><p>Markdown template path</p>\n<p>It can be either a local path or a full link (e.g. <a href=\"https://raw.githubusercontent.com\">https://raw.githubusercontent.com</a>)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> TEMPLATE.md<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>markdown_cache</code></h4></td>\n    <td rowspan=\"2\"><p>Markdown file cache</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> .cache<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>output_action</code></h4></td>\n    <td rowspan=\"2\"><p>Output action</p>\n<ul>\n<li><code>none</code>: just create file in <code>/metrics_renders</code> directory of action runner</li>\n<li><code>commit</code>: push output to <code>committer_branch</code></li>\n<li><code>pull-request</code>: push output to a new branch and open a pull request to <code>committer_branch</code></li>\n<li><code>pull-request-merge</code>: same as <code>pull-request</code> and additionally merge pull request</li>\n<li><code>pull-request-squash</code>: same as <code>pull-request</code> and additionally squash and merge pull request</li>\n<li><code>pull-request-rebase</code>: same as <code>pull-request</code> and additionally rebase and merge pull request</li>\n<li><code>gist</code>: push output to <code>committer_gist</code></li>\n</ul>\n<blockquote>\n<p>💡 When using <code>pull-request</code>, you will need to set the last job with a <code>pull-request-*</code> action instead, else it won&#39;t be merged</p>\n</blockquote>\n<blockquote>\n<p>⚠️ As GitHub gists API does not support binary files upload, <code>gist</code> does not support <a href=\"/source/plugins/core/README.md#config_output\"><code>config_output</code></a> set to either <code>png</code>, <code>jpeg</code> or <code>markdown-pdf</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> commit<br>\n<b>allowed values:</b><ul><li>none</li><li>commit</li><li>pull-request</li><li>pull-request-merge</li><li>pull-request-squash</li><li>pull-request-rebase</li><li>gist</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>output_condition</code></h4></td>\n    <td rowspan=\"2\"><p>Output condition</p>\n<ul>\n<li><code>always</code>: always try to push changes</li>\n<li><code>data-changed</code>: skip changes if no data changed (e.g. like when only metadata changed)</li>\n</ul>\n<blockquote>\n<p>ℹ️ This option is only revelant when <a href=\"/source/plugins/core/README.md#config_output\"><code>config_output: svg</code></a> is set</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> always<br>\n<b>allowed values:</b><ul><li>always</li><li>data-changed</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>optimize</code></h4></td>\n    <td rowspan=\"2\"><p>Optimization features</p>\n<ul>\n<li><code>css</code>: purge and minify CSS styles</li>\n<li><code>xml</code>: pretty-print XML (useful to reduce diff)</li>\n<li><code>svg</code>: optimization with SVGO (experimental, requires <a href=\"/source/plugins/core/README.md#experimental_features\"><code>experimental_features: --optimize-svg</code></a>)</li>\n</ul>\n<p>Templates may not always honour all provided options</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> css, xml<br>\n<b>allowed values:</b><ul><li>css</li><li>xml</li><li>svg</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>setup_community_templates</code></h4></td>\n    <td rowspan=\"2\"><p>Community templates to setup</p>\n<p>See <a href=\"https://github.com/lowlighter/metrics/blob/master/source/templates/community/README.md\">community templates guide</a> for more informations</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.setup.community.templates</i></li>\n</ul>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>template</code></h4></td>\n    <td rowspan=\"2\"><p>Template</p>\n<p>Community templates must be prefixed by at sign (<code>@</code>)\nSee <a href=\"https://github.com/lowlighter/metrics/blob/master/README.md#%EF%B8%8F-templates\">list of supported templates</a></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> classic<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>query</code></h4></td>\n    <td rowspan=\"2\"><p>Query parameters</p>\n<p>Pass additional parameters to templates.\nThis is mostly useful for custom templates.</p>\n<blockquote>\n<p>⚠️ <strong>Do not</strong> use this option to pass other existing parameters, they will be overwritten</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>json</code>\n<br>\n<b>default:</b> <details><summary>→ Click to expand</summary><pre language=\"json\"><code>{}</code></pre></details><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>extras_css</code></h4></td>\n    <td rowspan=\"2\"><p>Extra CSS</p>\n<p>Custom CSS that will be injected in used template.\nUseful to avoid creating a new template just to tweak some styling</p>\n<blockquote>\n<p>💡 <em>metrics</em> tends to avoid using <code>!important</code> rules, which means that most styling can be overridden by this option when using <code>!important</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.user.css</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>extras_js</code></h4></td>\n    <td rowspan=\"2\"><p>Extra JavaScript</p>\n<p>Custom JavaScript that will be executed during puppeteer rendering.\nUseful to avoid creating a new template just to tweak some content.</p>\n<blockquote>\n<p>⚠️ Note that is it executed within puppeteer context and <strong>not</strong> within <em>metrics</em> context.\nNo access to fetched data or configuration will be offered through this context.\nIt is run after transformations and optimizations, but just before resizing.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.user.js</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>github_api_rest</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub REST API endpoint</p>\n<p>Can be used to support <a href=\"https://github.com/enterprise\">GitHub enterprises server</a>.\nLeave empty to use default endpoint.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>github_api_graphql</code></h4></td>\n    <td rowspan=\"2\"><p>GitHub GraphQL API endpoint</p>\n<p>Can be used to support <a href=\"https://github.com/enterprise\">GitHub enterprises server</a>.\nLeave empty to use default endpoint.</p>\n<blockquote>\n<p>ℹ️ GraphQL octokit will automatically append <code>/graphql</code> to provided endpoint</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_timezone</code></h4></td>\n    <td rowspan=\"2\"><p>Timezone for dates</p>\n<p>See <a href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\">list of supported timezone</a></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_order</code></h4></td>\n    <td rowspan=\"2\"><p>Plugin order</p>\n<p>By default, templates use <code>partials/_.json</code> ordering.\nYou can override the content order by using this setting.</p>\n<p>If some partials are omitted, they will be appended at the end with default ordering</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_twemoji</code></h4></td>\n    <td rowspan=\"2\"><p>Use twemojis</p>\n<p>Replace emojis by <a href=\"%5Btwemojis%5D(https://github.com/twitter/twemoji)\">twemojis</a> to have a consistent render across all platforms\nMay increase filesize.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_gemoji</code></h4></td>\n    <td rowspan=\"2\"><p>Use GitHub custom emojis</p>\n<p>GitHub supports additional emojis which are not registered in Unicode standard (:octocat:, :shipit:, :trollface:, ...)\nSee full list at <a href=\"https://api.github.com/emojis\">https://api.github.com/emojis</a>.</p>\n<p>This option has no effect when [`token: NOT_NEEDED``](/source/plugins/core/README.md#token) is set.</p>\n<p>May increase filesize</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_octicon</code></h4></td>\n    <td rowspan=\"2\"><p>Use GitHub octicons</p>\n<p>Octicons are open-sourced icons provided by GitHub.\nSee full list at <a href=\"https://primer.style/octicons\">https://primer.style/octicons</a>.</p>\n<p>To include an octicon, use the following syntax: <code>:octicon-{name}-{size}:</code>.\nSize must be a supported icon size (12, 16 or 24).\n16px octicons can omit size and directly use <code>:octicon-{name}:</code> syntax.</p>\n<p>May increase filesize</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_display</code></h4></td>\n    <td rowspan=\"2\"><p>Display width (for image output formats)</p>\n<ul>\n<li><code>regular</code>: 480px width</li>\n<li><code>large</code>: 960px width (may not be supported by all templates)</li>\n<li><code>columns</code>: Full width with auto-sizing (two columns for desktops, and one column for mobile)<ul>\n<li>known issue: <a href=\"https://github.com/lowlighter/metrics/issues/374\">https://github.com/lowlighter/metrics/issues/374</a></li>\n</ul>\n</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> regular<br>\n<b>allowed values:</b><ul><li>regular</li><li>large</li><li>columns</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_animations</code></h4></td>\n    <td rowspan=\"2\"><p>Use CSS animations</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_base64</code></h4></td>\n    <td rowspan=\"2\"><p>Base64-encoded images</p>\n<p>Enable this option to make self-contained output (i.e. with no external links)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏭️ Global option<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_padding</code></h4></td>\n    <td rowspan=\"2\"><p>Output padding</p>\n<p>Although <em>metrics</em> try to auto-guess resulting height, rendering is still dependent on OS and browser settings.\nIt can result in cropped or oversized outputs.</p>\n<p>This settings let you manually adjust padding with the following format:</p>\n<ul>\n<li>1 value for both width and height</li>\n<li>2 values for width fist and height second, separated by a comma (<code>,</code>)</li>\n</ul>\n<p>Each value need to respect the following format:</p>\n<ul>\n<li><code>{number}</code></li>\n<li><code>{number} + {number}%</code></li>\n<li><code>{number}%</code></li>\n</ul>\n<p>Percentage are relative to computed dimensions</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 0, 8 + 11%<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_output</code></h4></td>\n    <td rowspan=\"2\"><p>Output format</p>\n<ul>\n<li><code>auto</code>: Template default (usually <code>svg</code> or <code>markdown</code>)</li>\n<li><code>svg</code>: SVG image</li>\n<li><code>png</code>: PNG image (animations not supported)</li>\n<li><code>jpeg</code>: JPEG image (animations and transparency not supported)</li>\n<li><code>json</code>: JSON data dump</li>\n<li><code>markdown</code>: Markdown rendered file</li>\n<li><code>markdown-pdf</code>: PDF from markdown rendered file</li>\n<li><code>insights</code>: Metrics Insights self-contained HTML file (not configurable)</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> auto<br>\n<b>allowed values:</b><ul><li>auto</li><li>svg</li><li>png</li><li>jpeg</li><li>json</li><li>markdown</li><li>markdown-pdf</li><li>insights</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>config_presets</code></h4></td>\n    <td rowspan=\"2\"><p>Configuration presets</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.setup.community.presets</i></li>\n</ul>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries</code></h4></td>\n    <td rowspan=\"2\"><p>Retries in case of failures (for rendering)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 10)</i>\n<br>\n<b>default:</b> 3<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries_delay</code></h4></td>\n    <td rowspan=\"2\"><p>Delay between each retry (in seconds, for rendering)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 3600)</i>\n<br>\n<b>default:</b> 300<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries_output_action</code></h4></td>\n    <td rowspan=\"2\"><p>Retries in case of failures (for output action)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 10)</i>\n<br>\n<b>default:</b> 5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>retries_delay_output_action</code></h4></td>\n    <td rowspan=\"2\"><p>Delay between each retry (in seconds, for output action)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 3600)</i>\n<br>\n<b>default:</b> 120<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>clean_workflows</code></h4></td>\n    <td rowspan=\"2\"><p>Clean previous workflows jobs</p>\n<p>This can be used to clean up Action tabs from previous workflows runs.</p>\n<p>Use <code>all</code> to clean up workflows runs in any state.</p>\n<blockquote>\n<p>⚠️ When reporting issues, it is <strong>required</strong> to provide logs so it can be investigated and reproduced.\nBe sure to disable this option when asking for help or submitting bug reports.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>cancelled</li><li>failure</li><li>success</li><li>skipped</li><li>startup_failure</li><li>timed_out</li><li>all</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>delay</code></h4></td>\n    <td rowspan=\"2\"><p>Job delay</p>\n<p>This can be used to avoid triggering GitHub abuse mechanics on large workflows</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 3600)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>quota_required_rest</code></h4></td>\n    <td rowspan=\"2\"><p>Minimum GitHub REST API requests quota required to run</p>\n<p>Action will cancel itself without any errors if requirements are not met</p>\n<p>This option has no effect when <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a> is set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 5000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>quota_required_graphql</code></h4></td>\n    <td rowspan=\"2\"><p>Minimum GitHub GraphQL API requests quota required to run</p>\n<p>Action will cancel itself without any errors if requirements are not met</p>\n<p>This option has no effect when <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a> is set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 5000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>quota_required_search</code></h4></td>\n    <td rowspan=\"2\"><p>Minimum GitHub Search API requests quota required to run</p>\n<p>Action will cancel itself without any errors if requirements are not met</p>\n<p>This option has no effect when <a href=\"/source/plugins/core/README.md#token\"><code>token: NOT_NEEDED</code></a> is set</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 0<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>notice_releases</code></h4></td>\n    <td rowspan=\"2\"><p>Notice about new releases of metrics</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>use_prebuilt_image</code></h4></td>\n    <td rowspan=\"2\"><p>Use pre-built docker image from <a href=\"https://github.com/lowlighter/metrics/pkgs/container/metrics\">GitHub container registry</a></p>\n<p>It allows to save build time and make job significantly faster, and there is almost no reason to disable this settings.\nThis option has no effects on forks (images will always be rebuilt from Dockerfile)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugins_errors_fatal</code></h4></td>\n    <td rowspan=\"2\"><p>Fatal plugin errors</p>\n<p>When enabled, the job will fail in case of plugin errors, else it will be handled gracefully in output with an error message</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>debug</code></h4></td>\n    <td rowspan=\"2\"><p>Debug mode</p>\n<p>This setting is automatically enable if a job fail (useful with <a href=\"/source/plugins/core/README.md#plugins_errors_fatal\"><code>plugins_errors_fatal: yes</code></a>)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>verify</code></h4></td>\n    <td rowspan=\"2\"><p>SVG validity check</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.libxml2</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>debug_flags</code></h4></td>\n    <td rowspan=\"2\"><p>Debug flags</p>\n<ul>\n<li><code>--cakeday</code>: simulate registration anniversary</li>\n<li><code>--halloween</code>: enable halloween colors <em>(only first color scheme will be applied if multiple are specified)</em></li>\n<li><code>--winter</code>: enable winter colors <em>(only first color scheme will be applied if multiple are specified)</em></li>\n<li><code>--error</code>: force render error</li>\n<li><code>--puppeteer-debug</code>: enable puppeteer debug mode*</li>\n<li><code>--puppeteer-disable-headless</code>: disable puppeteer headless mode <em>(requires a graphical environment)</em>*</li>\n<li><code>--puppeteer-wait-load</code>: override puppeteer wait events*</li>\n<li><code>--puppeteer-wait-domcontentloaded</code>: override puppeteer wait events*</li>\n<li><code>--puppeteer-wait-networkidle0</code>: override puppeteer wait events*</li>\n<li><code>--puppeteer-wait-networkidle2</code>: override puppeteer wait events*</li>\n</ul>\n<blockquote>\n<p><em>* 🌐 Web instances needs to have <a href=\"/source/plugins/core/README.md#debug\"><code>debug</code></a> set in <code>settings.json</code> for these flags to be supported.</em></p>\n</blockquote>\n<blockquote>\n<p>⚠️ No backward compatibility is guaranteed for these features, they are only meant for debugging purposes.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>array</code>\n<i>(space-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>--cakeday</li><li>--halloween</li><li>--winter</li><li>--error</li><li>--puppeteer-debug</li><li>--puppeteer-disable-headless</li><li>--puppeteer-wait-load</li><li>--puppeteer-wait-domcontentloaded</li><li>--puppeteer-wait-networkidle0</li><li>--puppeteer-wait-networkidle2</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>debug_print</code></h4></td>\n    <td rowspan=\"2\"><p>Print output in console</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>dryrun</code></h4></td>\n    <td rowspan=\"2\"><p>Dry-run</p>\n<blockquote>\n<p>⚠️ Unlike <a href=\"/source/plugins/core/README.md#output_action\"><code>output_action: none</code></a>, output file won&#39;t be available in <code>/metrics_renders</code> directory</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>experimental_features</code></h4></td>\n    <td rowspan=\"2\"><p>Experimental features</p>\n<blockquote>\n<p>⚠️ No backward compatibility is guaranteed for these features</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>array</code>\n<i>(space-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>--optimize-svg</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>use_mocked_data</code></h4></td>\n    <td rowspan=\"2\"><p>Use mocked data instead of live APIs</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n🔧 For development<br>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n<!-- File: source/plugins/discussions/README.md (Tokens: ~849 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💬 Discussions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays GitHub discussions stats.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.discussions.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_discussions</code></h4></td>\n    <td rowspan=\"2\"><p>Enable discussions plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_discussions_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Discussion categories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_discussions_categories_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (categories)</p>\n<p>Note that categories are sorted from highest to lowest count</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: GitHub Discussions\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.discussions.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_discussions: yes\n  plugin_discussions_categories_limit: 8\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/followup/README.md (Tokens: ~1505 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎟️ Follow-up of issues and pull requests</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the ratio of open/closed issues and the ratio of open/merged pull requests across repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Indepth analysis</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.followup.indepth.svg\" alt=\"\"></img></details>\n      <details><summary>Created on a user's repositories</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.followup.svg\" alt=\"\"></img></details>\n      <details><summary>Created by a user</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.followup.user.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup</code></h4></td>\n    <td rowspan=\"2\"><p>Enable followup plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>repositories</code>: overall status of issues and pull requests on your repositories</li>\n<li><code>user</code>: overall status of issues and pull requests you have created on GitHub</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> repositories<br>\n<b>allowed values:</b><ul><li>repositories</li><li>user</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth analysis</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_followup_archived</code></h4></td>\n    <td rowspan=\"2\"><p>Include archived repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔎 `indepth` mode\n\nThe `plugin_followup_indepth` option collects additional stats to differentiate issues and pull requests opened by maintainers and users.\n\nIt helps knowing whether repositories are also maintained by other users and give an overall health status of repositories.\n\n> ⚠️ This mode will try to list users with push access to know who are the maintainers in order to place issues in the correct category, which requires a `repo` scope. If not available, it will consider that only the owner is a maintainer.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Opened on user's repositories\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n\n```\n```yaml\nname: Opened by user\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.user.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n  plugin_followup_sections: user\n\n```\n```yaml\nname: Indepth analysis\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.indepth.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n  plugin_followup_indepth: yes\n\n```\n```yaml\nname: Exclude Archived\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.followup.archived.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_followup: yes\n  plugin_followup_archived: no\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/gists/README.md (Tokens: ~650 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎫 Gists</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays <a href=\"https://gist.github.com\">gists</a> stats.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.gists.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_gists</code></h4></td>\n    <td rowspan=\"2\"><p>Enable gists plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Gists\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.gists.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_gists: yes\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/habits/README.md (Tokens: ~2208 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>💡 Coding habits and activity</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays coding habits based on recent activity, such as active hours and languages recently used.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Recent activity charts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.habits.charts.svg\" alt=\"\"></img></details>\n      <details open><summary>Mildly interesting facts</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.habits.facts.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits</code></h4></td>\n    <td rowspan=\"2\"><p>Enable habits plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_from</code></h4></td>\n    <td rowspan=\"2\"><p>Events to use</p>\n<p>A higher number will increase stats accuracy</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 200<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_days</code></h4></td>\n    <td rowspan=\"2\"><p>Event maximum age</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 30)</i>\n<br>\n<b>default:</b> 14<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_facts</code></h4></td>\n    <td rowspan=\"2\"><p>Mildly interesting facts</p>\n<p>It includes indentation type, average number of characters per line of code, and most active time and day</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_charts</code></h4></td>\n    <td rowspan=\"2\"><p>Charts</p>\n<p>It includes commit activity per hour of day and commit activity per day of week\nRecent language activity may also displayed (it requires extras features to be enabled for web instances) for historical reasons</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_charts_type</code></h4></td>\n    <td rowspan=\"2\"><p>Charts display type</p>\n<ul>\n<li><code>classic</code>: <code>&lt;div&gt;</code> based charts, simple and lightweight</li>\n<li><code>graph</code>: <code>&lt;svg&gt;</code> based charts, smooth</li>\n</ul>\n<blockquote>\n<p>⚠️ <code>chartist</code> option has been deprecated and is now equivalent to <code>graph</code></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.npm.optional.d3</i></li>\n</ul>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> classic<br>\n<b>allowed values:</b><ul><li>classic</li><li>graph</li><li>chartist</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_trim</code></h4></td>\n    <td rowspan=\"2\"><p>Trim unused hours on charts</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_languages_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (languages)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 8)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 8<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_habits_languages_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Display threshold (percentage)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 0%<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🌐 Configure used timezone\n\nBy default, dates use Greenwich meridian (GMT/UTC).\n\nConfigure `config_timezone` (see [supported timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) to avoid time offsets.\n\n*Example: configuring timezone*\n```yaml\n- uses: lowlighter/metrics@latest\n  with:\n    config_timezone: Europe/Paris\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Mildly interesting facts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.habits.facts.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_habits: yes\n  plugin_habits_facts: yes\n  plugin_habits_charts: no\n  config_timezone: Europe/Paris\n\n```\n```yaml\nname: Recent activity charts\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.habits.charts.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_habits: yes\n  plugin_habits_facts: no\n  plugin_habits_charts: yes\n  config_timezone: Europe/Paris\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/introduction/README.md (Tokens: ~908 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🙋 Introduction</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays account bio or organization/repository description.</p>\n<p>Since account bio is already displayed on account profile, this plugin is mostly intended for external usage.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>For a user or an organization</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.introduction.svg\" alt=\"\"></img></details>\n      <details><summary>For a repository</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.introduction.repository.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_introduction</code></h4></td>\n    <td rowspan=\"2\"><p>Enable introduction plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_introduction_title</code></h4></td>\n    <td rowspan=\"2\"><p>Section title</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Organization introduction\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.introduction.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  user: github\n  base: header\n  plugin_introduction: yes\n\n```\n```yaml\nname: Repository introduction\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.introduction.repository.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  template: repository\n  repo: metrics\n  base: header\n  plugin_introduction: yes\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/isocalendar/README.md (Tokens: ~955 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📅 Isometric commit calendar</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays an isometric view of a user commit calendar along with a few additional statistics like current streak and average number of commit per day.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Full year calendar</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.isocalendar.fullyear.svg\" alt=\"\"></img></details>\n      <details><summary>Half year calendar</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.isocalendar.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_isocalendar</code></h4></td>\n    <td rowspan=\"2\"><p>Enable isocalendar plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_isocalendar_duration</code></h4></td>\n    <td rowspan=\"2\"><p>Time range</p>\n<ul>\n<li><code>half-year</code>: 180 days</li>\n<li><code>full-year</code>: 1 year</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> half-year<br>\n<b>allowed values:</b><ul><li>half-year</li><li>full-year</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Half-year calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.isocalendar.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_isocalendar: yes\n\n```\n```yaml\nname: Full-year calendar\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.isocalendar.fullyear.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_isocalendar: yes\n  plugin_isocalendar_duration: full-year\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/languages/README.md (Tokens: ~5638 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🈷️ Languages activity</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display which languages you use across all repositories you contributed to.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Indepth analysis (clone and analyze repositories)</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.indepth.svg\" alt=\"\"></img></details>\n      <details open><summary>Recently used (analyze recent activity events)</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.recent.svg\" alt=\"\"></img></details>\n      <details><summary>Default algorithm</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.svg\" alt=\"\"></img></details>\n      <details><summary>Default algorithm (with details)</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.languages.details.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages</code></h4></td>\n    <td rowspan=\"2\"><p>Enable languages plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_ignored</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored languages</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 8)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 8<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_threshold</code></h4></td>\n    <td rowspan=\"2\"><p>Display threshold (percentage)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> 0%<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_other</code></h4></td>\n    <td rowspan=\"2\"><p>Group unknown, ignored and over-limit languages into &quot;Other&quot; category</p>\n<p>If this option is enabled, &quot;Other&quot; category will not be subject to <a href=\"/source/plugins/languages/README.md#plugin_languages_threshold\"><code>plugin_languages_threshold</code></a>.\nIt will be automatically hidden if empty.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_colors</code></h4></td>\n    <td rowspan=\"2\"><p>Custom languages colors</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> github<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_aliases</code></h4></td>\n    <td rowspan=\"2\"><p>Custom languages names</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<p>Note that <code>recently-used</code> is only available when <a href=\"/source/plugins/languages/README.md#plugin_languages_indepth\"><code>plugin_languages_indepth</code></a> is enabled</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> most-used<br>\n<b>allowed values:</b><ul><li>most-used</li><li>recently-used</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_details</code></h4></td>\n    <td rowspan=\"2\"><p>Additional details</p>\n<p>Note that <code>lines</code> is only available when <a href=\"/source/plugins/languages/README.md#plugin_languages_indepth\"><code>plugin_languages_indepth</code></a> is enabled</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>allowed values:</b><ul><li>bytes-size</li><li>percentage</li><li>lines</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode</p>\n<blockquote>\n<p>⚠️ read documentation first</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.cpu.overuse</i></li>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> false<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_indepth_custom</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Custom repositories</p>\n<p>Specify a list of additional repositories to analyze.</p>\n<p>Below are the supported syntax formats:</p>\n<ul>\n<li><code>owner/repo</code> (e.g. <code>lowlighter/metrics</code>)</li>\n<li><code>owner/repo@branch</code> (e.g. <code>lowlighter/metrics@main</code>)</li>\n<li><code>owner/repo@branch:commits</code> (e.g. <code>lowlighter/metrics@main:v1.0..v1.1</code>)<ul>\n<li>See <a href=\"https://git-scm.com/docs/git-rev-list#_description\"><code>git rev-list</code></a> documentation for more information about <code>commits</code> syntax</li>\n</ul>\n</li>\n</ul>\n<p>It is possible to specify repositories that are not hosted on <a href=\"https://github.com\">github.com</a> by passing a full url instead.\nIn this case the repository must be accessible directly.</p>\n<blockquote>\n<p>ℹ️ This option bypass <a href=\"/source/plugins/languages/README.md#plugin_languages_skipped\"><code>plugin_languages_skipped</code></a></p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_analysis_timeout</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Analysis timeout</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 60)</i>\n<br>\n<b>default:</b> 15<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_analysis_timeout_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Analysis timeout (repositories)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 15)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 7.5<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Displayed categories (most-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> markup, programming<br>\n<b>allowed values:</b><ul><li>data</li><li>markup</li><li>programming</li><li>prose</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_recent_categories</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Displayed categories (recently-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> markup, programming<br>\n<b>allowed values:</b><ul><li>data</li><li>markup</li><li>programming</li><li>prose</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_recent_load</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Events to load (recently-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(100 ≤\n𝑥\n≤ 1000)</i>\n<br>\n<b>default:</b> 300<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_languages_recent_days</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode - Events maximum age (day, recently-used section)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥\n≤ 365)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 14<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔎 `indepth` mode\n\nThe default algorithm uses the top languages from each repository you contributed to using GitHub GraphQL API (which is similar to the displayed languages bar on github.com). When working in collaborative projects with a lot of people, these numbers may be less representative of your actual work.\n\nThe `plugin_languages_indepth` option lets you use a more advanced algorithm for more accurate statistics.\nUnder the hood, it will clone your repositories, run [linguist-js](https://github.com/Nixinova/Linguist) (a JavaScript port of [GitHub linguist](https://github.com/github/linguist)) and iterate over patches matching your `commits_authoring` setting.\n\nSince git lets you use any email and username for commits, *metrics* may not be able to detect a commit ownership if it isn't the same as your GitHub personal data. By default, it will use your GitHub username, but you can configure additional matching usernames and email addresses using `commits_authoring` option.\n\n*Example: configuring `indepth` mode*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_indepth: yes\n    commits_authoring: firstname lastname, username, username@users.noreply.github.com\n```\n\n> 💡 This feature unlocks the `lines` option in `plugin_languages_details`\n\n> ⚠️ This feature significantly increase workflow time\n\n> ⚠️ Since this mode iterates over **each matching commit of each repository**, it is not suited for large code base, especially those with a large amount of commits and the ones containing binaries. While `plugin_languages_analysis_timeout` and `plugin_languages_analysis_timeout_repositories` can be used to increase the default timeout for analysis, please be responsible and keep this feature disabled if it cannot work on your account to save GitHub resources and our planet 🌏\n\n> ⚠️ Although *metrics* does not send any code to external sources, repositories are temporarily cloned on the GitHub Action runner. It is advised to keep this option disabled when working with sensitive data or company code. Use at your own risk, *metrics* and its authors **cannot** be held responsible for any resulting code leaks. Source code is available for auditing at [analyzers.mjs](/source/plugins/languages/analyzers.mjs).\n\n> 🌐 Web instances must enable this feature in `settings.json`\n\nBelow is a summary of the process used to compute indepth statistics:\n\n## Most used mode\n\n1. Fetch GPG keys linked to your GitHub account\n  - automatically add attached emails to `commits_authoring`\n  - *web-flow* (GitHub's public key for changes made through web-ui) is also fetched\n2. Import GPG keys so they can be used to verify commits later\n3. Iterate through repositories\n  - early break if `plugin_languages_analysis_timeout` is reached\n  - skip repository if it matches `plugin_languages_skipped`\n  - include repositories from `plugin_languages_indepth_custom`\n    - a specific branch and commit range can be used\n    - a source other than github.com can be used\n4. Clone repository\n  - target branch is checkout\n5. List of authored commits is computed\n  - using `git log --author` and `commits_authoring` to search in commit headers\n  - using `git log --grep` and `commits_authoring` to search in commit body\n  - ensure these are within the range specified by `plugin_languages_indepth_custom` (if applicable)\n6. Process authored commits\n  - early break if `plugin_languages_analysis_timeout_repositories` is reached\n  - using `git verify-commit` to check authenticity against imported GPG keys\n  - using `git log --patch` to extract added/deleted lines/bytes from each file\n  - using [GitHub linguist](https://github.com/github/linguist) ([linguist-js](https://github.com/Nixinova/LinguistJS)) to detect language for each file\n    - respect `plugin_languages_categories` option\n    - if a file has since been deleted or moved, checkout on the last commit file was present and run linguist again\n7. Aggregate results\n\n## Recently used mode\n\n1. Fetch push events linked to your account (or target repository)\n  - matching `plugin_languages_recent_load` and `plugin_languages_recent_days` options\n  - matching committer emails from `commits_authoring`\n2. Process authored commits\n  - using [GitHub linguist](https://github.com/github/linguist) ([linguist-js](https://github.com/Nixinova/LinguistJS)) to detect language for each file\n    - respect `plugin_languages_recent_categories` option\n    - directly pass file content rather than performing I/O and simulating a git repository\n3. Aggregate results\n\n## 📅 Recently used languages\n\nThis feature uses a similar algorithm as `indepth` mode, but uses patches from your events feed instead.\nIt will fetch a specified amount of recent push events and perform linguistic analysis on it.\n\n> ⚠️ Note that *metrics* won't be able to use more events than GitHub API is able to provide\n\n*Example: display recently used languages from 400 GitHub events from last 2 weeks*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_sections: recently-used\n    plugin_languages_recent_load: 400\n    plugin_languages_recent_days: 14\n```\n\n> 🌐 Web instances must enable this feature in `settings.json`\n\n## 🥽 Controling which languages are displayed\n\nSeveral options lets you customize which languages should be displayed.\nIt is possible to ignore completely languages or those lower than a given threshold, skip repositories, and filter by language categories.\n\n*Example: hide HTML and CSS languages, skip lowlighter/metrics repository*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_ignored: html, css\n    plugin_languages_skipped: lowlighter/metrics\n```\n\n*Example: hide languages with less than 2% usage*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_threshold: 2%\n```\n\n> 💡 The threshold feature will automatically scale remaining languages so the total percentage is always 100%. However, other stats like bytes count and lines are not affected.\n\nWhen using `indepth` mode, it is possible to hide languages per category.\nSupported categories are `data`, `markup`, `programming` and `prose`.\n\n*Example: hide data and prose languages from stats*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_categories: data, prose\n    plugin_languages_recent_categories: data, prose\n```\n\n## 🎨 Using custom colors\n\nThe plugin uses GitHub language colors, but it may be hard to distinguish them depending on which languages you use.\nIt is possible to use custom colors using `plugin_languages_colors` option.\n\nThe following syntaxes are supported:\n- A predefined set from [colorsets.json](colorsets.json) *(support limited to 8 languages max)*\n- `${language}:${color}` to change the color of a language *(case insensitive)*\n- `${n}:${color}` to change the color of the n-th language\n\nBoth hexadecimal and [named color](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value) are supported.\n\n*Example: using a predefined color set*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_colors: rainbow\n    plugin_languages_limit: 8\n```\n\n*Example: setting JavaScript to red, the first language to blue and the second one to `#ff00aa`*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_colors: javascript:red, 0:blue, 1:#ff00aa\n```\n\n## ✍️ Using custom languages name\n\nThis plugin is limited by [GitHub linguist](https://github.com/github/linguist) capabilities, meaning that some languages may be mislabeled in some cases.\n\nTo mitigate this, it is possible to use `plugin_languages_aliases` option and provide a list of overrides using the following syntax: `${language}:${alias}` *(case insensitive)*.\n\n*Example: display JavaScript as JS and TypeScript as TS*\n```yml\n- uses: lowlighter/metrics@latest\n  with:\n    plugin_languages: yes\n    plugin_languages_aliases: javascript:JS typescript:TS\n```\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Most used\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_limit: 4\n\n```\n```yaml\nname: Most used (with details)\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.details.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_details: bytes-size, percentage\n  plugin_languages_limit: 4\n\n```\n```yaml\nname: Recently used\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.recent.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_sections: recently-used\n  plugin_languages_details: bytes-size, percentage\n  plugin_languages_limit: 4\n\n```\n```yaml\nname: Indepth analysis\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.languages.indepth.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_languages: yes\n  plugin_languages_ignored: >-\n    html, css, tex, less, dockerfile, makefile, qmake, lex, cmake, shell,\n    gnuplot\n  plugin_languages_indepth: yes\n  plugin_languages_details: lines, bytes-size\n  plugin_languages_limit: 4\n  plugin_languages_analysis_timeout: 15\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/leetcode/README.md (Tokens: ~1282 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🗳️ Leetcode</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays statistics from a <a href=\"https://leetcode.com\">LeetCode</a> account.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://leetcode.com\">LeetCode</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><i>No tokens are required for this plugin</i></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.leetcode.svg\" alt=\"\"></img>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode</code></h4></td>\n    <td rowspan=\"2\"><p>Enable leetcode plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_user</code></h4></td>\n    <td rowspan=\"2\"><p>LeetCode login</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>solved</code> will display solved problems scores</li>\n<li><code>skills</code> will display solved problems tagged skills</li>\n<li><code>recent</code> will display recent submissions</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> solved<br>\n<b>allowed values:</b><ul><li>solved</li><li>skills</li><li>recent</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_limit_skills</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (skills)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 10<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_ignored_skills</code></h4></td>\n    <td rowspan=\"2\"><p>Ignored skills</p>\n<p>It is possible to ignore entires categories by passing <code>fundamental</code>, <code>intermediate</code> or <code>advanced</code></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_leetcode_limit_recent</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit (recent)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 15)</i>\n<br>\n<b>default:</b> 2<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: LeetCode\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.leetcode.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_leetcode: yes\n  plugin_leetcode_sections: solved, skills, recent\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/licenses/README.md (Tokens: ~1484 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>📜 Repository licenses</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin display repository license informations like permissions, limitations and conditions along with additional stats about dependencies.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr><th>ℹ Additional notes</th><td><blockquote>\n<p>⚠️ This is <strong>NOT</strong> legal advice, use at your own risk</p>\n</blockquote>\n<blockquote>\n<p>💣 This plugin <strong>SHOULD NOT</strong> be enabled on web instances, since it allows raw command injection.\nThis could result in compromised server!</p>\n</blockquote>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Permissions, limitations and conditions</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.licenses.svg\" alt=\"\"></img></details>\n      <details open><summary>Licenses overview</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.licenses.ratio.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## 🔎 Licenses analysis\n\nUse to `plugin_licenses_setup` command to setup project dependencies.\n\n*Example: setup a NodeJS project using `npm ci`*\n```yml\n- name: Licenses and permissions\n  with:\n    repo: metrics\n    plugin_licenses: yes\n    plugin_licenses_setup: npm ci\n```\n\nDependencies will be analyzed by [GitHub licensed](https://github.com/github/licensed) and compared against GitHub known licenses.\n\n> ⚠️ This is **NOT** legal advice, use at your own risk\n\n> 💣 This plugin **SHOULD NOT** be enabled on web instances, since it allows raw command injection.\n> This could result in compromised server!\n\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses</code></h4></td>\n    <td rowspan=\"2\"><p>Enable licenses plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.cpu.overuse</i></li>\n<li><i>metrics.run.tempdir</i></li>\n<li><i>metrics.run.git</i></li>\n<li><i>metrics.run.licensed</i></li>\n<li><i>metrics.run.user.cmd</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses_setup</code></h4></td>\n    <td rowspan=\"2\"><p>Setup command</p>\n<blockquote>\n<p>ℹ️ Depending on the project, this may not be required.\nThe example command is intended for NodeJs projects that use <code>npm</code> to install their dependencies.</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses_ratio</code></h4></td>\n    <td rowspan=\"2\"><p>Used licenses ratio</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_licenses_legal</code></h4></td>\n    <td rowspan=\"2\"><p>Permissions, limitations and conditions about used licenses</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> yes<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Licenses and permissions\nwith:\n  filename: metrics.plugin.licenses.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_licenses: yes\n  plugin_licenses_setup: bash -c '[[ -f package.json ]] && npm ci || true'\n\n```\n```yaml\nname: Licenses with open-source ratio graphs\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.licenses.ratio.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  template: repository\n  repo: metrics\n  plugin_licenses: yes\n  plugin_licenses_setup: bash -c '[[ -f package.json ]] && npm ci || true'\n  plugin_licenses_legal: no\n  plugin_licenses_ratio: yes\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/lines/README.md (Tokens: ~1686 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>👨‍💻 Lines of code changed</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays the number of lines of code added and removed across repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a> <a href=\"/source/templates/repository/README.md\"><code>📘 Repository template</code></a> <a href=\"/source/templates/terminal/README.md\"><code>📙 Terminal template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code> <code>📓 Repositories</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Repositories and diff history</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.lines.history.svg\" alt=\"\"></img></details>\n      <details><summary>Compact display in base plugin</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.lines.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines</code></h4></td>\n    <td rowspan=\"2\"><p>Enable lines plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_sections</code></h4></td>\n    <td rowspan=\"2\"><p>Displayed sections</p>\n<ul>\n<li><code>base</code> will display the total lines added and removed in <code>base.repositories</code> section</li>\n<li><code>repositories</code> will display repositories with the most lines added and removed</li>\n<li><code>history</code> will display a graph displaying lines added and removed over time</li>\n</ul>\n<blockquote>\n<p>ℹ️ <code>base</code> requires at least <a href=\"/source/plugins/base/README.md#base\"><code>base: repositories</code></a> to be set</p>\n</blockquote>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> base<br>\n<b>allowed values:</b><ul><li>base</li><li>repositories</li><li>history</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_repositories_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_history_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Years to display</p>\n<p>Will display the last <code>n</code> years, relative to current year</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 1<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_lines_delay</code></h4></td>\n    <td rowspan=\"2\"><p>Delay before performing a second query</p>\n<p>When non-zero, will perform a second query after specified delay (in seconds).\nThe GitHub endpoint used may return inaccurate results on first query (these values seems to be cached on the fly),\nafter returning correct results upon performing another query.</p>\n<p>Using this option may mitigate the occurrence of weird values.</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(0 ≤\n𝑥)</i>\n<br>\n<b>zero behaviour:</b> disable</br>\n<b>default:</b> 0<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Compact display in base plugin\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.lines.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: repositories\n  plugin_lines: yes\n  plugin_lines_delay: 30\n\n```\n```yaml\nname: Repositories and diff history\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.lines.history.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_lines: yes\n  plugin_lines_delay: 30\n  plugin_lines_sections: repositories, history\n  plugin_lines_repositories_limit: 2\n  plugin_lines_history_limit: 1\n  repositories_skipped: |\n    @use.patterns\n    */*\n    +lowlighter/metrics\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/music/README.md (Tokens: ~4077 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎼 Music activity and suggestions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin can display top and recently listened music tracks or titles from a random playlist.</p>\n<p>Different music providers are supported.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with any of the supported provider.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code> <code>👥 Organizations</code></td>\n  </tr>\n  <tr>\n    <td><code>🗝️ plugin_music_token</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Random tracks from a playlist</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.playlist.svg\" alt=\"\"></img></details>\n      <details open><summary>Recently listened</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.recent.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n#### ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music</code></h4></td>\n    <td rowspan=\"2\"><p>Enable music plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.run.puppeteer.scrapping</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_provider</code></h4></td>\n    <td rowspan=\"2\"><p>Music provider</p>\n<ul>\n<li><code>apple</code>: Apple Music</li>\n<li><code>spotify</code>: Spotify</li>\n<li><code>lastfm</code>: Last.fm</li>\n<li><code>youtube</code>: YouTube Music</li>\n</ul>\n<p>This setting is optional when using <a href=\"/source/plugins/music/README.md#plugin_music_mode\"><code>plugin_music_mode: playlist</code></a> (provider will be auto-detected from <a href=\"/source/plugins/music/README.md#plugin_music_playlist\"><code>plugin_music_playlist</code></a> URL)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>apple</li><li>spotify</li><li>lastfm</li><li>youtube</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_token</code></h4></td>\n    <td rowspan=\"2\"><p>Music provider token</p>\n<p>Below is the expected token format for each provider:</p>\n<ul>\n<li><code>apple</code>: <em>(not supported)</em></li>\n<li><code>spotify</code>: &quot;client_id, client_secret, refresh_token&quot;</li>\n<li><code>lastfm</code>: &quot;api_key&quot;</li>\n<li><code>youtube</code>: &quot;cookie&quot;</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🔐 Token<br>\n🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.music.any</i></li>\n</ul>\n<b>type:</b> <code>token</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_user</code></h4></td>\n    <td rowspan=\"2\"><p>Music provider username</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br>\n<b>default:</b> <code>→ User login</code><br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_mode</code></h4></td>\n    <td rowspan=\"2\"><p>Display mode</p>\n<ul>\n<li><code>playlist</code>: display random tracks from an URL playlist</li>\n<li><code>recent</code>: display recently listened tracks</li>\n<li><code>top</code>: display top listened artists/tracks</li>\n</ul>\n<p>If <a href=\"/source/plugins/music/README.md#plugin_music_playlist\"><code>plugin_music_playlist</code></a> is specified, the default value is <code>playlist</code>, else it is <code>recent</code></p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>allowed values:</b><ul><li>playlist</li><li>recent</li><li>top</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_playlist</code></h4></td>\n    <td rowspan=\"2\"><p>Playlist URL</p>\n<p>It must be from an &quot;embed url&quot; (i.e. music player iframes that can be integrated in other websites)</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏯️ Cannot be preset<br>\n<b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_limit</code></h4></td>\n    <td rowspan=\"2\"><p>Display limit</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>number</code>\n<i>(1 ≤\n𝑥\n≤ 100)</i>\n<br>\n<b>default:</b> 4<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_played_at</code></h4></td>\n    <td rowspan=\"2\"><p>Recently played - Last played timestamp</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_time_range</code></h4></td>\n    <td rowspan=\"2\"><p>Top tracks - Time range</p>\n<ul>\n<li><code>short</code>: 4 weeks</li>\n<li><code>medium</code>: 6 months</li>\n<li><code>long</code>: several years</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> short<br>\n<b>allowed values:</b><ul><li>short</li><li>medium</li><li>long</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_music_top_type</code></h4></td>\n    <td rowspan=\"2\"><p>Top tracks - Display type</p>\n<ul>\n<li><code>tracks</code>: display track</li>\n<li><code>artists</code>: display artists</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> tracks<br>\n<b>allowed values:</b><ul><li>tracks</li><li>artists</li></ul></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🎺 Configuring music provider\n\nSelect a music provider below for additional instructions.\n\n## 🎙️ Spotify\n\n### 🗝️ Obtaining a token\n\nSpotify does not have *personal tokens*, so it makes the process a bit longer because it is required to follow the [authorization workflow](https://developer.spotify.com/documentation/general/guides/authorization-guide/)... Follow the instructions below for a *TL;DR* to obtain a `refresh_token`.\n\nSign in to the [developer dashboard](https://developer.spotify.com/dashboard/) and create a new app.\nKeep your `client_id` and `client_secret` and let this tab open for now.\n\n![Add a redirect url](/.github/readme/imgs/plugin_music_recent_spotify_token_0.png)\n\nOpen the settings and add a new *Redirect url*. Normally it is used to setup callbacks for apps, but just put `https://localhost` instead (it is mandatory as per the [authorization guide](https://developer.spotify.com/documentation/general/guides/authorization-guide/), even if not used).\n\nForge the authorization url with your `client_id` and the encoded `redirect_uri` you whitelisted, and access it from your browser:\n\n```\nhttps://accounts.spotify.com/authorize?client_id=********&response_type=code&scope=user-read-recently-played%20user-top-read&redirect_uri=https%3A%2F%2Flocalhost\n```\n\nWhen prompted, authorize application.\n\n![Authorize application](/.github/readme/imgs/plugin_music_recent_spotify_token_1.png)\n\nOnce redirected to `redirect_uri`, extract the generated authorization `code` from your url bar.\n\n![Extract authorization code from url](/.github/readme/imgs/plugin_music_recent_spotify_token_2.png)\n\nGo back to developer dashboard tab, and open the web console of your browser to paste the following JavaScript code, with your own `client_id`, `client_secret`, authorization `code` and `redirect_uri`.\n\n```js\n(async () => {\n  console.log(await (await fetch(\"https://accounts.spotify.com/api/token\", {\n    method:\"POST\",\n    headers:{\"Content-Type\":\"application/x-www-form-urlencoded\"},\n    body:new URLSearchParams({\n      grant_type:\"authorization_code\",\n      redirect_uri:\"https://localhost\",\n      client_id:\"********\",\n      client_secret:\"********\",\n      code:\"********\",\n    })\n  })).json())\n})()\n```\n\nIt should return a JSON response with the following content:\n```json\n{\n  \"access_token\":\"********\",\n  \"expires_in\": 3600,\n  \"scope\":\"user-read-recently-played user-top-read\",\n  \"token_type\":\"Bearer\",\n  \"refresh_token\":\"********\"\n}\n```\n\nRegister your `client_id`, `client_secret` and `refresh_token` in secrets to finish setup.\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\nConnect to [spotify.com](https://www.spotify.com) and select the playlist you want to share.\nFrom `...` menu, select `Share` and `Copy embed code`.\n\n![Copy embed code of playlist](/.github/readme/imgs/plugin_music_playlist_spotify.png)\n\nExtract the source link from the code pasted in your clipboard:\n```html\n<iframe src=\"https://open.spotify.com/embed/playlist/********\" width=\"\" height=\"\" frameborder=\"0\" allowtransparency=\"\" allow=\"\"></iframe>\n```\n\n## 🍎 Apple Music\n\n### 🗝️ Obtaining a token\n\n*(Not available)*\n\n> 😥 Unfortunately I wasn't able to find a workaround to avoid paying the $99 fee for the developer program, even using workarounds like *smart playlists*, *shortcuts* and other stuff. However if you really want this feature, you could [sponsor me](github.com/sponsors/lowlighter) and I could eventually invest in a developer account with enough money, implement it and also eventually offer service on the shared instance\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\nConnect to [music.apple.com](https://music.apple.com/) and select the playlist you want to share.\nFrom `...` menu, select `Share` and `Copy embed code`.\n\n![Copy embed code of playlist](/.github/readme/imgs/plugin_music_playlist_apple.png)\n\nExtract the source link from the code pasted in your clipboard:\n```html\n<iframe allow=\"\" frameborder=\"\" height=\"\" style=\"\" sandbox=\"\" src=\"https://embed.music.apple.com/**/playlist/********\"></iframe>\n```\n\n## ⏯️ Youtube Music\n\n### 🗝️ Obtaining a token\n\nLogin to [YouTube Music](https://music.youtube.com) on any modern browser.\n\nOpen the developer tools (Ctrl-Shift-I) and select the “Network” tab\n\n![Open developer tools](/.github/readme/imgs/plugin_music_recent_youtube_cookie_1.png)\n\nFind an authenticated POST request. The simplest way is to filter by /browse using the search bar of the developer tools. If you don’t see the request, try scrolling down a bit or clicking on the library button in the top bar.\n\nClick on the Name of any matching request. In the “Headers” tab, scroll to the “Cookie” and copy this by right-clicking on it and selecting “Copy value”.\n\n![Copy cookie value](/.github/readme/imgs/plugin_music_recent_youtube_cookie_2.png)\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\nExtract the *playlist* URL of the playlist you want to share.\n\nConnect to [music.youtube.com](https://music.youtube.com) and select the playlist you want to share.\n\nExtract the source link from the code pasted in your clipboard:\n```\nhttps://music.youtube.com/playlist?list=********\n```\n\n## 📻 Last.fm\n\n### 🗝️ Obtaining a token\n\n[Create an API account](https://www.last.fm/api/account/create) or [use an existing one](https://www.last.fm/api/accounts) to obtain a Last.fm API key.\n\n### 🔗 Get an embed playlist url for `plugin_music_playlist`\n\n*(Not available)*\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Apple Music - Random track from playlist\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.music.playlist.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_playlist: https://embed.music.apple.com/fr/playlist/usr-share/pl.u-V9D7m8Etjmjd0D\n  plugin_music_limit: 2\n\n```\n```yaml\nname: Spotify - Random track from playlist\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.music.playlist.spotify.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_playlist: https://open.spotify.com/embed/playlist/3nfA87oeJw4LFVcUDjRcqi\n\n```\n```yaml\nname: Spotify - Recently listed\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.music.recent.svg\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_provider: spotify\n  plugin_music_mode: recent\n  plugin_music_token: ${{ secrets.SPOTIFY_TOKENS }}\n  plugin_music_limit: 2\n\n```\n```yaml\nname: Spotify - Top tracks\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_mode: top\n  plugin_music_provider: spotify\n  plugin_music_token: ${{ secrets.SPOTIFY_TOKENS }}\n  plugin_music_time_range: short\n  plugin_music_top_type: tracks\n\n```\n```yaml\nname: Spotify - Top artists\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_mode: top\n  plugin_music_provider: spotify\n  plugin_music_token: ${{ secrets.SPOTIFY_TOKENS }}\n  plugin_music_time_range: long\n  plugin_music_top_type: artists\n\n```\n```yaml\nname: Youtube Music - Random track from playlist\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music: yes\n  plugin_music_playlist: >-\n    https://music.youtube.com/playlist?list=OLAK5uy_kU_uxp9TUOl9zVdw77xith8o9AknVwz9U\n\n```\n```yaml\nname: Youtube Music - Recently listed\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music_token: ${{ secrets.YOUTUBE_MUSIC_TOKENS }}\n  plugin_music: yes\n  plugin_music_mode: recent\n  plugin_music_provider: youtube\n\n```\n```yaml\nname: Last.fm  - Recently listed\nuses: lowlighter/metrics@latest\nwith:\n  token: NOT_NEEDED\n  base: \"\"\n  plugin_music_token: ${{ secrets.LASTFM_TOKEN }}\n  plugin_music: yes\n  plugin_music_provider: lastfm\n  plugin_music_user: RJ\n\n```\n<!--/examples-->\n\n<!-- File: source/plugins/notable/README.md (Tokens: ~1929 | Category: plugin-manifest) -->\n<!--header-->\n<table>\n  <tr><td colspan=\"2\"><a href=\"/README.md#-plugins\">← Back to plugins index</a></td></tr>\n  <tr><th colspan=\"2\"><h3>🎩 Notable contributions</h3></th></tr>\n  <tr><td colspan=\"2\" align=\"center\"><p>This plugin displays badges for notable contributions on repositories.</p>\n</td></tr>\n  <tr><th>⚠️ Disclaimer</th><td><p>This plugin is not affiliated, associated, authorized, endorsed by, or in any way officially connected with <a href=\"https://github.com\">GitHub</a>.\nAll product and company names are trademarks™ or registered® trademarks of their respective holders.</p>\n</td></tr>\n  <tr>\n    <th rowspan=\"3\">Supported features<br><sub><a href=\"metadata.yml\">→ Full specification</a></sub></th>\n    <td><a href=\"/source/templates/classic/README.md\"><code>📗 Classic template</code></a></td>\n  </tr>\n  <tr>\n    <td><code>👤 Users</code></td>\n  </tr>\n  <tr>\n    <td><code>🔑 (scopeless)</code> <code>read:org (optional)</code> <code>read:user (optional)</code> <code>read:packages (optional)</code> <code>repo (optional)</code></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\">\n      <details open><summary>Indepth analysis</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.notable.indepth.svg\" alt=\"\"></img></details>\n      <details><summary>Contributions in organizations only</summary><img src=\"https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.notable.svg\" alt=\"\"></img></details>\n      <img width=\"900\" height=\"1\" alt=\"\">\n    </td>\n  </tr>\n</table>\n<!--/header-->\n\n## ➡️ Available options\n\n<!--options-->\n<table>\n  <tr>\n    <td align=\"center\" nowrap=\"nowrap\">Option</i></td><td align=\"center\" nowrap=\"nowrap\">Description</td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable</code></h4></td>\n    <td rowspan=\"2\"><p>Enable notable plugin</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_filter</code></h4></td>\n    <td rowspan=\"2\"><p>Query filter</p>\n<p>Based on <a href=\"https://docs.github.com/en/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax\">GitHub search syntax</a>.\nSupported fields are <code>stars</code>, <code>forks</code> and <code>watchers</code></p>\n<p>If <a href=\"/source/plugins/notable/README.md#plugin_notable_indepth\"><code>plugin_notable_indepth</code></a> is enabled, <code>commits</code>, <code>commits.user</code>, <code>commits.user%</code> and <code>maintainer</code> fields are also supported.\nSome repositories may not be able to reported advanced stats and in the case the default behaviour will be to bypass filtering</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_skipped</code></h4></td>\n    <td rowspan=\"2\"><p>Skipped repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">⏩ Inherits <code>repositories_skipped</code><br>\n<b>type:</b> <code>array</code>\n<i>(newline-separated)</i>\n<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_from</code></h4></td>\n    <td rowspan=\"2\"><p>Repository owner account type filter</p>\n<ul>\n<li><code>all</code>: no filtering</li>\n<li><code>organization</code>: only organization accounts repositories</li>\n<li><code>user</code>: only user accounts repositories</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>string</code>\n<br>\n<b>default:</b> organization<br>\n<b>allowed values:</b><ul><li>all</li><li>organization</li><li>user</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_repositories</code></h4></td>\n    <td rowspan=\"2\"><p>Repository name</p>\n<p>Repositories hosted by user account will always have their full handle displayed</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_indepth</code></h4></td>\n    <td rowspan=\"2\"><p>Indepth mode</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\">🌐 Web instances must configure <code>settings.json</code>:\n<ul>\n<li><i>metrics.api.github.overuse</i></li>\n</ul>\n<b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_types</code></h4></td>\n    <td rowspan=\"2\"><p>Contribution types filter</p>\n<p>Use a combination of below values to include repositories where:</p>\n<ul>\n<li><code>commit</code>: a commit on default branch was made</li>\n<li><code>pull_request</code>: a pull request was opened</li>\n<li><code>issue</code>: an issue was opened</li>\n</ul>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>array</code>\n<i>(comma-separated)</i>\n<br>\n<b>default:</b> commit<br>\n<b>allowed values:</b><ul><li>commit</li><li>pull_request</li><li>issue</li></ul></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><h4><code>plugin_notable_self</code></h4></td>\n    <td rowspan=\"2\"><p>Include own repositories</p>\n<img width=\"900\" height=\"1\" alt=\"\"></td>\n  </tr>\n  <tr>\n    <td nowrap=\"nowrap\"><b>type:</b> <code>boolean</code>\n<br>\n<b>default:</b> no<br></td>\n  </tr>\n</table>\n<!--/options-->\n\n## 🔎 `indepth` mode\n\nThe `plugin_notable_indepth` option collects additional stats about your contributions, such as:\n- Total number of commits within a repository or organization.\n\nFor each of the above, a badge is awarded. Its color and progress depends of the associated value.\n\n## ℹ️ Examples workflows\n\n<!--examples-->\n```yaml\nname: Contributions\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.notable.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_notable: yes\n\n```\n```yaml\nname: Indepth analysis\nuses: lowlighter/metrics@latest\nwith:\n  filename: metrics.plugin.notable.indepth.svg\n  token: ${{ secrets.METRICS_TOKEN }}\n  base: \"\"\n  plugin_notable: yes\n  plugin_notable_indepth: yes\n  plugin_notable_repositories: yes\n\n```\n<!--/examples-->\n\n<!-- ... +21 more modular skills available via /api/skills/lowlighter/metrics?path={path} -->\n</yakaai_skills>"}