From devtools-pro
CLI tools, VS Code extensions, SDKs, developer experience, API design. Use when building or improving developer tooling.
How this skill is triggered — by the user, by Claude, or both
Slash command
/devtools-pro:devtools-proThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Build developer tools that developers love: CLI tools, VS Code extensions, SDKs, API clients, and documentation. Developer experience is the product.
Build developer tools that developers love: CLI tools, VS Code extensions, SDKs, API clients, and documentation. Developer experience is the product.
Use this when:
Use this ESPECIALLY when:
Don't skip when:
cli/
cmd/
root.go ← cobra/cli root command
projects.go ← `cli projects list`
config.go ← `cli config set`
auth.go ← `cli login`
internal/
api/
client.go ← HTTP client
config/
manager.go ← Config file management
output/
table.go ← Table formatter
json.go
auth/
token.go
main.go
// cobra CLI example (Go)
var projectsCmd = &cobra.Command{
Use: "projects",
Short: "Manage projects",
RunE: func(cmd *cobra.Command, args []string) error {
client := api.NewClient(config.GetToken())
format, _ := cmd.Flags().GetString("format")
projects, err := client.ListProjects()
if err != nil {
return fmt.Errorf("failed to list projects: %w", err)
}
switch format {
case "json":
return output.JSON(os.Stdout, projects)
default:
output.Table(os.Stdout, projects, []string{"ID", "Name", "Status"})
return nil
}
},
}
func init() {
projectsCmd.Flags().StringP("format", "f", "table", "Output format (table|json)")
rootCmd.AddCommand(projectsCmd)
}
// extension.ts
import * as vscode from 'vscode'
export function activate(context: vscode.ExtensionContext) {
// Register command
const disposable = vscode.commands.registerCommand('seniordev.createProject', async () => {
const name = await vscode.window.showInputBox({
prompt: 'Project name',
placeHolder: 'my-awesome-project',
validateInput: (value) => value.length > 0 ? null : 'Name is required',
})
if (!name) return
// Show progress
await vscode.window.withProgress({
location: vscode.ProgressLocation.Notification,
title: 'Creating project...',
}, async (progress) => {
progress.report({ message: 'Setting up...' })
await api.createProject(name)
vscode.window.showInformationMessage(`Project '${name}' created!`)
})
})
context.subscriptions.push(disposable)
}
// Client SDK for your API
export class SeniorDevClient {
private client: HttpClient
constructor(config: { apiKey: string; baseUrl?: string }) {
this.client = new HttpClient({
baseURL: config.baseUrl || 'https://api.seniordev.com/v1',
headers: { Authorization: `Bearer ${config.apiKey}` },
timeout: 10000,
})
}
// Typed methods with autocomplete
projects = {
list: (params?: PaginationParams) =>
this.client.get<PaginatedResponse<Project>>('/projects', { params }),
get: (id: string) =>
this.client.get<Project>(`/projects/${id}`),
create: (data: CreateProjectInput) =>
this.client.post<Project>('/projects', data),
update: (id: string, data: Partial<Project>) =>
this.client.patch<Project>(`/projects/${id}`, data),
delete: (id: string) =>
this.client.delete(`/projects/${id}`),
}
tasks = {
list: (projectId: string) => this.client.get(`/projects/${projectId}/tasks`),
create: (projectId: string, data: CreateTaskInput) => this.client.post(`/projects/${projectId}/tasks`, data),
}
}
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub haj1t/senior-dev-squad-skills --plugin devtools-pro