vscode-extension-guide
28
总安装量
3
周安装量
#13294
全站排名
安装命令
npx skills add https://github.com/aktsmm/agent-skills --skill vscode-extension-guide
Agent 安装分布
replit
1
windsurf
1
trae
1
cursor
1
claude-code
1
antigravity
1
Skill 文档
VS Code Extension Guide
Create, develop, and publish VS Code extensions.
When to Use
- VS Code extension, extension development, vscode plugin
- Creating a new VS Code extension from scratch
- Adding commands, keybindings, or settings to an extension
- Publishing to VS Code Marketplace
Quick Start
# Scaffold new extension (recommended)
npm install -g yo generator-code
yo code
# Or minimal manual setup
mkdir my-extension && cd my-extension
npm init -y && npm install -D typescript @types/vscode
Project Structure
my-extension/
âââ package.json # Extension manifest (CRITICAL)
âââ src/extension.ts # Entry point
âââ out/ # Compiled JS (gitignore)
âââ images/icon.png # 128x128 PNG for Marketplace
âââ .vscodeignore # Exclude files from VSIX
Building & Packaging
npm run compile # Build once
npm run watch # Watch mode (F5 to launch debug)
npx @vscode/vsce package # Creates .vsix
Done Criteria
- Extension activates without errors
- All commands registered and working
- Package size < 5MB (use
.vscodeignore) - README.md includes Marketplace/GitHub links
Quick Troubleshooting
| Symptom | Fix |
|---|---|
| Extension not loading | Add activationEvents to package.json |
| Command not found | Match command ID in package.json/code |
| Shortcut not working | Remove when clause, check conflicts |
| Topic | Reference |
|---|---|
| AI Customization | references/ai-customization.md |
| Code Review Prompts | references/code-review-prompts.md |
| Code Samples | references/code-samples.md |
| TreeView | references/treeview.md |
| Webview | references/webview.md |
| Testing | references/testing.md |
| Publishing | references/publishing.md |
| Troubleshooting | references/troubleshooting.md |
Best Practices
å½åã®ä¸è²«æ§
å ¬éåã«ããã±ã¼ã¸åã»è¨å®ãã¼ã»ã³ãã³ãåãçµ±ä¸ï¼
| é ç® | ä¾ |
|---|---|
| ããã±ã¼ã¸å | copilot-scheduler |
| è¨å®ãã¼ | copilotScheduler.enabled |
| ã³ãã³ãID | copilotScheduler.createTask |
| ãã¥ã¼ID | copilotSchedulerTasks |
éç¥ã®ä¸å 管ç
type NotificationMode = "sound" | "silentToast" | "silentStatus";
function getNotificationMode(): NotificationMode {
const config = vscode.workspace.getConfiguration("myExtension");
return config.get<NotificationMode>("notificationMode", "sound");
}
function notifyInfo(message: string, timeoutMs = 4000): void {
const mode = getNotificationMode();
switch (mode) {
case "silentStatus":
vscode.window.setStatusBarMessage(message, timeoutMs);
break;
case "silentToast":
void vscode.window.withProgress(
{ location: vscode.ProgressLocation.Notification, title: message },
async () => {},
);
break;
default:
void vscode.window.showInformationMessage(message);
}
}
function notifyError(message: string, timeoutMs = 6000): void {
const mode = getNotificationMode();
if (mode === "silentStatus") {
vscode.window.setStatusBarMessage(`â ${message}`, timeoutMs);
console.error(message);
return;
}
void vscode.window.showErrorMessage(message);
}
è¨å®ã§ notificationMode ãé¸ã¹ãããã«ãããã¨ã§ãã¦ã¼ã¶ã¼ãéç¥é³ãå¶å¾¡å¯è½ã