Repository files navigation

vscode-uvtask

List and run uvtask scripts from pyproject.toml inside VS Code and Cursor.

aiopy

Install

Extension id: aiopy.uvtask

Cursor

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX:
    • Download uvtask-*.vsix from GitHub Releases
    • Command Palette → Extensions: Install from VSIX… → pick the file
  3. Or from a terminal:
cursor --install-extension aiopy.uvtask
# or from a local build:
cursor --install-extension ./uvtask-0.3.2.vsix

VS Code

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX the same way as above (Extensions: Install from VSIX…).
  3. Or from a terminal:
code --install-extension aiopy.uvtask
# or from a local build:
code --install-extension ./uvtask-0.3.2.vsix

Marketplace listing may lag behind GitHub Releases. Until it appears in the marketplace / Open VSX, use the VSIX from Releases or build with npm run package.

Reload the window after install, then open a workspace that contains a pyproject.toml.

Features

  • Sidebar tree of [tool.run-script] / [tool.uvtask.run-script] entries with count badge, filter, Play, and Refresh
  • Defaults to the workspace-root pyproject.toml; switch to another via the view overflow menu
  • Run scripts through the VS Code Task API with ProcessExecution (no shell string)
  • Workspace Trust aware: lists scripts in untrusted workspaces, refuses to execute them
  • No dependency on the Python extension — uvx uvtask / uv run manage interpreters themselves

Note: Cursor cannot reliably host extension WebviewViews (service worker registration fails), so the filter is a title-bar action that opens an input box rather than an inline field in the header.

Requirements

  • uv available on PATH (used by uvx)
  • Optional: uv tool install uvtask for a local uvtask binary

On macOS, if you launch Cursor/VS Code from the Dock and uv lives under Homebrew (/opt/homebrew/bin), the extension prepends those directories to PATH automatically.

Usage

  1. Open a folder that contains a pyproject.toml with [tool.run-script] entries.
  2. Open the uvtask view in the Activity Bar (aiopy-style icon).
  3. Click a script to reveal its definition, or use the play button to run it.
  4. Use Select Manifest in the view title bar to switch to another pyproject.toml.

Localization

The UI ships with English (default), Spanish, and Simplified Chinese. VS Code/Cursor picks the bundle from the display language (package.nls.*.json + l10n/bundle.l10n.*.json). Contributions for more locales are welcome.

Settings

SettingDefaultPurpose
uvtask.runnerautoauto, uvtask, or uvx
uvtask.manifest""Workspace-relative path to pin a non-root default
uvtask.showHooksfalseList pre/post hooks as their own entries

Development

npm install
npm run build
npm run lint
npm run fmt:check
npm run typecheck
npm test
npm run package # writes uvtask-<version>.vsix

Press F5 in VS Code/Cursor to launch an Extension Development Host.

License

MIT © aiopy

About

VS Code / Cursor extension to list and run uvtask scripts from pyproject.toml

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

vscode-uvtask

List and run uvtask scripts from pyproject.toml inside VS Code and Cursor.

aiopy

Install

Extension id: aiopy.uvtask

Cursor

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX:
    • Download uvtask-*.vsix from GitHub Releases
    • Command Palette → Extensions: Install from VSIX… → pick the file
  3. Or from a terminal:
cursor --install-extension aiopy.uvtask
# or from a local build:
cursor --install-extension ./uvtask-0.3.2.vsix

VS Code

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX the same way as above (Extensions: Install from VSIX…).
  3. Or from a terminal:
code --install-extension aiopy.uvtask
# or from a local build:
code --install-extension ./uvtask-0.3.2.vsix

Marketplace listing may lag behind GitHub Releases. Until it appears in the marketplace / Open VSX, use the VSIX from Releases or build with npm run package.

Reload the window after install, then open a workspace that contains a pyproject.toml.

