<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Mazen Alotaibi</title><description>Writing on AI research and engineering — LLMs, agents, and the systems around them — by Mazen Alotaibi.</description><link>https://ma7.dev/</link><item><title>Obsidian Plugins</title><link>https://ma7.dev/posts/obsidian-plugins/</link><guid isPermaLink="true">https://ma7.dev/posts/obsidian-plugins/</guid><description>An opinionated guide to the Obsidian plugins in my knowledge-management setup.</description><pubDate>Fri, 14 Aug 2026 21:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Obsidian is useful before installing a single community plugin. The best setup is the smallest one that supports how you actually think, write, and retrieve information.&lt;/p&gt;
&lt;p&gt;This is my larger, long-running setup. It is a menu, not a starter pack: begin with a problem, add one plugin, and remove it if the workflow does not stick. I have also kept older and overlapping choices here so the list stays honest; those entries include a candid note.&lt;/p&gt;
&lt;h2 id=&quot;drawing--diagrams&quot;&gt;Drawing &amp;#x26; Diagrams&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-excalidraw-plugin&quot;&gt;Excalidraw&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-excalidraw-plugin&lt;/code&gt;) — The plugin I recommend when thinking spatially is part of the work, not just a way to decorate finished notes. It embeds editable drawings and supports deep links between notes and canvases.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;editing--writing&quot;&gt;Editing &amp;#x26; Writing&lt;/h2&gt;
&lt;p&gt;These earn their place by reducing friction in plain Markdown. Do not install several ways to solve the same editing problem unless their commands are genuinely different.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=table-editor-obsidian&quot;&gt;Advanced Tables&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;table-editor-obsidian&lt;/code&gt;) — Makes Markdown tables tolerable to navigate, format, and calculate in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-footnotes&quot;&gt;Footnote Shortcut&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-footnotes&lt;/code&gt;) — Useful for citation-heavy writing where inserting and moving between footnotes is repetitive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-latex-suite&quot;&gt;Latex Suite&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-latex-suite&lt;/code&gt;) — The strongest choice here for frequent mathematical writing because snippets and text expansion remove LaTeX boilerplate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=quick-latex&quot;&gt;Quick Latex&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;quick-latex&lt;/code&gt;) — Adds fractions, shorthands, matrices, and alignment helpers. It overlaps with Latex Suite; choose based on which expansion model feels natural.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=note-refactor-obsidian&quot;&gt;Note Refactor&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;note-refactor-obsidian&lt;/code&gt;) — Extracts a growing section into its own note without breaking writing flow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=url-into-selection&quot;&gt;Paste URL into Selection&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;url-into-selection&lt;/code&gt;) — A tiny interaction improvement that saves time every day when turning prose into linked prose.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-auto-link-title&quot;&gt;Auto Link Title&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-auto-link-title&lt;/code&gt;) — Fetches useful titles for bare URLs. Review generated titles because websites are not consistent metadata sources.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=cm-editor-syntax-highlight-obsidian&quot;&gt;Editor Syntax Highlight&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;cm-editor-syntax-highlight-obsidian&lt;/code&gt;) — Makes code-heavy notes easier to edit by bringing highlighting into the editor, not only the rendered view.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;navigation--search&quot;&gt;Navigation &amp;#x26; Search&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=omnisearch&quot;&gt;Omnisearch&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;omnisearch&lt;/code&gt;) — The search upgrade I would recommend first for a large vault: fast full-text retrieval with ranking that feels closer to a real search engine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=recent-files-obsidian&quot;&gt;Recent Files&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;recent-files-obsidian&lt;/code&gt;) — A simple history of recently opened notes is often faster than remembering their folder or title.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-zoom&quot;&gt;Zoom&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-zoom&lt;/code&gt;) — Focuses the workspace on one heading or list branch. It is especially good for long outlines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-hover-editor&quot;&gt;Hover Editor&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-hover-editor&lt;/code&gt;) — Turns a preview into a working editor, which makes following and updating linked notes feel less disruptive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=homepage&quot;&gt;Homepage&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;homepage&lt;/code&gt;) — Opens a chosen dashboard or note on startup. It is valuable only if that home note drives a real routine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://help.obsidian.md/plugins/bookmarks&quot;&gt;Bookmarks &amp;#x26; Quick Access&lt;/a&gt;&lt;/strong&gt; — Bookmarks are now a core Obsidian plugin. Prefer the built-in feature before adding another starred-notes system.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;data--research&quot;&gt;Data &amp;#x26; Research&lt;/h2&gt;
&lt;p&gt;This category can turn a folder of Markdown into a research environment, but it also adds the most coupling to Obsidian-specific behavior.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=dataview&quot;&gt;Dataview&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;dataview&lt;/code&gt;) — The foundational choice for querying note metadata and building live indexes. Use it for views over notes, not as a substitute for understandable files.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=metadata-menu&quot;&gt;Metadata Menu&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;metadata-menu&lt;/code&gt;) — Adds typed fields and controlled editing when frontmatter has become a real schema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-zotero-desktop-connector&quot;&gt;Zotero Integration&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-zotero-desktop-connector&lt;/code&gt;) — The highest-leverage bridge here for academic work: citations, annotations, and bibliographic metadata can enter the vault without manual copying.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-annotator&quot;&gt;Annotator&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-annotator&lt;/code&gt;) — Opens and annotates PDFs and EPUBs in the vault. Keep it only if its annotation format remains part of your workflow; Zotero can be a cleaner source of truth for papers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-to-anki-plugin&quot;&gt;Obsidian to Anki&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-to-anki-plugin&lt;/code&gt;) — Useful when notes already contain deliberate question-answer material. Automatically turning every note into flashcards creates noise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;planning--productivity&quot;&gt;Planning &amp;#x26; Productivity&lt;/h2&gt;
&lt;p&gt;These features are tempting because they make Obsidian look like a task manager. I use them selectively and keep time-sensitive commitments in tools designed to notify me.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=calendar&quot;&gt;Calendar&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;calendar&lt;/code&gt;) — The familiar entry point for daily notes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=periodic-notes&quot;&gt;Periodic Notes&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;periodic-notes&lt;/code&gt;) — Extends the same model to weekly, monthly, quarterly, and yearly reviews.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-day-planner&quot;&gt;Day Planner&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-day-planner&lt;/code&gt;) — Useful when the daily note is also the day’s working surface; less useful if the calendar is authoritative.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-kanban&quot;&gt;Kanban&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-kanban&lt;/code&gt;) — Good for lightweight, Markdown-backed project boards that should remain readable outside Obsidian.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-projects&quot;&gt;Projects&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-projects&lt;/code&gt;) — Adds database-like project views over plain notes. Adopt it only when Dataview alone is not enough.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-checklist-plugin&quot;&gt;Checklist&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-checklist-plugin&lt;/code&gt;) — Aggregates tasks from across the vault. It is useful for capture, but a global list still needs an intentional review habit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=nldates-obsidian&quot;&gt;Natural Language Dates&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;nldates-obsidian&lt;/code&gt;) — Makes date links and date properties faster to enter from phrases such as “next Friday.”&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;templating--automation&quot;&gt;Templating &amp;#x26; Automation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=templater-obsidian&quot;&gt;Templater&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;templater-obsidian&lt;/code&gt;) — My recommendation for powerful templates: it supports JavaScript and dynamic commands, with the corresponding cost in complexity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=quickadd&quot;&gt;QuickAdd&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;quickadd&lt;/code&gt;) — The capture layer for repeatable note creation, macros, and choice menus. Pair it with Templater when capture and document generation are distinct steps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=cmdr&quot;&gt;Commander&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;cmdr&lt;/code&gt;) — Places commands in toolbars and other UI locations. It is most useful after a workflow has become stable enough to deserve a button.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=frontmatter-modified-date&quot;&gt;Frontmatter Modified Date&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;frontmatter-modified-date&lt;/code&gt;) — Automatically records modification metadata. Decide whether Git history, filesystem timestamps, or frontmatter is authoritative before enabling it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;publishing--export&quot;&gt;Publishing &amp;#x26; Export&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-pandoc&quot;&gt;Pandoc Plugin&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-pandoc&lt;/code&gt;) — The practical bridge from Markdown to DOCX, EPUB, PDF, and other delivery formats, assuming Pandoc is installed and templates are maintained.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-git&quot;&gt;Git&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-git&lt;/code&gt;) — Gives a plain-text vault real version history and off-device backup. Automatic commits are useful, but they should not replace checking whether pushes actually succeed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;appearance--ui&quot;&gt;Appearance &amp;#x26; UI&lt;/h2&gt;
&lt;p&gt;Visual plugins are highly personal and are the most likely to break after a theme or application update. Keep the customization layer understandable.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-hider&quot;&gt;Hider&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-hider&lt;/code&gt;) — Removes interface elements you never use, helping Obsidian become a calmer writing surface.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-minimal-settings&quot;&gt;Minimal Theme Settings&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-minimal-settings&lt;/code&gt;) — The control panel for the Minimal theme; unnecessary if Minimal is not your active theme.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-style-settings&quot;&gt;Style Settings&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-style-settings&lt;/code&gt;) — Exposes supported theme and snippet variables without hand-editing CSS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-icon-folder&quot;&gt;Iconize&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-icon-folder&lt;/code&gt;) — Adds icons to files, folders, and text. Helpful as visual wayfinding; easy to overuse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=colored-tags&quot;&gt;Colored Tags&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;colored-tags&lt;/code&gt;) — Gives tags automatic colors. It works best when the tag vocabulary is small and meaningful.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-admonition&quot;&gt;Admonition&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-admonition&lt;/code&gt;) — Historically provided rich callout blocks. Obsidian now has native callouts, so keep this only for legacy syntax or features the core implementation lacks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=media-extended&quot;&gt;Media Extended&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;media-extended&lt;/code&gt;) — Improves embedded audio and video workflows for notes that genuinely depend on media playback.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;tags--organization&quot;&gt;Tags &amp;#x26; Organization&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=tag-wrangler&quot;&gt;Tag Wrangler&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;tag-wrangler&lt;/code&gt;) — Safely renames and merges tags across a vault. That makes it valuable maintenance tooling even if you avoid complex tag hierarchies.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;integration--utilities&quot;&gt;Integration &amp;#x26; Utilities&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=obsidian-custom-frames&quot;&gt;Custom Frames&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;obsidian-custom-frames&lt;/code&gt;) — Embeds web applications as panes. It reduces window switching, but embedded services still carry their normal privacy and authentication concerns.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/plugins?id=open-in-terminal&quot;&gt;Open in Terminal&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;open-in-terminal&lt;/code&gt;) — The direct escape hatch from Obsidian to shell tools, Git, and scripts operating on the same plain-text files.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>tools</category><category>obsidian</category></item><item><title>VSCode Extensions</title><link>https://ma7.dev/posts/vscode-extensions/</link><guid isPermaLink="true">https://ma7.dev/posts/vscode-extensions/</guid><description>An opinionated guide to the VS Code extensions in my development setup.</description><pubDate>Fri, 14 Aug 2026 21:00:00 GMT</pubDate><content:encoded>&lt;p&gt;VS Code and its forks, including Cursor, share the same extension ecosystem. This is the set I have accumulated over years of Python, ML, research, and web work—not a checklist I recommend installing wholesale.&lt;/p&gt;
&lt;p&gt;My rule is to start with the editor and language tooling, then add an extension only when it removes a recurring annoyance. Several entries overlap because this is also an honest record of my setup. I call those out below.&lt;/p&gt;
&lt;h2 id=&quot;authoring--markdown&quot;&gt;Authoring &amp;#x26; Markdown&lt;/h2&gt;
&lt;p&gt;These are worthwhile if Markdown is a real authoring format in your work, not just something you occasionally use for a README.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one&quot;&gt;Markdown All in One&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;yzhang.markdown-all-in-one&lt;/code&gt;) — The best general-purpose starting point: shortcuts, list editing, and table-of-contents support.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=bierner.markdown-preview-github-styles&quot;&gt;Markdown Preview GitHub Styles&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;bierner.markdown-preview-github-styles&lt;/code&gt;) — Useful when GitHub is the final renderer and you want fewer surprises before pushing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=bierner.markdown-checkbox&quot;&gt;Markdown Checkbox&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;bierner.markdown-checkbox&lt;/code&gt;) — Small quality-of-life support for task lists in the preview.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=bierner.markdown-emoji&quot;&gt;Markdown Emoji&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;bierner.markdown-emoji&lt;/code&gt;) — Adds GitHub-style emoji syntax to the preview; skip it if you write Unicode emoji directly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=bierner.markdown-footnotes&quot;&gt;Markdown Footnotes&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;bierner.markdown-footnotes&lt;/code&gt;) — Keeps footnotes readable in the built-in preview.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid&quot;&gt;Markdown Mermaid&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;bierner.markdown-mermaid&lt;/code&gt;) — The low-friction choice for diagrams that should remain text and live in version control.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=bierner.markdown-yaml-preamble&quot;&gt;Markdown YAML Preamble&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;bierner.markdown-yaml-preamble&lt;/code&gt;) — Makes frontmatter visible in the preview, which matters for content-heavy repositories.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=bierner.docs-view&quot;&gt;Docs View&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;bierner.docs-view&lt;/code&gt;) — A side-by-side documentation view is useful when reference material should stay beside the code.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;code-quality--linting&quot;&gt;Code Quality &amp;#x26; Linting&lt;/h2&gt;
&lt;p&gt;Prefer one authoritative formatter, linter, and type checker per language. The value here comes from fast feedback, not from stacking tools that report the same problem.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-python.pylint&quot;&gt;Pylint&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-python.pylint&lt;/code&gt;) — Good for opinionated Python linting, especially when the project already standardizes on Pylint.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=anysphere.pyright&quot;&gt;Pyright&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;anysphere.pyright&lt;/code&gt;) — Fast Python type checking. In Cursor, this build is the natural language-server choice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-python.isort&quot;&gt;isort&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-python.isort&lt;/code&gt;) — Worth keeping when import ordering is enforced separately from the formatter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode&quot;&gt;Prettier&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;esbenp.prettier-vscode&lt;/code&gt;) — My default formatter for JavaScript, TypeScript, CSS, HTML, Markdown, and many configuration files.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens&quot;&gt;Error Lens&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;usernamehw.errorlens&lt;/code&gt;) — Pulls diagnostics out of the Problems panel and puts them where I am looking. It can feel noisy in an unfamiliar codebase.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker&quot;&gt;Code Spell Checker&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;streetsidesoftware.code-spell-checker&lt;/code&gt;) — Catches embarrassing mistakes in identifiers, comments, and prose without requiring a separate writing pass.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;dev-utilities&quot;&gt;Dev Utilities&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker&quot;&gt;Docker&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-azuretools.vscode-docker&lt;/code&gt;) — Useful for inspecting images, containers, and registries without context-switching. Microsoft now presents this tooling under the broader Container Tools experience.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode.makefile-tools&quot;&gt;Makefile Tools&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-vscode.makefile-tools&lt;/code&gt;) — Adds target discovery and configuration support to repositories where Make is the real task runner.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;editor-enhancements&quot;&gt;Editor Enhancements&lt;/h2&gt;
&lt;p&gt;This is the most personal category. Install these one at a time; editor enhancements are helpful until their shortcuts, decorations, and panels begin competing with each other.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=vspacecode.whichkey&quot;&gt;Which Key&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;vspacecode.whichkey&lt;/code&gt;) — Makes discoverable, prefix-based keyboard workflows possible for Spacemacs-style setups.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=rebornix.toggle&quot;&gt;Toggle&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;rebornix.toggle&lt;/code&gt;) — Maps frequently changed settings to explicit commands and keybindings.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=bladnman.auto-align&quot;&gt;Auto Align&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;bladnman.auto-align&lt;/code&gt;) — Handy for tabular code and configuration, though formatters should remain authoritative.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow&quot;&gt;Indent Rainbow&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;oderwat.indent-rainbow&lt;/code&gt;) — Makes deeply nested Python, YAML, and configuration files easier to scan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments&quot;&gt;Better Comments&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;aaron-bond.better-comments&lt;/code&gt;) — Gives warning, question, and TODO comments visual hierarchy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=cg-cnu.vscode-codetags&quot;&gt;Code Tags&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;cg-cnu.vscode-codetags&lt;/code&gt;) — Another way to surface tagged comments; useful only if its tag model matches the team’s conventions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=gruntfuggly.todo-tree&quot;&gt;Todo Tree&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;gruntfuggly.todo-tree&lt;/code&gt;) — The one I would start with for repository-wide TODO and FIXME discovery.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=jgclark.vscode-todo-highlight&quot;&gt;Todo Highlight&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;jgclark.vscode-todo-highlight&lt;/code&gt;) — A lighter inline alternative to Todo Tree; running both is usually redundant.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=alefragnani.tagged-comment&quot;&gt;Tagged Comment&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;alefragnani.tagged-comment&lt;/code&gt;) — Adds navigation around structured comment tags. Keep it only if you use those tags consistently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=davidbabel.clever&quot;&gt;Clever&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;davidbabel.clever&lt;/code&gt;) — Smart selection and editing commands for keyboard-heavy workflows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=sirmspencer.vscode-autohide&quot;&gt;Auto Hide&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;sirmspencer.vscode-autohide&lt;/code&gt;) — Keeps panels out of the way on smaller screens or focused writing layouts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=drcika.apc-extension&quot;&gt;APC Extension&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;drcika.apc-extension&lt;/code&gt;) — Deep UI customization for people willing to maintain editor-specific styling across updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=amodio.toggle-excluded-files&quot;&gt;Toggle Excluded Files&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;amodio.toggle-excluded-files&lt;/code&gt;) — Quickly reveals generated or ignored files when debugging build output.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;file-viewers&quot;&gt;File Viewers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=tomoki1207.pdf&quot;&gt;PDF Viewer&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;tomoki1207.pdf&lt;/code&gt;) — Keeps papers and generated PDFs inside the workspace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio&quot;&gt;Draw.io&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;hediet.vscode-drawio&lt;/code&gt;) — The strongest option here when diagrams must be editable, reviewable files in the repository.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=076923.python-image-preview&quot;&gt;Python Image Preview&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;076923.python-image-preview&lt;/code&gt;) — Convenient for ML and computer-vision work where image paths appear throughout Python code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=janisdd.vscode-edit-csv&quot;&gt;Edit CSV&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;janisdd.vscode-edit-csv&lt;/code&gt;) — A table view is safer than editing delimiter-heavy rows by hand for small CSV files.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;git--version-control&quot;&gt;Git &amp;#x26; Version Control&lt;/h2&gt;
&lt;p&gt;VS Code’s built-in Git support is already good. Add these for a specific missing view rather than installing the entire category.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens&quot;&gt;GitLens&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;eamodio.gitlens&lt;/code&gt;) — The most complete option for blame, history, authorship, and commit context; some features require a paid plan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph&quot;&gt;Git Graph&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;mhutchie.git-graph&lt;/code&gt;) — A clear visual commit graph without adopting GitLens’s broader feature set.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory&quot;&gt;Git History&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;donjayamanne.githistory&lt;/code&gt;) — Focused file and repository history. It overlaps with both GitLens and Git Graph.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=donjayamanne.git-extension-pack&quot;&gt;Git Extension Pack&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;donjayamanne.git-extension-pack&lt;/code&gt;) — A convenience bundle, not a separate capability. I would now install only the components I actually use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=github.vscode-github-actions&quot;&gt;GitHub Actions&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;github.vscode-github-actions&lt;/code&gt;) — Worth it for workflow syntax, runs, and logs when GitHub Actions is part of daily development.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ziyasal.vscode-open-in-github&quot;&gt;Open in GitHub&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ziyasal.vscode-open-in-github&lt;/code&gt;) — Fast links from a local line or file to its GitHub counterpart.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=github.remotehub&quot;&gt;GitHub RemoteHub&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;github.remotehub&lt;/code&gt;) — Browse remote repositories without cloning them. Useful for inspection; unnecessary for repositories already on disk.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=codezombiech.gitignore&quot;&gt;gitignore&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;codezombiech.gitignore&lt;/code&gt;) — Generates &lt;code&gt;.gitignore&lt;/code&gt; files from templates. Verify the result rather than treating generated rules as policy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;language-support&quot;&gt;Language Support&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=shopify.ruby-lsp&quot;&gt;Ruby LSP&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;shopify.ruby-lsp&lt;/code&gt;) — The modern default for Ruby navigation, diagnostics, formatting, and refactoring.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=be5invis.toml&quot;&gt;TOML&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;be5invis.toml&lt;/code&gt;) — Basic TOML support; largely superseded in this setup by Even Better TOML.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml&quot;&gt;Even Better TOML&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;tamasfe.even-better-toml&lt;/code&gt;) — The TOML extension I would choose today for validation, formatting, and schema support.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml&quot;&gt;YAML&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;redhat.vscode-yaml&lt;/code&gt;) — Essential in YAML-heavy repositories because schema validation catches structural errors that syntax highlighting cannot.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=irongeek.vscode-env&quot;&gt;ENV&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;irongeek.vscode-env&lt;/code&gt;) — Lightweight highlighting for dotenv files; remember that highlighting does nothing to protect secrets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;navigation--project-management&quot;&gt;Navigation &amp;#x26; Project Management&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager&quot;&gt;Project Manager&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;alefragnani.project-manager&lt;/code&gt;) — A quick project switcher for people working across many unrelated repositories.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=alefragnani.bookmarks&quot;&gt;Bookmarks&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;alefragnani.bookmarks&lt;/code&gt;) — Good for temporary waypoints during a large debugging or refactoring session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=alefragnani.numbered-bookmarks&quot;&gt;Numbered Bookmarks&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;alefragnani.numbered-bookmarks&lt;/code&gt;) — Adds deterministic jump targets; redundant unless numbered navigation is part of your muscle memory.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=fooxly.workspace&quot;&gt;Workspace&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;fooxly.workspace&lt;/code&gt;) — Workspace management for setups that outgrow the built-in recent-project list.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=folke.vscode-monorepo-workspace&quot;&gt;Monorepo Workspace&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;folke.vscode-monorepo-workspace&lt;/code&gt;) — Useful when one repository contains many packages that deserve focused workspace views.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=johnpapa.vscode-peacock&quot;&gt;Peacock&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;johnpapa.vscode-peacock&lt;/code&gt;) — Color-codes windows so production, staging, and similarly named repositories are harder to confuse.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;python&quot;&gt;Python&lt;/h2&gt;
&lt;p&gt;Start with Pyright/Pylance, the official Python extension, and Debugpy. The smaller helpers below solve narrower problems and may overlap with language-server features.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-python.debugpy&quot;&gt;Debugpy&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-python.debugpy&lt;/code&gt;) — Microsoft’s Python debugger; keep it aligned with the official Python tooling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance&quot;&gt;Pylance&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-python.vscode-pylance&lt;/code&gt;) — Rich Python language support in VS Code. Cursor users may prefer its Pyright build instead, so do not run competing language servers blindly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=kevinrose.vsc-python-indent&quot;&gt;Python Indent&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;kevinrose.vsc-python-indent&lt;/code&gt;) — Corrects some awkward indentation behavior, though modern editor and formatter support makes it less essential.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=njqdev.vscode-python-typehint&quot;&gt;Python Typehint&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;njqdev.vscode-python-typehint&lt;/code&gt;) — Generates type-hint snippets. Treat the result as a starting point, not inferred truth.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring&quot;&gt;Autodocstring&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;njpwerner.autodocstring&lt;/code&gt;) — Useful when a project enforces a consistent docstring style and the generated skeleton saves repetitive typing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter-keymap&quot;&gt;Jupyter Keymap&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-toolsai.jupyter-keymap&lt;/code&gt;) — Makes notebook shortcuts familiar to users coming from classic Jupyter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-toolsai.vscode-jupyter-cell-tags&quot;&gt;Jupyter Cell Tags&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-toolsai.vscode-jupyter-cell-tags&lt;/code&gt;) — Important for pipelines that use notebook cell metadata.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-toolsai.vscode-jupyter-slideshow&quot;&gt;Jupyter Slideshow&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-toolsai.vscode-jupyter-slideshow&lt;/code&gt;) — Adds slideshow metadata for notebook-based talks and teaching material.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;remote-development&quot;&gt;Remote Development&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh&quot;&gt;Remote - SSH&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-vscode-remote.remote-ssh&lt;/code&gt;) — The default choice for editing and debugging directly on a remote machine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh-edit&quot;&gt;Remote - SSH: Editing&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-vscode-remote.remote-ssh-edit&lt;/code&gt;) — Focused support for SSH configuration files; useful alongside Remote - SSH.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers&quot;&gt;Remote - Containers&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-vscode-remote.remote-containers&lt;/code&gt;) — Now named &lt;strong&gt;Dev Containers&lt;/strong&gt;. The identifier remains the same; use it for reproducible containerized development environments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-explorer&quot;&gt;Remote Explorer&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-vscode.remote-explorer&lt;/code&gt;) — A shared target browser for SSH, tunnels, and containers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;testing&quot;&gt;Testing&lt;/h2&gt;
&lt;p&gt;This part of the setup reflects the transition from the old Test Explorer extension ecosystem to VS Code’s native Testing API. New Python projects should begin with the official Python test support.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-test-explorer&quot;&gt;Test Explorer UI&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;hbenl.vscode-test-explorer&lt;/code&gt;) — The legacy UI that many test adapters were built around. Keep it for those adapters, not as the default for a new setup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode.test-adapter-converter&quot;&gt;Test Adapter Converter&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-vscode.test-adapter-converter&lt;/code&gt;) — A compatibility bridge from legacy Test Explorer adapters to VS Code’s native Testing API.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=littlefoxteam.vscode-python-test-adapter&quot;&gt;Python Test Adapter&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;littlefoxteam.vscode-python-test-adapter&lt;/code&gt;) — A legacy pytest/unittest adapter. Prefer the official Python extension’s native test discovery unless this adapter supports a workflow you still need.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=markis.code-coverage&quot;&gt;Code Coverage&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;markis.code-coverage&lt;/code&gt;) — Coverage gutters make untested paths visible during review; the extension still depends on correctly generated coverage data.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;themes--icons&quot;&gt;Themes &amp;#x26; Icons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=github.github-vscode-theme&quot;&gt;GitHub Theme&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;github.github-vscode-theme&lt;/code&gt;) — A restrained, familiar theme with maintained light and dark variants.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=equinusocio.moxer-icons&quot;&gt;Moxer Icons&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;equinusocio.moxer-icons&lt;/code&gt;) — A distinctive icon set; this is taste, not productivity infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=file-icons.file-icons&quot;&gt;File Icons&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;file-icons.file-icons&lt;/code&gt;) — Broad file-type coverage and a useful fallback when a theme’s bundled icons are sparse.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;tracking--productivity&quot;&gt;Tracking &amp;#x26; Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ibm.output-colorizer&quot;&gt;Output Colorizer&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ibm.output-colorizer&lt;/code&gt;) — Makes dense build and process output easier to scan when the producer does not emit structured colors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vsliveshare.vsliveshare&quot;&gt;Live Share&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;ms-vsliveshare.vsliveshare&lt;/code&gt;) — Still one of the lowest-friction ways to pair inside a real editor session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paste URL into Selection&lt;/strong&gt; (&lt;code&gt;ms-vscode.remote-repositories&lt;/code&gt;) — The label in my old list was misleading: pasting a URL over selected text is now an editor behavior, while this identifier belongs to &lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-repositories&quot;&gt;Remote Repositories&lt;/a&gt;&lt;/strong&gt;. Keep Remote Repositories only if you browse source without cloning it.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>tools</category><category>vscode</category></item></channel></rss>