Post-merge hotfix workflow (SDD)

VerifiedCaution

Formalizes post-merge point fixes in an SDD pipeline: no PRD/TRD, but mandatory TDD, code review and QA/security/SRE reviews.

Sby Skills Guide Bot
DevelopmentIntermediate
9/16/2026
Claude Code
#sdd#hotfix#tdd#code-review#github-issues

Recommended for

Automated summary

Formalizes post-merge point fixes without a PRD or TRD while preserving TDD, code review, and a GitHub issue link.

Strengths

  • Sets an explicit gate: no hotfix branch without an associated GitHub issue.
  • Connects the fix to the relevant spec and records a hotfix-<date> entry in the approval history.
  • Keeps TDD and risk-appropriate reviews in place even without product or architecture documents.
  • Explicitly calls for switching to the full SDD workflow if scope or risk grows.

Limitations

  • Requires a configured and authenticated GitHub remote via gh; the workflow stops otherwise.
  • Not suitable for new features, new acceptance criteria, or significant architecture decisions.
  • The supplied text cuts off mid-sentence and does not describe all execution steps.
When to use it

Use it when a bug is found after a spec has been merged, or for a small enhancement without an originating spec that does not justify a PRD or TRD.

When not to use it

Do not use it for a new feature, a major architectural change, or when the required GitHub access is unavailable.

Security analysis

Caution
Quality score82/100

This is a process runbook for a post-merge hotfix flow, not an executable payload. Its risk profile is 'caution' rather than 'safe' because it deliberately drives privileged tooling — git history/branches, authenticated GitHub CLI calls (issue/label/milestone creation, PR opening), working-tree isolation, and subagent invocation — for entirely legitimate engineering purposes. Nothing exfiltrates data or performs destructive operations, but the empty allowed-tools declaration understates the shell and network capabilities it expects.

Findings
  • •Declared allowed-tools is empty, but the workflow requires shell execution: git (branch/working tree), `gh auth status`, `gh issue create`, `gh label create`, `gh api repos/<owner>/<repo>/milestones`, plus spawning implementation/review subagents via the Agent tool — a tool-permission mismatch auditors/installers should reconcile.
  • •Instructs execution of repository-local helper scripts (`skills/status/scripts/sdd-status.sh` / `.ps1`) whose contents are not shown, so their behavior cannot be verified from this file.
  • •Depends on and delegates authority to external files not included in the package (`.claude/agents/backend-developer.md`, `frontend-developer.md`, `architect.md`, `docs/QUALITY-GATES.md`, `docs/GIT-WORKFLOW.md`), so the effective instructions may differ from what is reviewed here.
  • •No destructive, exfiltration, obfuscation, or safety-disabling content found; no secrets, no curl|sh, no base64 payloads. Git/GitHub operations are scoped to opening issues, branches, and draft PRs.
  • •No prompt-injection or role-override attempt detected inside the skill body.
  • •No allowed-tools are declared, yet the skill instructs the agent to run shell/CLI commands (git remote -v, gh auth status, gh issue create, gh api repos/.../milestones, gh label create, git branch/PR creation) and to invoke the Agent tool and AskUserQuestion. The declared capability surface does not match the operations described.
  • •Instructs authenticated GitHub writes (issue creation, labels, milestones, branch/PR). These are non-destructive and legitimate for the described workflow, but they mutate shared remote state and depend on the user's gh credentials.
  • •Step 3 discusses operations 'typically blocked by the auto-mode session classifier' (real infrastructure mutation in production, deliberate load/traffic generation) and requires that they be surfaced in the AskUserQuestion plan and executed manually by the user or under an explicit permission rule. This is a disclosure/handoff, not a request to bypass the classifier, but it is the most safety-adjacent text in the file and should be reviewed in context.
  • •No instructions to exfiltrate data, disable safeguards, or run obfuscated/unpinned remote code (no curl|sh, no base64 payloads, no rm -rf). All commands reference repo-local paths and standard git/gh subcommands.
How this analysis is made

Examples

Post-merge production bug
Encontrei um bug em produção no cálculo de frete do checkout e a spec 0042 já foi mergeada. Rode /sdd-hotfix com issue no GitHub, branch e TDD.
Small enhancement without a spec
Preciso ajustar o texto do e-mail de confirmação; é uma melhoria pontual de baixo risco e não existe spec de origem. Use o fluxo de hotfix, sem PRD/TRD.
Post-merge validation finding
Durante a validação pós-merge da spec de autenticação achei um erro 500 no refresh token. Aplique o /sdd-hotfix e registre o histórico como hotfix-2026-09-01.