Features

  • Sidebar tree of [tool.run-script] / [tool.uvtask.run-script] entries with count badge, filter, Play, and Refresh
  • Defaults to the workspace-root pyproject.toml; switch to another via the view overflow menu
  • Run scripts through the VS Code Task API with ProcessExecution (no shell string)
  • Workspace Trust aware: lists scripts in untrusted workspaces, refuses to execute them
  • No dependency on the Python extension — uvx uvtask / uv run manage interpreters themselves

Note: Cursor cannot reliably host extension WebviewViews (service worker registration fails), so the filter is a title-bar action that opens an input box rather than an inline field in the header.

Requirements

  • uv available on PATH (used by uvx)
  • Optional: uv tool install uvtask for a local uvtask binary

On macOS, if you launch Cursor/VS Code from the Dock and uv lives under Homebrew (/opt/homebrew/bin), the extension prepends those directories to PATH automatically.

Usage

  1. Open a folder that contains a pyproject.toml with [tool.run-script] entries.
  2. Open the uvtask view in the Activity Bar (aiopy-style icon).
  3. Click a script to reveal its definition, or use the play button to run it.
  4. Use Select Manifest in the view title bar to switch to another pyproject.toml.

Localization

The UI ships with English (default), Spanish, and Simplified Chinese. VS Code/Cursor picks the bundle from the display language (package.nls.*.json + l10n/bundle.l10n.*.json). Contributions for more locales are welcome.

Settings

SettingDefaultPurpose
uvtask.runnerautoauto, uvtask, or uvx
uvtask.manifest""Workspace-relative path to pin a non-root default
uvtask.showHooksfalseList pre/post hooks as their own entries

Development

npm install
npm run build
npm run lint
npm run fmt:check
npm run typecheck
npm test
npm run package # writes uvtask-<version>.vsix

Press F5 in VS Code/Cursor to launch an Extension Development Host.

License

MIT © aiopy

About

VS Code / Cursor extension to list and run uvtask scripts from pyproject.toml

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

vscode-uvtask

List and run uvtask scripts from pyproject.toml inside VS Code and Cursor.

aiopy

Install

Extension id: aiopy.uvtask

Cursor

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX:
    • Download uvtask-*.vsix from GitHub Releases
    • Command Palette → Extensions: Install from VSIX… → pick the file
  3. Or from a terminal:
cursor --install-extension aiopy.uvtask
# or from a local build:
cursor --install-extension ./uvtask-0.3.2.vsix

VS Code

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX the same way as above (Extensions: Install from VSIX…).
  3. Or from a terminal:
code --install-extension aiopy.uvtask
# or from a local build:
code --install-extension ./uvtask-0.3.2.vsix

Marketplace listing may lag behind GitHub Releases. Until it appears in the marketplace / Open VSX, use the VSIX from Releases or build with npm run package.

Reload the window after install, then open a workspace that contains a pyproject.toml.

Features

  • Sidebar tree of [tool.run-script] / [tool.uvtask.run-script] entries with count badge, filter, Play, and Refresh
  • Defaults to the workspace-root pyproject.toml; switch to another via the view overflow menu
  • Run scripts through the VS Code Task API with ProcessExecution (no shell string)
  • Workspace Trust aware: lists scripts in untrusted workspaces, refuses to execute them
  • No dependency on the Python extension — uvx uvtask / uv run manage interpreters themselves

Note: Cursor cannot reliably host extension WebviewViews (service worker registration fails), so the filter is a title-bar action that opens an input box rather than an inline field in the header.

Requirements

  • uv available on PATH (used by uvx)
  • Optional: uv tool install uvtask for a local uvtask binary

On macOS, if you launch Cursor/VS Code from the Dock and uv lives under Homebrew (/opt/homebrew/bin), the extension prepends those directories to PATH automatically.

Usage

  1. Open a folder that contains a pyproject.toml with [tool.run-script] entries.
  2. Open the uvtask view in the Activity Bar (aiopy-style icon).
  3. Click a script to reveal its definition, or use the play button to run it.
  4. Use Select Manifest in the view title bar to switch to another pyproject.toml.

