npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pi-dsr-workflow

v0.3.4

Published

Guided, verifiable development workflow for Pi: one /work command, three small tools, persistent state and content-bound evidence.

Readme

pi-dsr-workflow

Pacote para o Pi que conduz um trabalho de desenvolvimento por etapas verificáveis: um comando /work, três tools pequenas, estado persistente fora da conversa e evidências ligadas ao conteúdo verificado.

As especificações normativas estão em pi-workflow-specs/.

Instalação

pi install npm:pi-dsr-workflow           # do npm
pi -e /caminho/para/pi-dsr-workflow      # uma execução a partir do código
pi install /caminho/para/pi-dsr-workflow # instalação local a partir do código

Compatibilidade

A versão 0.3 foi validada com o Pi 1.3.0 e 1.4.0; outra versão carrega, e o /work doctor a informa como não validada. Requer Node 22.19.0 ou mais recente e um repositório Git; a execução paralela exige o Git 2.40 ou mais recente. Medido no Linux x64; macOS e WSL não foram testados, e no Windows nativo o plugin fica desligado (/work doctor mostra a causa). A publicação de issues e o /work pr só falam com o github.com, pelo gh autenticado. As jornadas reais usaram quantforge-openai/deepseek-v4.1-flash, que precisa de compat.requiresReasoningContentOnAssistantMessages no models.json para não recusar o turno seguinte com HTTP 400. Extensões que forçam turnos, reativam tools ou gravam estado no repositório conflitam com o fluxo, e o /work doctor aponta as conhecidas. No código-fonte, docs/matriz-de-compatibilidade.md traz os detalhes e a evidência de cada item.

Skills para uso manual

O fluxo injeta a skill de cada etapa, e nenhuma delas entra na lista de skills do modelo. Para usá-las por conta própria, inicie o Pi com --work-manual-skills: o plugin publica cópias sem alteração das skills do upstream em <agentDir>/pi-dsr-workflow/manual-skills/, com a licença MIT do upstream ao lado. As que o upstream deixa visíveis entram na lista do modelo, e todas ficam acessíveis por /skill:nome; nesse perfil o /work fica desligado na sessão. Um nome que já exista em outra fonte, como ~/.agents/skills/codebase-design, continua com a skill existente; /work doctor lista esses nomes.

Execução delegada

A execução paralela vem desligada. /work parallel on a liga no repositório, /work parallel off a desliga e /work parallel 1 a 4 a liga com esse limite de executores; sem argumento, o comando mostra o estado e de onde ele vem. A escolha fica em <agentDir>/pi-dsr-workflow/<repositório>/settings.json; o arquivo <agentDir>/pi-dsr-workflow/settings.json, editado à mão, vale para todos os repositórios, no mesmo formato ({ "parallel": true, "maxExecutors": 3 }). A flag --work-parallel liga a execução paralela só naquela sessão. Vale a flag, depois o arquivo do repositório, depois o global; o limite vem dos arquivos, até 3 por padrão, de 1 a 4. Uma mudança no meio do trabalho vale a partir do próximo passo do controlador, e um arquivo inválido é ignorado com um aviso. Com a execução paralela ligada, depois do aceite do plano o controlador entrega cada ticket sem dependência pendente a um executor próprio, em vez de implementar um ticket por vez na conversa. Cada executor roda numa sessão isolada do Pi, com o modelo da sessão, sem shell e sem extensões: só lê e edita arquivos do seu worktree (<agentDir>/pi-dsr-workflow/<repositório>/worktrees/<trabalho>/<ticket>, no branch <branch do trabalho>--<ticket>), roda os checks do ticket e reporta o resultado. Do workspace principal, o worktree recebe apenas o node_modules; um projeto cujos checks dependam de outros diretórios fora do Git deve seguir com a execução paralela desligada. Os checks e as revisões do ticket rodam sobre o worktree. Aceito, o ticket entra no workspace principal por merge de 3 vias (git merge-tree, que exige Git 2.40 ou mais novo): o merge é montado contra um retrato do workspace, os checks dos tickets já integrados e os do ticket rodam sobre ele num worktree à parte (worktrees/<trabalho>/_integration), e só então o resultado é escrito, sem tocar no índice do usuário. Um conflito ou um check que falhe depois do merge rejeita a tentativa: nada é escrito, o merge fica em refs/pi-dsr-workflow/<trabalho>/merges/<ticket>, o worktree e o branch ficam preservados, e o ticket recomeça do estado integrado num worktree novo (<ticket>-2, <ticket>-3), com o diff da tentativa anterior no pacote do executor (inteiro, ou o caminho do arquivo que o guarda quando não cabe no pacote, que o executor pode ler); depois de 3 rejeições o trabalho bloqueia. No diálogo do plano, um aviso aponta tickets independentes que rodam o mesmo check, porque o worktree de cada um só vê o seu lado. Nenhum limite de tokens ou de tempo interrompe um executor; /work status mostra os tokens que executores e revisões já gastaram. Um executor que termina sem integrar o ticket, sem reportar ou com erro, devolve o ticket a pendente e bloqueia o trabalho, e /work next delega de novo no mesmo worktree. /work pause e /work cancel param os executores, e nada no worktree é apagado. Terminados os tickets, a verificação e a revisão finais seguem em segundo plano, e o plugin avisa quando a entrega espera /work next. Na entrega, os worktrees com exatamente o conteúdo integrado são removidos sem --force, junto com seus branches; os demais ficam, e /work doctor gc lista e remove, com confirmação, os de trabalhos encerrados cujo conteúdo uma ref do plugin guarda.