name: sdd-hotfix description: Correção pontual pós-merge, fora do ciclo normal de fatias do pipeline SDD. Use quando um bug é encontrado em produção (ou numa validação manual) depois que a spec relacionada já foi mergeada, ou para uma melhoria pontual sem spec de origem — sem PRD/TRD, mas ainda com TDD e as revisões relevantes (code review sempre; QA/segurança/SRE conforme o critério desta skill).

/sdd-hotfix

Formaliza o processo de correção pontual pós-merge: um bug encontrado em produção (ou numa validação manual) depois que a spec relacionada já concluiu o pipeline e foi mergeada, ou uma melhoria pontual sem spec de origem nenhuma. Diferente das 7 etapas normais (docs/SDD-WORKFLOW.md), esta skill não gera PRD nem TRD — o pedido já é concreto o suficiente (um bug específico, um ajuste pontual) para não justificar o levantamento de produto/arquitetura completo. Isso não é uma saída para pular rigor: TDD, code review, e as revisões que se aplicarem continuam obrigatórias.

Quando usar

  • Um bug foi encontrado em produção (ou durante docs/POST-MERGE-VALIDATION.md) numa feature cuja spec já está com todas as fatias mergeadas — não é o caso de "fatia ainda em andamento" (isso volta para /sdd-implement normalmente, achados de revisão da própria fatia).
  • Uma melhoria pontual e de baixo risco é pedida sem nenhuma spec de origem (nunca passou por /sdd-prd).
  • Não use para uma mudança que na prática é uma feature nova (critério de aceite novo, decisão de arquitetura relevante, mais de uma fatia de esforço) — isso é /sdd-prd normalmente, mesmo que o pedido pareça pequeno à primeira vista. Se a correção crescer em escopo/risco no meio da execução desta skill, pare e migre para o fluxo completo em vez de continuar aqui (mesmo espírito de specs/_template/oneshot.template.md).

