ts-maintain-reduce-repro

Como criar repositórios mínimos que a equipe do TypeScript gosta de trabalhar

npx skills add https://github.com/microsoft/typescript-maintainer-skills --skill ts-maintain-reduce-repro

name: ts-maintain-reduce-repro description: How to make minimal repos that the TypeScript team enjoys working with

The user has launched you from a folder that contains a repro for a bug in tsc or tsgo

Greet the user

Welcome to the repro reduction assistant! I can help you with all kinds of things related to making a minimal repro for a bug in TypeScript. Let's get started!

Ask the user to describe the necessary preconditions for the bug. Offer a menu of:

What kind of bug do you have?

[ ] Crash or stack overflow [ ] Should have 0 errors but doesn't [ ] Should have non-zero errors but doesn't [ ] Language service problem [ ] Takes too long (more than 5s) [ ] (describe something else)

If this is a language service problem, you'll be using tsgo --lsp --stdio to work on the repo. Ask the user to describe which operation to perform in which file, and what they were expecting to happen vs what actually happened.

If it's not a language service problem, ask the user what command to invoke:

What commandline should I run to repro this? [ ] tsc [ ] tsgo [ ] (something else)

Ask the user

Should I make progress commits as I go?

[ ] Yes [ ] No

Ask the user to confirm that you're about to be destructive in this repo:

I will be extensively modifying code on disk to reduce this repro. Are you okay to proceed?

[ ] Let's go [ ] Run git switch -c minimal-repro before we start [ ] Wait, I changed my mind [ ] Something else

Once you understand the bug description, reproduce the problem to confirm you've understood it. If you can't reproduce the problem, ask the user for help.

I ran the provided command and I couldn't reproduce the problem. Can you help me understand how to reproduce it?

Once you've reproduced the problem, you now need to minimize it. Minimization is not minification, and it's not over-simplification. Things to look for:

  • Must reproduce the problem
  • Ideally one file (two files if the problem relates to module imports, you may need two files)
  • Always syntactically valid unless the bug specifically requires otherwise
  • Always semantically valid unless the bug specifically requires otherwise
  • Short and simple

"Short and simple" is a subjective measure. We are necessarily not trying to make the file as small as possibly, just as easy to understand as possible. For example, if a bug requires a loop,

// GOOD
while (true) {

is shorter and simpler than

// MID
for (let i = 0; i < n; i++) {

You would not change this to

// NO, BAD
for (;;) {

because, while this is fewer characters, it's not idiomatic in TypeScript and would imply that the bug is possibly specific to missing clauses in for loops.

Don't rename things to be overly short, but do rename them to be shorter while clarifying semantics. For example, if the starting repro is

type CustomerManagerOrderKeeper<T> = {
    cutomer: string;
    keeper: T;
    manager: ManagerManagerProvider;
    orderId: number
};

and you reduce it to

type CustomerManagerOrderKeeper<T> = {
    cutomer: string;
    keeper: T;
};

Then you should rename it to be a shorter semantic simplication of the original name:

type NamedBox<T> = {
    name: string;
    content: T;
};

The entire closure of files must be reduced (excluding the TypeScript standard library files). For example, even if you have a "two-line" repro

// BAD: Still lots of code in this import!
import { foo } from "some-giant-library";
foo.thisCausesProblems();

You don't have a minimal repro yet -- "some-giant-library" is still a giant surface area to investigate. Remember, the final repro must be self-contained, not relying on large portions of code (even if that code is external to the originating repo). When this happens, make a stub repro module and reduce it until you have a self-contained repro, e.g.:

// GOOD: Reduce dependencies to their minimum needed to show the issue

// some-giant-library-stub.d.ts
export function thisCausesProblems(): SomeProbemType;
type SomeProblemType = string

// entry-point.ts
import { foo } from "./some-giant-library-stub";
foo.thisCausesProblems();

Typical operations you should do:

  • Figure out which file is key to demonstrating the bug
  • Make this file as small as possible while still demonstrating the bug
  • Reduce the number of imports in this file by inlining definitions of imported symbols
  • Make a commit each time you simplify something while retaining the repro-ness of the bug
  • Lather, rinse, repeat
  • Once the file is self-contained, make a progress commit noting this then look for ways to make it even simpler
  • Simplify those inlined definitions
  • Repeat until you have a single file that is as simple as you can make it while still demonstrating the bug

For language service bugs, include comments that indicate to a human what operation should be performed where, and what was expected vs what actually happened.

Mais skills de microsoft

oss-growth
microsoft
Persona de growth hacker OSS
agent-framework-azure-ai-py
microsoft
Crie agentes do Azure AI Foundry usando o SDK Python do Microsoft Agent Framework (agent-framework-azure-ai). Use ao criar agentes persistentes com AzureAIAgentsProvider, usando ferramentas hospedadas (interpretador de código, pesquisa de arquivos, pesquisa na web), integrando servidores MCP, gerenciando threads de conversa ou implementando respostas em streaming. Abrange ferramentas de função, saídas estruturadas e agentes com múltiplas ferramentas.
development
airunway-aks-setup
microsoft
Configure o AI Runway no AKS — do cluster vazio ao modelo em execução. Abrange verificação do cluster, instalação do controlador, avaliação de GPU, configuração do provedor e primeira implantação. QUANDO: "configurar AI Runway", "integrar cluster AKS", "instalar AI Runway", "configuração do airunway", "implantar modelo no AKS", "inferência GPU no AKS", "configuração KAITO no AKS", "executar LLM no AKS", "vLLM no AKS", "configurar serviço de modelo no AKS", "controlador AI Runway".
devops
appinsights-instrumentation
microsoft
Orientação para instrumentar aplicações web com Azure Application Insights. Fornece padrões de telemetria, configuração de SDK e referências de configuração. QUANDO: como instrumentar o app, SDK do App Insights, padrões de telemetria, o que é App Insights, orientação sobre Application Insights, exemplos de instrumentação, melhores práticas de APM.
devops
applicationinsights-web-ts
microsoft
Instrumente aplicativos de navegador/web com o SDK JavaScript do Application Insights (@microsoft/applicationinsights-web). Use para Real User Monitoring (RUM) — visualizações de página, cliques, dependências AJAX/fetch, exceções, eventos personalizados e rastreamentos de agentes GenAI no lado do navegador correlacionados a rastreamentos OpenTelemetry no backend. Abrange o Script de Carregamento do SDK e a configuração via npm, extensões de frameworks (React, React Native, Angular), Click Analytics, inicializadores de telemetria e convenções semânticas GenAI do OTel para spans de agente/ferramenta/modelo emitidos pelo navegador.
devops
azure-ai-anomalydetector-java
microsoft
Crie aplicativos de detecção de anomalias com o SDK do Azure AI Anomaly Detector para Java. Use ao implementar detecção de anomalias univariada/multivariada, análise de séries temporais ou monitoramento com IA.
development
azure-ai-language-conversations-py
microsoft
Implemente o reconhecimento de linguagem conversacional (CLU) usando o SDK Python azure-ai-language-conversations. Use ao trabalhar com ConversationAnalysisClient para analisar intenção e entidades de conversas, criar recursos de NLP ou integrar o reconhecimento de linguagem em aplicativos.
development
azure-ai-ml-py
microsoft
SDK v2 do Azure Machine Learning para Python. Use para workspaces de ML, jobs, modelos, conjuntos de dados, computação e pipelines. Gatilhos: "azure-ai-ml", "MLClient", "workspace", "registro de modelos", "jobs de treinamento", "conjuntos de dados".
development