Publicação no GitHub

No caminho completo, /work publish publica a spec aprovada e os tickets do plano como issues do repositório origin no github.com, pelo gh autenticado; o token nunca passa pelo plugin. O primeiro uso pede para ativar a publicação no repositório e guarda a escolha em <agentDir>/pi-dsr-workflow/<repositório>/github.json (enabled_at); apague o campo para desativar. Cada envio mostra antes o lote de issues novas e de atualizações e espera a confirmação. As issues levam a label pi-dsr-workflow e uma chave no corpo; os tickets viram sub-issues da spec, e as dependências do plano viram dependências nativas quando o repositório as aceita. Depois disso, o plugin fecha sem perguntar a issue de cada ticket integrado, a da spec na entrega, e todas como não planejadas num /work cancel. Um envio de resultado incerto é reconciliado pela chave antes de qualquer nova tentativa. Uma issue editada no GitHub depois da publicação bloqueia o trabalho sem ser sobrescrita: /work publish substitui o texto remoto, ou /work change ajusta o plano. Publicar nunca faz push nem abre PR. O /work doctor mostra o repositório configurado e o que falta enviar de cada trabalho.

Depois da entrega local, /work pr [id] envia o commit entregue a um branch próprio em origin (pi-dsr/<trabalho>) e abre um PR em rascunho para o branch em que o trabalho começou. O push usa as credenciais do seu Git, e o PR o gh autenticado. O consentimento é separado do das issues: o primeiro /work pr pede para ativar push e PRs no repositório e grava push_enabled_at no mesmo github.json (apague o campo para desativar); ter ativado as issues nunca autoriza um push. Cada envio mostra antes o push, os commits, head → base e o título, e espera a confirmação; quando pushurl ou pushInsteadOf do seu Git levam o push para fora do repositório consentido, o diálogo mostra a URL, e um envio pendente aprovado para outro repositório ou outra URL de push é descartado e volta ao diálogo. O push nunca é forçado: se o branch remoto divergiu da entrega, nada é sobrescrito e você escolhe entre um branch novo (pi-dsr/<trabalho>-2) e resolver à mão. Um branch base ausente em origin não é enviado pelo plugin; publique-o antes. O corpo do PR traz o objetivo, os critérios, a garantia, o commit entregue e Refs às issues publicadas do trabalho. Um push ou uma abertura de resultado incerto é conferido em origin e procurado pelo branch e pela chave antes de qualquer nova tentativa, e um PR editado no GitHub só é substituído se você escolher. Sem id, vale o trabalho vinculado à sessão ou, se não houver, o único entregue (ou o que você escolher); um trabalho já encerrado também pode ser enviado. O plugin nunca faz merge, nunca fecha o PR e não acompanha CI nem revisões; /work status mostra o número e o estado do PR, e o /work doctor os envios pendentes.