Localization

The UI ships with English (default), Spanish, and Simplified Chinese. VS Code/Cursor picks the bundle from the display language (package.nls.*.json + l10n/bundle.l10n.*.json). Contributions for more locales are welcome.

Settings

SettingDefaultPurpose
uvtask.runnerautoauto, uvtask, or uvx
uvtask.manifest""Workspace-relative path to pin a non-root default
uvtask.showHooksfalseList pre/post hooks as their own entries

Development

npm install
npm run build
npm run lint
npm run fmt:check
npm run typecheck
npm test
npm run package # writes uvtask-<version>.vsix

Press F5 in VS Code/Cursor to launch an Extension Development Host.

License

MIT © aiopy

About

VS Code / Cursor extension to list and run uvtask scripts from pyproject.toml

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

vscode-uvtask

List and run uvtask scripts from pyproject.toml inside VS Code and Cursor.

aiopy

Install

Extension id: aiopy.uvtask

Cursor

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX:
    • Download uvtask-*.vsix from GitHub Releases
    • Command Palette → Extensions: Install from VSIX… → pick the file
  3. Or from a terminal:
cursor --install-extension aiopy.uvtask
# or from a local build:
cursor --install-extension ./uvtask-0.3.2.vsix

VS Code

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX the same way as above (Extensions: Install from VSIX…).
  3. Or from a terminal:
code --install-extension aiopy.uvtask
# or from a local build:
code --install-extension ./uvtask-0.3.2.vsix

Marketplace listing may lag behind GitHub Releases. Until it appears in the marketplace / Open VSX, use the VSIX from Releases or build with npm run package.

Reload the window after install, then open a workspace that contains a pyproject.toml.

Features

  • Sidebar tree of [tool.run-script] / [tool.uvtask.run-script] entries with count badge, filter, Play, and Refresh
  • Defaults to the workspace-root pyproject.toml; switch to another via the view overflow menu
  • Run scripts through the VS Code Task API with ProcessExecution (no shell string)
  • Workspace Trust aware: lists scripts in untrusted workspaces, refuses to execute them
  • No dependency on the Python extension — uvx uvtask / uv run manage interpreters themselves

Note: Cursor cannot reliably host extension WebviewViews (service worker registration fails), so the filter is a title-bar action that opens an input box rather than an inline field in the header.

Requirements

  • uv available on PATH (used by uvx)
  • Optional: uv tool install uvtask for a local uvtask binary

On macOS, if you launch Cursor/VS Code from the Dock and uv lives under Homebrew (/opt/homebrew/bin), the extension prepends those directories to PATH automatically.

Usage

  1. Open a folder that contains a pyproject.toml with [tool.run-script] entries.
  2. Open the uvtask view in the Activity Bar (aiopy-style icon).
  3. Click a script to reveal its definition, or use the play button to run it.
  4. Use Select Manifest in the view title bar to switch to another pyproject.toml.

Localization

The UI ships with English (default), Spanish, and Simplified Chinese. VS Code/Cursor picks the bundle from the display language (package.nls.*.json + l10n/bundle.l10n.*.json). Contributions for more locales are welcome.

Settings

SettingDefaultPurpose
uvtask.runnerautoauto, uvtask, or uvx
uvtask.manifest""Workspace-relative path to pin a non-root default
uvtask.showHooksfalseList pre/post hooks as their own entries

Development

npm install
npm run build
npm run lint
npm run fmt:check
npm run typecheck
npm test
npm run package # writes uvtask-<version>.vsix

Press F5 in VS Code/Cursor to launch an Extension Development Host.

License

MIT © aiopy

About

VS Code / Cursor extension to list and run uvtask scripts from pyproject.toml

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

vscode-uvtask

List and run uvtask scripts from pyproject.toml inside VS Code and Cursor.