Passos

  1. Identifique a spec relacionada, se houver. Se o bug está numa área de código que uma spec existente em specs/ introduziu ou alterou por último, essa é a spec relacionada — os artefatos desta rodada (code-review.md/qa-report.md/security-review.md/sre-review.md) são editados in-place nela, com uma linha nova na respectiva "Histórico de aprovações por fatia" usando hotfix-<data> (ex.: hotfix-2026-09-01) no lugar do identificador de fatia (F-N). Se não há nenhuma spec relacionada (melhoria pontual sem origem), crie um diretório dedicado specs/<NNNN>-<slug-curto>/ (próximo número sequencial livre em specs/) contendo só os artefatos de revisão que se aplicarem — sem prd.md/trd.md. 1b. Gate obrigatório: confirme/crie a Issue GitHub deste hotfix antes de criar a branch. Verifique remote GitHub configurado e autenticado (git remote -v, gh auth status).
    • Se houver: se o bug/ajuste já tem uma issue aberta (o usuário citou o número, ou ela existe no repositório), use-a; senão crie uma via gh issue create descrevendo o bug/ajuste, com o label de tipo apropriado (bug ou enhancement). Nenhum hotfix começa sem essa issue — sem exceção, mesmo para uma correção de uma linha. Se o passo 1 identificou uma spec relacionada, identifique essa issue estruturadamente contra ela (docs/QUALITY-GATES.md, seção "TRD"): reaproveite o milestone da spec se ele já existir (gh api repos/<owner>/<repo>/milestones filtrando por título <slug> — o mesmo milestone que architect cria por spec, .claude/agents/architect.md); se ainda não existir nenhum milestone para essa spec/projeto (spec sem decomposição de tarefas em issues), aplique em vez disso um label spec:<slug> (crie com gh label create se faltar). Sem spec relacionada (melhoria pontual sem origem), não há identificação de spec a aplicar.
    • Se não houver remote GitHub configurado/autenticado: pare aqui, não crie a branch — peça ao usuário para configurar git remote + gh auth login antes de prosseguir. Não há alternativa "sem GitHub" para hotfix (diferente do PRD, que dispensa GitHub).
  2. Nomeie a branch seguindo a tabela de prefixos de docs/GIT-WORKFLOW.md (seção "Mudanças no próprio pipeline", mesma tabela vale para hotfix de qualquer projeto): hotfix/<slug> se algo já quebrado em produção/main precisa de correção urgente; fix/<slug> se é uma correção sem urgência de produção, ou a melhoria pontual sem spec de origem. <slug> curto em kebab-case descrevendo a correção. Crie a branch a partir de main atualizada.
  3. Implemente com TDD estrito, mesmo rigor de .claude/agents/backend-developer.md/ .claude/agents/frontend-developer.md (teste que falha primeiro, código mínimo, refactor) — invoque o agente correspondente à trilha afetada (Agent tool) passando esta instrução: sem TRD/PRD desta vez, o "plano" é a descrição do bug/ajuste desta rodada e o escopo do passo 1. Se a correção se aplica a múltiplos pontos de entrada estruturalmente equivalentes (mesmo padrão de UI/lógica duplicado em N lugares — ex.: N formulários de upload usando o mesmo hook compartilhado, N validações idênticas em rotas irmãs), inclua explicitamente na instrução: "aplique a correção com paridade de teste em todos os N pontos, não só paridade de implementação" — já aconteceu de a implementação sair correta nos N pontos, mas só alguns ganharem teste de integração dedicado ao novo caminho, achado só pelo code-reviewer numa rodada extra de correção evitável. Ainda assim, apresente esse plano mínimo ao usuário via AskUserQuestion antes do primeiro commit (mesmo gate de aprovação de sempre, só que sobre um escopo bem menor). Se o plano envolve mutação real de infraestrutura/config vars de produção ou geração deliberada de tráfego/carga (ex.: múltiplos logins concorrentes para validar esgotamento de conexão), sinalize isso no próprio texto apresentado nesta AskUserQuestion — essas duas categorias são tipicamente bloqueadas pelo classificador de modo automático desta sessão para orquestrador e subagentes, exigindo execução manual do usuário ou uma regra de permissão explícita; já aconteceu de um hotfix de infra só descobrir esse bloqueio durante a execução, depois de comandos já terem falhado, em vez de antecipado no plano. Abra o PR cedo, em modo draft, com Closes #N referenciando a issue do passo 1b (sempre existe, é o gate obrigatório). Se outra tarefa desta sessão pode estar ativa no mesmo repositório, use isolamento de working tree (docs/GIT-WORKFLOW.md, seção "Isolamento de working tree entre agentes concorrentes").
  4. Rode a suíte completa com cobertura (e o comando de build/empacotamento real, se a trilha afetada tiver um — docs/TESTING.md) ao final, gravando o resumo em specs/<slug-da-spec-relacionada-ou-dedicada>/coverage/hotfix-<data>-<trilha>.md, mesmo padrão de qualquer fatia.
  5. Decida as revisões desta rodada — critério objetivo, não uma decisão manual reavaliada a cada vez:
    • Code review: sempre. Toda correção pontual passa por /sdd-code-review contra o PR desta rodada antes do merge — sem exceção, mesmo para uma mudança de uma linha.
    • QA: se há um critério de aceite concreto a validar. Se a correção reafirma um comportamento que já tinha um critério de aceite no PRD/TRD original (ele estava quebrado, ou um novo critério pontual surge do próprio bug), rode /sdd-qa contra esse critério. Uma correção puramente técnica sem critério de aceite de produto associado (ex.: corrigir uma falha de performance sem mudança de comportamento observável) pode pular o QA — registre essa decisão com o heading padronizado ## Decisão: QA pulado (justificado) no qa-report.md desta rodada (crie o arquivo a partir do template se ainda não existir, só com essa seção — não é um relatório de execução de QA), com a justificativa completa logo abaixo. Nunca registre essa decisão em texto livre sem esse heading — é o que permite a /sdd-status//sdd-pending (skills/status/scripts/sdd-status.sh/.ps1) reconhecerem isso como um estado terminal válido em vez de "veredito não identificado", evitando que o usuário seja questionado à toa sobre algo já decidido e justificado.
    • Segurança: sempre que o diff tocar qualquer item do critério objetivo de docs/QUALITY-GATES.md (seção "Segurança (security-engineer)") — autenticação, autorização, gestão de sessão, dados pessoais/sensíveis, ou qualquer ponto de entrada aceitando identificador externo (e-mail, identidade SSO, token) — independente do tamanho da mudança. Fora desses casos, decisão do orquestrador, mas registrada no artefato desta rodada (nunca implícita).
    • SRE: só se houver impacto de infraestrutura, CI/CD, ou dependência (mudança em infra/, .github/workflows/, Dockerfile, ou manifesto de dependências). Uma correção isolada em código de aplicação sem tocar nada disso pula o SRE. Apresente essa decisão (quais revisões rodam e por quê) ao usuário via AskUserQuestion antes de prosseguir, oferecendo a opção de rodar uma revisão adicional mesmo que o critério acima não a exija.
  6. Rode cada revisão decidida no passo 5 normalmente (/sdd-code-review, /sdd-qa, /sdd-security, /sdd-sre), contra o PR desta rodada — cada uma edita in-place o artefato identificado no passo 1, com a linha hotfix-<data> no histórico de aprovações. Mesma regra de "Auto-aprovação nunca é o gate real" (.claude/skills/sdd-implement/SKILL.md) — nenhum agente que implementou a correção escreve o próprio veredito. 6b. Antes de informar que o merge fica a critério do usuário, confirme explicitamente que toda revisão decidida como aplicável no passo 5 já rodou com veredito aprovado — não confie em lembrar de tê-las rodado todas. Releia a decisão do passo 5 contra o estado real dos artefatos (code-review.md/qa-report.md/security-review.md/sre-review.md, seção "Histórico de aprovações por fatia", linha hotfix-<data>): se qualquer revisão marcada como aplicável ainda não tem veredito aprovado para esta rodada, não prossiga para o passo 7 — rode a revisão faltante agora, ou, se por algum motivo ela não puder rodar ainda, avise isso em destaque ao usuário antes de qualquer menção a merge, nunca como nota de rodapé. Já aconteceu de verdade: um hotfix teve seu PR de código mergeado sem que SRE tivesse sido acionado — code review, QA e segurança rodaram normalmente, SRE simplesmente não foi lembrado antes do merge, e a lacuna só foi descoberta ~9 dias depois. /sdd-status já sinaliza esse tipo de gap corretamente quando consultado — este passo existe para que o gap seja visto antes do merge, não só depois.
  7. Merge é decisão do usuário, nunca automática — mesma regra de GitHub Flow de qualquer PR deste pipeline. Depois do merge, se a correção resolve algo que docs/POST-MERGE-VALIDATION.md ou um item "VALIDAR DEPOIS" esperava, feche esse ciclo (/sdd-amend).

Registro do processo

Ao final, resuma ao usuário: spec relacionada (ou diretório dedicado), branch/PR, quais revisões rodaram e por quê (critério do passo 5), e onde ficou registrado o resultado — para que o próximo /sdd-status já reflita esta correção.

Quando usar sem os agentes

Se o Agent tool não estiver disponível, siga .claude/agents/backend-developer.md/ .claude/agents/frontend-developer.md para a implementação e os agentes de revisão correspondentes diretamente, mantendo o mesmo rigor de TDD e os mesmos critérios do passo 5.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/post-merge-hotfix-workflow-sdd-mu3lxm53/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/post-merge-hotfix-workflow-sdd-mu3lxm53' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/post-merge-hotfix-workflow-sdd-mu3lxm53/download' --output '.skill-downloads/post-merge-hotfix-workflow-sdd-mu3lxm53/SKILL.md.part' && mv '.skill-downloads/post-merge-hotfix-workflow-sdd-mu3lxm53/SKILL.md.part' '.skill-downloads/post-merge-hotfix-workflow-sdd-mu3lxm53/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/post-merge-hotfix-workflow-sdd-mu3lxm53/SKILL.md' && test -s '.skill-downloads/post-merge-hotfix-workflow-sdd-mu3lxm53/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/sdd-hotfix' && cp -R '.skill-downloads/post-merge-hotfix-workflow-sdd-mu3lxm53' '.claude/skills/sdd-hotfix'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/post-merge-hotfix-workflow-sdd-mu3lxm53'

openskills read 'post-merge-hotfix-workflow-sdd-mu3lxm53'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/post-merge-hotfix-workflow-sdd-mu3lxm53/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills