* feat(#4221): gsd-secret-read-guard PreToolUse hook + registration Add hooks/gsd-secret-read-guard.js, a blocking PreToolUse guard on Read|Grep|Bash that denies reads of .env, .env.<suffix> and .secrets (the .env.example/.sample/.template/.dist templates stay readable). Read checks file_path; Grep checks an explicit path and judges the glob per brace alternative; Bash runs a two-pass token scan (quotes, comments, redirects with fd digits, separators, $( )/backtick/<( ) recursion, heredoc bodies never scanned as commands, nested bash -c/eval rescans, git <ref>:<path> shapes) with a closed non-reading exemption set for existence checks. Fail-open crash policy; 1 MiB commands are denied as command-too-large; more than 64 glob alternatives as glob-too-complex. Why: Claude Code 2.1.259 makes every `cd DIR && grep …` compound prompt for approval whenever any Read() deny rule exists, even in auto mode. A hook denial is not a permission rule and never arms that check. The installer-written deny rules are retired in the follow-up commit. Registration: hooks.json (Read|Grep|Bash, timeout 5), build-hooks HOOKS_TO_COPY, managed-hooks-registry, runtime-hooks-surface (blocking guard with BLOCKING_GUARD_TIMEOUT_S; Kimi ReadFile|Grep|Shell), shell-command-projection managed sets, installer-migration-report, OpenCode/Kilo plugin (grep tool mapping, include -> glob, dispatch), docs tables in five locales, ADR-766 always-on list, regen:derived fixtures, and a new table-driven unit suite. * test(#4221): pin the secret-read guard in existing hook gates Register gsd-secret-read-guard.js in every existing hook gate: the hooks-crash-policy table (deny row; 6 -> 7 deny cases), plugin-manifest REQUIRED_HOOKS and its Read|Grep|Bash group, docs-hooks-table-parity EXPECTED_SURFACE_HOOKS, install.test MANAGED_JS_HOOKS, install-minimal- hooks JS_HOOKS/BLOCKING_GUARDS, portable-node-runner GUARD_HOOKS, kilo-upgrades PLUGIN_GUARD_HOOKS, the Kimi normalization-parity and typed-payload floors, the OpenCode adapter (grep mapping, include -> glob, three dispatch tests) and a Kimi TOML matcher assertion. * fix(#4221): retire installer Read() deny rules (legacy filter) Rename GSD_CLAUDE_DENY_PERMISSIONS to GSD_CLAUDE_LEGACY_DENY_PERMISSIONS and stop adding the three Read(.env) / Read(.env.*) / Read(.secrets) strings. mergeClaudePermissions now only filters them out of an existing permissions.deny: an absent deny key stays absent, a malformed one is still repaired to [], and an array emptied by the filter is deleted so no `"deny": []` residue is left. Uninstall filters the same legacy list and, symmetric with the Antigravity branch, drops an emptied allow or deny key and an emptied permissions object. Unlike the #2278 allow-side migration there is no surviving current deny list, so the constant is renamed rather than mirrored. Removal is byte-exact: a hand-written identical rule is indistinguishable from the installer's and is removed too (the manifest never recorded permission strings). USER-GUIDE and CONTEXT.md updated. * test(#4221): flip install-regressions deny-rule assertions to the retired shape The fresh-merge, non-destructive merge, idempotency, end-to-end install, reinstall and uninstall assertions now expect no Read(.env*) deny rules and no permissions.deny key on a fresh install; the deny:null repair case is kept. A new describe block covers the legacy filter: retired strings removed with a user entry kept, partial sets, near-miss strings untouched, idempotency, GSD-only deny array deleted, a pre-existing empty deny preserved, and uninstall symmetry for allow/deny/permissions. * chore(#4221): add changeset fragment for PR #4236 * fix(#4221): case-fold names; scan shell stdin and xargs pipes Review round 1 (trek-e): - Blocker: secret-name matching is now case-insensitive in the Read, Grep (path and glob) and Bash paths, so `.ENV` / `.Secrets` on a case-insensitive filesystem are recognized as the same secret file. - Major: a shell interpreter's script is now scanned wherever it comes from. The tokenizer keeps heredoc bodies as per-segment tokens and records separator operators; pass 2 groups by segment id and resolves bash/sh/zsh/dash/ksh/su invocation mode: `-c` (including combined `-lc`) scans the script operand, a file operand is checked as a file (a `<( )` operand's echo/printf output is reconstructed), otherwise stdin is the script and heredocs, here-strings and a piped echo/printf source are scanned. `eval` joins all its operands; `source`/`.` handle process substitution. Data heredocs (`cat <<EOF`, the commit-message shape) stay unscanned. - Major: `… | xargs <cmd>` checks the upstream segment's operands as file names when the sub-command reads (`echo .env | xargs cat`, `find . -name .env | xargs cat`); `-a`/`--arg-file` suppresses the inference; a shell sub-command's `-c` script is scanned. Header, USER-GUIDE bullet and changeset updated; documented gaps now include piped scripts from non-echo sources and `exec`/`timeout` wrappers. 60 new suite cases pin the block and allow shapes. --------- Co-authored-by: Tom Boucher <trekkie@nomorestars.com>
Documentação do GSD Core
A documentação está organizada em quatro quadrantes: tutoriais ajudam você a aprender na prática, guias de instruções resolvem tarefas específicas, referência apresenta fatos autorizados, e explicação explora conceitos e decisões de design.
Versões por idioma: English · Português (pt-BR) · 日本語 · 简体中文
Tutorials
- Seu primeiro projeto — da instalação à primeira fase entregue, um caminho garantido
- Integrando uma base de código existente — leve o GSD Core a um repositório já existente
How-to guides
- Instalar no seu ambiente de execução — passos de instalação específicos para cada um dos 15 ambientes de execução suportados
- Discutir uma fase — registrar decisões de implementação antes do início do planejamento
- Planejar uma fase — executar pesquisa, decompor o trabalho e verificar a qualidade do plano
- Executar uma fase — rodar planos em ondas paralelas com subagentes com contexto renovado
- Verificar e entregar — revisar o trabalho concluído, diagnosticar falhas e criar o PR
- Rodar fases de forma autônoma — usar o modo autônomo para execução de fases sem supervisão
- Lidar com tarefas rápidas e ágeis — usar
/gsd-quicke/gsd-fastpara trabalho avulso fora do ciclo de fases - Configurar perfis de modelo — alternar entre níveis de modelo: qualidade, equilibrado e econômico
- Configurar revisão entre IAs — configurar uma segunda IA para revisar o código produzido pelo agente principal
- Trabalhar em paralelo com workstreams — executar linhas de trabalho independentes simultaneamente usando workstreams
- Isolar trabalho com workspaces — usar workspaces para isolar mudanças experimentais ou arriscadas
- Depurar uma execução com falha — diagnosticar e recuperar de execuções de fase quebradas ou incompletas
- Explorar e esboçar — usar
/gsd-spikee/gsd-sketchpara trabalho exploratório antes de comprometer com um plano - Projetar uma fase de UI — usar o ciclo de fase de UI para trabalho de frontend e visual
- Conduzir o GSD a partir de uma issue do rastreador — iniciar uma fase a partir de uma issue do GitHub, Linear ou Jira
- Migrar do GSD 2 — atualizar um projeto GSD 2 existente para o GSD Core
- Atualizar o GSD — executar novamente o instalador para obter a versão mais recente
- Recuperar e solucionar problemas — corrigir problemas comuns, reconstruir contexto e desinstalar
Referência
- Comandos — todos os comandos com flags e exemplos
- Configuração — schema completo de configuração, perfis de modelo, estratégias de branching git
- Ferramentas CLI — API programática
gsd-tools.cjspara workflows e agentes - Funcionalidades — índice completo de funcionalidades
- Inventário — skills instaladas e mapa de superfície
- Schema do STATE.md — referência campo a campo para
.planning/STATE.md - Schema do CONTEXT.md — referência campo a campo para
.planning/phases/<N>/CONTEXT.md - Schema do PLAN.md — referência campo a campo para
.planning/phases/<N>/PLAN.md - Artefatos de planejamento — todos os arquivos
.planning/e seus papéis
Explicação
- Engenharia de contexto — como a degradação de contexto se forma e como o GSD Core a previne
- O ciclo de fase — racional de design para o ciclo Discuss → Plan → Execute → Verify → Ship
- Orquestração multi-agente — como os subagentes são criados, delimitados e coordenados
- Modelo de segurança — limites de confiança, permissões e automação segura
- Arquitetura — arquitetura do sistema, modelo de agentes e fluxo de dados
- Modos de discussão — modo de suposições vs. modo de entrevista para
/gsd-discuss-phase - Monitoramento de contexto — arquitetura do hook de monitoramento da janela de contexto
- Orquestração orientada por issues — receita para conduzir o GSD a partir de uma issue do rastreador usando primitivos existentes
Relacionados
- README raiz — página inicial, início rápido e visão geral da documentação
- Changelog — histórico de versões