aiopy

Install

Extension id: aiopy.uvtask

Cursor

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX:
    • Download uvtask-*.vsix from GitHub Releases
    • Command Palette → Extensions: Install from VSIX… → pick the file
  3. Or from a terminal:
cursor --install-extension aiopy.uvtask
# or from a local build:
cursor --install-extension ./uvtask-0.3.2.vsix

VS Code

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX the same way as above (Extensions: Install from VSIX…).
  3. Or from a terminal:
code --install-extension aiopy.uvtask
# or from a local build:
code --install-extension ./uvtask-0.3.2.vsix

Marketplace listing may lag behind GitHub Releases. Until it appears in the marketplace / Open VSX, use the VSIX from Releases or build with npm run package.

Reload the window after install, then open a workspace that contains a pyproject.toml.

Features

  • Sidebar tree of [tool.run-script] / [tool.uvtask.run-script] entries with count badge, filter, Play, and Refresh
  • Defaults to the workspace-root pyproject.toml; switch to another via the view overflow menu
  • Run scripts through the VS Code Task API with ProcessExecution (no shell string)
  • Workspace Trust aware: lists scripts in untrusted workspaces, refuses to execute them
  • No dependency on the Python extension — uvx uvtask / uv run manage interpreters themselves

Note: Cursor cannot reliably host extension WebviewViews (service worker registration fails), so the filter is a title-bar action that opens an input box rather than an inline field in the header.

Requirements

  • uv available on PATH (used by uvx)
  • Optional: uv tool install uvtask for a local uvtask binary

On macOS, if you launch Cursor/VS Code from the Dock and uv lives under Homebrew (/opt/homebrew/bin), the extension prepends those directories to PATH automatically.

Usage

  1. Open a folder that contains a pyproject.toml with [tool.run-script] entries.
  2. Open the uvtask view in the Activity Bar (aiopy-style icon).
  3. Click a script to reveal its definition, or use the play button to run it.
  4. Use Select Manifest in the view title bar to switch to another pyproject.toml.

Localization

The UI ships with English (default), Spanish, and Simplified Chinese. VS Code/Cursor picks the bundle from the display language (package.nls.*.json + l10n/bundle.l10n.*.json). Contributions for more locales are welcome.

Settings

SettingDefaultPurpose
uvtask.runnerautoauto, uvtask, or uvx
uvtask.manifest""Workspace-relative path to pin a non-root default
uvtask.showHooksfalseList pre/post hooks as their own entries

Development

npm install
npm run build
npm run lint
npm run fmt:check
npm run typecheck
npm test
npm run package # writes uvtask-<version>.vsix

Press F5 in VS Code/Cursor to launch an Extension Development Host.

License

MIT © aiopy

About

VS Code / Cursor extension to list and run uvtask scripts from pyproject.toml

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

vscode-uvtask

List and run uvtask scripts from pyproject.toml inside VS Code and Cursor.

aiopy

Install

Extension id: aiopy.uvtask

Cursor

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX:
    • Download uvtask-*.vsix from GitHub Releases
    • Command Palette → Extensions: Install from VSIX… → pick the file
  3. Or from a terminal:
cursor --install-extension aiopy.uvtask
# or from a local build:
cursor --install-extension ./uvtask-0.3.2.vsix

VS Code

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX the same way as above (Extensions: Install from VSIX…).
  3. Or from a terminal:
code --install-extension aiopy.uvtask
# or from a local build:
code --install-extension ./uvtask-0.3.2.vsix

Marketplace listing may lag behind GitHub Releases. Until it appears in the marketplace / Open VSX, use the VSIX from Releases or build with npm run package.

Reload the window after install, then open a workspace that contains a pyproject.toml.

