Agent Skills: vscode-feature-command

Register a new command in a VS Code extension by updating package.json contributes.commands and src/extension.ts activate function. Use when the user wants to add a functional command (e.g., text formatting, code generation, UI action) to a VS Code extension.

UncategorizedID: teachingai/full-stack-skills/vscode-feature-command

Install this agent skill to your local

pnpm dlx add-skill https://github.com/partme-ai/full-stack-skills/tree/HEAD/skills/vscode-skills/vscode-feature-command

Skill Files

Browse the full folder contents for vscode-feature-command.

Download Skill

Loading file tree…

skills/vscode-skills/vscode-feature-command/SKILL.md

Skill Metadata

Name
vscode-feature-command
Description
"Register a new command in a VS Code extension by updating package.json contributes.commands and src/extension.ts activate function. Use when the user wants to add a functional command (e.g., text formatting, code generation, UI action) to a VS Code extension."

When to use this skill

Use this skill when the user wants to add a new functional command (e.g., "Hello World", "Format Text") to the extension.

How to use this skill

Adding a command requires updates to two files: package.json and src/extension.ts.

Step 1: Update package.json

Add the command definition to the contributes.commands array.

// package.json
{
  "contributes": {
    "commands": [
      {
        "command": "extension.myCommand", // Unique ID
        "title": "My Extension: Do Something" // Display Name
      }
    ]
  }
}

Step 2: Update src/extension.ts

Register the command in the activate function.

// src/extension.ts
import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
    // ... existing code ...

    let disposable = vscode.commands.registerCommand('extension.myCommand', () => {
        // Implementation logic here
        vscode.window.showInformationMessage('Command executed!');
    });

    context.subscriptions.push(disposable);
}

Best Practices

  • Command ID Naming: Use extensionName.actionName format to avoid conflicts.
  • Async Handling: If the command logic is asynchronous, use async () => { await ... }.
  • Error Handling: Wrap logic in try-catch blocks if it involves external operations.