Best for
- Building a CLI tool for developers (argument parsing, subcommands, interactive prompts)
- Designing and implementing an SDK or client library for an API
- Creating code generators from OpenAPI, GraphQL, or Protobuf schemas
vasilyu1983/AI-Agents-public/frameworks/shared-skills/skills/software-devtools/SKILL.md
Designs developer tools, SDKs, CLIs, IDE extensions, and code generators. Use when shaping DX, typed clients, code generation, or package distribution workflows.
Decision brief
Build tools, SDKs, CLIs, IDE extensions, and code generators that other developers trust and adopt.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Declared | Source record | Install path and trigger |
| Claude Code | Declared | Source record | Install path and trigger |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/vasilyu1983/AI-Agents-public --skill "frameworks/shared-skills/skills/software-devtools"Inspect the Agent Skill "software-devtools" from https://github.com/vasilyu1983/AI-Agents-public/blob/53f6cb73ea53a2646e3e7d4665062ad66f3683ac/frameworks/shared-skills/skills/software-devtools/SKILL.md at commit 53f6cb73ea53a2646e3e7d4665062ad66f3683ac. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
1. Classify the tool surface: CLI, SDK, code generator, editor extension, or codemod. 2. Route user-facing app work, backend services, or dependency-policy questions to the adjacent skill when appropriate. 3. Choose the implementation pattern from the decision tree and make the…
1. Start from data/sources.json (official docs, release notes, framework comparisons). 2. Run a targeted web search for the specific tool or framework. 3. Check GitHub repository activity (last release date, open issues, commit frequency).
Review the “Quick Reference” section in the pinned source before continuing.
Building a CLI tool for developers (argument parsing, subcommands, interactive prompts)
Building user-facing web or mobile apps → software-frontend, software-mobile
Permission review
The documentation asks the agent to create, modify, or delete local files.
Install `changesets` (`@changesets/cli`); run `changeset init` to create the `.changeset/` directory.The documentation asks the agent to run terminal commands or scripts.
Run the CLI through an agent smoke test: have an LLM issue three chained commands using only `--help` output for discovery.The documentation includes network, browsing, or remote request actions.
Use web search/web fetch to verify current external facts, versions, pricing, deadlines, regulations, or platform behavior before final answers.Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 95/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 80 | Source | Repository attention, not individual Skill quality |
| Compatibility | 2 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Build tools, SDKs, CLIs, IDE extensions, and code generators that other developers trust and adopt.
| Concern | Defaults |
|---|---|
| CLI framework (Node.js) | Commander.js, oclif, Ink (React for CLI) |
| CLI framework (Go) | Cobra + Viper |
| CLI framework (Rust) | clap + dialoguer |
| CLI framework (Python) | Click / Typer |
| SDK design | Typed clients, builder pattern, progressive disclosure |
| Code generation | OpenAPI Generator (self-hosted, free), Fern/Speakeasy (managed, idiomatic SDKs), GraphQL Codegen, Protobuf/Connect, custom AST transforms |
| IDE extensions | VS Code Extension API, JetBrains Plugin SDK, LSP (Language Server Protocol) |
| Package publishing | npm, PyPI, crates.io, NuGet, Maven Central |
| Developer docs | Mintlify, Docusaurus, Starlight, ReadMe, Fern |
| DX metrics | Time-to-first-API-call, SDK adoption, error rate, support tickets |
Developer tooling task
-> Identify user, workflow, repo, and failure mode
-> Choose CLI, script, IDE, CI, or service integration
-> Define command shape, config, output, and exit codes
-> Implement focused tool with tests and docs
-> Verify current toolchain and platform behavior
-> Capture migration, rollback, and adoption notes
What kind of developer tool?
├─ Interactive terminal tool
│ └─ CLI framework per language (Commander.js / Cobra / clap / Typer)
│ ├─ Needs interactive prompts? → Ink, dialoguer, Typer, survey
│ └─ Needs scriptable output? → --json flag, structured stdout
├─ Library other devs import
│ └─ SDK with typed API, clear errors, minimal dependencies
│ ├─ Wrapping a REST API? → Typed client from OpenAPI spec
│ ├─ Wrapping a GraphQL API? → Codegen typed operations
│ └─ General-purpose library? → Builder pattern, progressive disclosure
├─ Editor integration
│ ├─ VS Code only? → VS Code Extension API (largest market share)
│ ├─ Multiple editors? → Language Server Protocol (LSP)
│ └─ JetBrains only? → IntelliJ Plugin SDK
├─ Generate code from schema
│ ├─ OpenAPI → OpenAPI Generator or custom templates
│ ├─ GraphQL → GraphQL Codegen with typed plugins
│ └─ Protobuf → buf + Connect or gRPC codegen
├─ Transform existing code
│ ├─ JavaScript/TypeScript → jscodeshift or ts-morph
│ ├─ Python → libcst
│ └─ Multi-language → custom AST tooling per parser
└─ Developer documentation portal
├─ Fast setup, good defaults → Mintlify or Starlight
└─ Full React flexibility → Docusaurus
Keep the API surface small. Every public method is a commitment.
client.send(message) works out of the box; client.send(message, { retries: 3, timeout: 5000 }) is there when needed.new ClientBuilder().withAuth(token).withRetries(3).build(). Avoid deep option objects with 20 fields.tool <command> [args] [--flags] is the universal pattern.tool auth login, tool auth logout, tool config set. Keep depth to two levels maximum.--yes / -y to skip prompts in CI. Keep interactive mode as a fallback when flags are missing — agents cannot press arrow keys or answer interactive prompts, so every input must be passable as a flag.--quiet / --silent flag.NO_COLOR environment variable and --no-color flag.~/.config/toolname/config.yaml, .toolnamerc, toolname.config.js — support a sensible hierarchy with local overrides.tool completions <shell> command.--json flag: every command that produces output should support --json for machine-readable structured output. Scriptability is not optional.Agents are now primary CLI consumers alongside humans. Design for both.
--help discovery: don't dump all docs upfront. An agent runs mycli, sees subcommands, picks one, runs mycli deploy --help, gets what it needs. No wasted context on commands it won't use.--help: agents pattern-match off mycli deploy --env staging --tag v1.2.3 faster than they read a description. Every subcommand's help should include at least two usage examples.--stdin for config import, support --output tag-only for chaining. Don't require positional args in unusual orders.--dry-run for destructive actions: agents should preview what a deploy or deletion would do before committing. Let them validate the plan, then run it for real.--yes / --force to skip confirmations: humans get "are you sure?" prompts; agents pass --yes to bypass. Make the safe path the default but allow bypassing.mycli service list, it should be able to guess mycli deploy list and mycli config list. Pick a pattern (resource + verb or verb + resource) and use it everywhere./* DO NOT EDIT */ walls of shame — use .gitattributes with linguist-generated=true instead.--dry-run to preview changes. Support partial regeneration (only changed schemas).activate() on first use of a contribution point, deactivate() for cleanup. Keep activation lightweight — defer heavy work.@vscode/test-electron for integration tests. Mock VS Code APIs for unit tests. Test LSP servers independently with protocol-level tests..vsix packages) remains the default for VS Code-proper users; Open VSX (Eclipse Foundation, vendor-neutral, reached 1.0 in 2026 with AWS/Google-backed managed hosting) is the registry for VS Code forks — Cursor, VSCodium, Windsurf, and others that cannot use Microsoft's marketplace terms. Publish to both when the extension should reach fork users. JetBrains Marketplace for IntelliJ plugins.feat:, fix:, breaking:) and auto-generate changelogs. Keep a human-readable CHANGELOG.md for significant releases.NPM_TOKEN) reached general availability in mid-2025 and is the current default for CI-published packages — provenance attestations are generated automatically under it, so the manual --provenance flag is only needed for non-OIDC publish paths. Sigstore backs the attestation signing. Verify current requirements (npm CLI version, supported CI providers) at npm's docs before wiring a release pipeline, since provider support has been expanding.exports field in package.json for conditional resolution. Test both entry points.sideEffects: false in package.json. Avoid barrel files that defeat dead-code elimination. Export granularly.npm deprecate or equivalent. Provide migration guides. Keep security patches flowing to previous major for 6-12 months.rm -rf node_modules && npm ci && npm test)package.json fields verified: main, types, exports, filesbundlephobia, size-limit, or npm pack | gzip -c | wc -c)npm pack && npm install ./pkg.tgz in a fresh projectCHANGELOG.md updated; migration guide written for any breaking changeid-token: write permission, no static token in CI) over the manual --provenance flag pathThe npm ecosystem has had large, self-propagating compromises — the "Shai-Hulud" worm (first wave September 2025, a second wave in November 2025) backdoored hundreds of popular packages via a malicious install script that harvested CI/CD secrets and used any npm tokens it found to publish trojanized versions of the maintainer's other packages, spreading worm-style across the registry. Treat this as the current baseline threat model for anything you publish or depend on, not a one-off incident:
postinstall/preinstall scripts as a red flag. Audit them before allowing a new or updated dependency in; consider npm install --ignore-scripts in CI where the build does not need them.Devtools churn fast — a new build tool, linter, or runtime claims a 10-100x speedup every few months. Most teams should not chase them. Judgment, not hype, decides the toolchain.
| Metric | Target | Signal when off |
|---|---|---|
| Local feedback-loop time (save → test result / reload) | < 2 seconds for unit tests, < 1 second for HMR | Slow inner loop kills iteration speed faster than any CI metric |
| Time-to-first-API-call | < 5 minutes from npm install | Onboarding friction; simplify the quickstart |
| Onboarding drop-off rate | Track per step in the guide | High drop-off at a specific step → missing example or broken link |
| SDK version adoption (latest major) | > 60% within 3 months of release | Breaking-change pain or missing migration docs |
| Error rate by method | < 1% for common operations | Fix SDK error messages and docs; don't just add FAQ entries |
| Support ticket clustering | Track top-3 recurring topics | Recurring questions → undiscoverable API surface |
| Developer NPS / satisfaction | Quarterly pulse; structured interviews | Quantitative metrics miss the "this feels bad" signals |
Do
--json output, and --help with examples from day one.NO_COLOR, --quiet, and --yes flags in every CLI tool.Avoid
__generated__ noise, excessive comments).Recipes keyed to DX or distribution moments. Each lists the shortest path to a ship-ready, consumer-safe outcome.
changesets (@changesets/cli); run changeset init to create the .changeset/ directory.changeset to declare the semver bump level and write a change summary.main, the Changesets GitHub Action opens a "Release PR" that aggregates bumps and updates CHANGELOG.md.npm pack + install from tarball before merging the Release PR.--json to every subcommand; on success, emit { "ok": true, "data": { ... } }; on error, emit { "ok": false, "error": { "code": "...", "message": "..." } }.--help.--dry-run to all destructive commands; agents validate the plan before committing.--yes to skip confirmation prompts; agents pass it in automation contexts.--help output for discovery.spectral is the long-time incumbent but has seen little investment since its Stoplight/SmartBear acquisition and lags OpenAPI 3.2 — check current maintenance activity before adopting it fresh, and consider Redocly's linter or a vendor SDK-generator's built-in linter as alternatives.openapi-generator-cli (free, self-hosted, Java-based, 50+ language targets) for full control and zero cost, or a managed generator such as fern (acquired by Postman in early 2026) or Speakeasy for idiomatic, low-maintenance SDKs with synced docs. Managed generators cost money and add a vendor dependency — pick them when SDK polish and low upkeep matter more than self-hosting.linguist-generated=true in .gitattributes.vscode-languageserver for Node.js, tower-lsp for Rust).textDocument/didChange, apply incremental edits to the parse tree; publish diagnostics via textDocument/publishDiagnostics.textDocument/completion and textDocument/hover using the AST node at the cursor position.vscode.SecretStorage, not globalState); never in settings.json.vscode.env.openExternal + a local callback server.401 from the API, treat the token as revoked: clear stored credentials and re-trigger the auth flow.activate().When users ask about current CLI frameworks, SDK patterns, code generation tools, or package publishing best practices, verify current information before answering.
Before applying this skill on a non-trivial task, read learnings.consolidated.md in this directory (and learnings.md if present).
After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.
Frequently asked questions
Build tools, SDKs, CLIs, IDE extensions, and code generators that other developers trust and adopt.
The source record exposes this install command: npx skills add https://github.com/vasilyu1983/AI-Agents-public --skill "frameworks/shared-skills/skills/software-devtools". Inspect the command and pinned source before running it.
The pinned source record declares support for: codex, claude code.
Static rules flagged write-files, exec-script, network in the source; the page lists the matching lines and excerpts.
Alternatives
upex-galaxy/agentic-qa-boilerplate
Plan, write, and review automated tests following KATA (Komponent Action Test Architecture) on Playwright + TypeScript, or explain existing automated tests in a sealed read-only mode. Use when writing E2E or API/integration tests, creating Page or Api components, designing ATCs, parameterizing test data, registering fixtures, reviewing test code for KATA compliance, or requesting break-down-tests / a plain-English test breakdown. The explain mode reads source and reports assertions without enter
upex-galaxy/agentic-qa-boilerplate
Analyze, prioritize, and document test cases in TMS (Jira/Xray), or repair an existing Story-ATS-ATP-ATR-TC cascade through a sealed explicit mode. Use for Test/ATP/ATR artifacts, ROI and automation verdicts, maintaining traceability, fix-traceability, or broken TMS links. The repair-traceability mode audits, plans, waits for explicit approval, applies, and verifies without launching the general documentation workflow. Do NOT use for writing test code (test-automation) or running suites (regress
vasilyu1983/AI-Agents-public
Designs AI-first help centers and self-service support systems. Use when shaping taxonomy, article templates, support AI, or docs platform choices.
oaustegard/claude-skills
Generate hierarchical _FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting. Supports large complex codebases through feature-driven decomposition into sub-feature files. Uses a multi-pass synthesis: orientation → detail → overview rewrite. Use when someone says "what does this do", "document features", "feature inventory", "_FEATURES.md", or needs to understand a codebase's purpose before modifying it. Complements tre