Features

  • Sidebar tree of [tool.run-script] / [tool.uvtask.run-script] entries with count badge, filter, Play, and Refresh
  • Defaults to the workspace-root pyproject.toml; switch to another via the view overflow menu
  • Run scripts through the VS Code Task API with ProcessExecution (no shell string)
  • Workspace Trust aware: lists scripts in untrusted workspaces, refuses to execute them
  • No dependency on the Python extension — uvx uvtask / uv run manage interpreters themselves

Note: Cursor cannot reliably host extension WebviewViews (service worker registration fails), so the filter is a title-bar action that opens an input box rather than an inline field in the header.

Requirements

  • uv available on PATH (used by uvx)
  • Optional: uv tool install uvtask for a local uvtask binary

On macOS, if you launch Cursor/VS Code from the Dock and uv lives under Homebrew (/opt/homebrew/bin), the extension prepends those directories to PATH automatically.

Usage

  1. Open a folder that contains a pyproject.toml with [tool.run-script] entries.
  2. Open the uvtask view in the Activity Bar (aiopy-style icon).
  3. Click a script to reveal its definition, or use the play button to run it.
  4. Use Select Manifest in the view title bar to switch to another pyproject.toml.

Localization

The UI ships with English (default), Spanish, and Simplified Chinese. VS Code/Cursor picks the bundle from the display language (package.nls.*.json + l10n/bundle.l10n.*.json). Contributions for more locales are welcome.

Settings

SettingDefaultPurpose
uvtask.runnerautoauto, uvtask, or uvx
uvtask.manifest""Workspace-relative path to pin a non-root default
uvtask.showHooksfalseList pre/post hooks as their own entries

Development

npm install
npm run build
npm run lint
npm run fmt:check
npm run typecheck
npm test
npm run package # writes uvtask-<version>.vsix

Press F5 in VS Code/Cursor to launch an Extension Development Host.

License

MIT © aiopy

About

VS Code / Cursor extension to list and run uvtask scripts from pyproject.toml

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

vscode-uvtask

List and run uvtask scripts from pyproject.toml inside VS Code and Cursor.

aiopy

Install

Extension id: aiopy.uvtask

Cursor

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX:
    • Download uvtask-*.vsix from GitHub Releases
    • Command Palette → Extensions: Install from VSIX… → pick the file
  3. Or from a terminal:
cursor --install-extension aiopy.uvtask
# or from a local build:
cursor --install-extension ./uvtask-0.3.2.vsix

VS Code

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX the same way as above (Extensions: Install from VSIX…).
  3. Or from a terminal:
code --install-extension aiopy.uvtask
# or from a local build:
code --install-extension ./uvtask-0.3.2.vsix

Marketplace listing may lag behind GitHub Releases. Until it appears in the marketplace / Open VSX, use the VSIX from Releases or build with npm run package.

Reload the window after install, then open a workspace that contains a pyproject.toml.

Features

  • Sidebar tree of [tool.run-script] / [tool.uvtask.run-script] entries with count badge, filter, Play, and Refresh
  • Defaults to the workspace-root pyproject.toml; switch to another via the view overflow menu
  • Run scripts through the VS Code Task API with ProcessExecution (no shell string)
  • Workspace Trust aware: lists scripts in untrusted workspaces, refuses to execute them
  • No dependency on the Python extension — uvx uvtask / uv run manage interpreters themselves

Note: Cursor cannot reliably host extension WebviewViews (service worker registration fails), so the filter is a title-bar action that opens an input box rather than an inline field in the header.

Requirements

  • uv available on PATH (used by uvx)
  • Optional: uv tool install uvtask for a local uvtask binary

On macOS, if you launch Cursor/VS Code from the Dock and uv lives under Homebrew (/opt/homebrew/bin), the extension prepends those directories to PATH automatically.

Usage

  1. Open a folder that contains a pyproject.toml with [tool.run-script] entries.
  2. Open the uvtask view in the Activity Bar (aiopy-style icon).
  3. Click a script to reveal its definition, or use the play button to run it.
  4. Use Select Manifest in the view title bar to switch to another pyproject.toml.

Localization

The UI ships with English (default), Spanish, and Simplified Chinese. VS Code/Cursor picks the bundle from the display language (package.nls.*.json + l10n/bundle.l10n.*.json). Contributions for more locales are welcome.

Settings

SettingDefaultPurpose
uvtask.runnerautoauto, uvtask, or uvx
uvtask.manifest""Workspace-relative path to pin a non-root default
uvtask.showHooksfalseList pre/post hooks as their own entries

Development

npm install
npm run build
npm run lint
npm run fmt:check
npm run typecheck
npm test
npm run package # writes uvtask-<version>.vsix

Press F5 in VS Code/Cursor to launch an Extension Development Host.

License

MIT © aiopy

About

VS Code / Cursor extension to list and run uvtask scripts from pyproject.toml

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

vscode-uvtask

List and run uvtask scripts from pyproject.toml inside VS Code and Cursor.

aiopy

Install

Extension id: aiopy.uvtask

Cursor

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX:
    • Download uvtask-*.vsix from GitHub Releases
    • Command Palette → Extensions: Install from VSIX… → pick the file
  3. Or from a terminal:
cursor --install-extension aiopy.uvtask
# or from a local build:
cursor --install-extension ./uvtask-0.3.2.vsix

VS Code

  1. Open the Extensions view (Cmd+Shift+X / Ctrl+Shift+X).
  2. Search for uvtask (publisher aiopy), or install a release VSIX the same way as above (Extensions: Install from VSIX…).
  3. Or from a terminal:
code --install-extension aiopy.uvtask
# or from a local build:
code --install-extension ./uvtask-0.3.2.vsix

Marketplace listing may lag behind GitHub Releases. Until it appears in the marketplace / Open VSX, use the VSIX from Releases or build with npm run package.

Reload the window after install, then open a workspace that contains a pyproject.toml.

Features

  • Sidebar tree of [tool.run-script] / [tool.uvtask.run-script] entries with count badge, filter, Play, and Refresh
  • Defaults to the workspace-root pyproject.toml; switch to another via the view overflow menu
  • Run scripts through the VS Code Task API with ProcessExecution (no shell string)
  • Workspace Trust aware: lists scripts in untrusted workspaces, refuses to execute them
  • No dependency on the Python extension — uvx uvtask / uv run manage interpreters themselves

Note: Cursor cannot reliably host extension WebviewViews (service worker registration fails), so the filter is a title-bar action that opens an input box rather than an inline field in the header.

Requirements

  • uv available on PATH (used by uvx)
  • Optional: uv tool install uvtask for a local uvtask binary

On macOS, if you launch Cursor/VS Code from the Dock and uv lives under Homebrew (/opt/homebrew/bin), the extension prepends those directories to PATH automatically.

Usage

  1. Open a folder that contains a pyproject.toml with [tool.run-script] entries.
  2. Open the uvtask view in the Activity Bar (aiopy-style icon).
  3. Click a script to reveal its definition, or use the play button to run it.
  4. Use Select Manifest in the view title bar to switch to another pyproject.toml.

Localization

The UI ships with English (default), Spanish, and Simplified Chinese. VS Code/Cursor picks the bundle from the display language (package.nls.*.json + l10n/bundle.l10n.*.json). Contributions for more locales are welcome.

Settings

SettingDefaultPurpose
uvtask.runnerautoauto, uvtask, or uvx
uvtask.manifest""Workspace-relative path to pin a non-root default
uvtask.showHooksfalseList pre/post hooks as their own entries

Development

npm install
npm run build
npm run lint
npm run fmt:check
npm run typecheck
npm test
npm run package # writes uvtask-<version>.vsix

Press F5 in VS Code/Cursor to launch an Extension Development Host.

License

MIT © aiopy

About

VS Code / Cursor extension to list and run uvtask scripts from pyproject.toml

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages