OpenSpec Context Cache
Gerenciar cache de contexto compartilhado entre skills durante o ciclo OpenSpec, isolado por change_id.
Propósito: Evitar recálculos e manter consistência entre tasks de uma mesma mudança, compartilhando contexto (value objects, decisões de stack, dados calculados) entre skills sem duplicar trabalho.
Quando usar:
- Ao iniciar a implementação de uma change com várias tasks (preparar o cache).
- Durante
openspec-apply-change, ao delegar tasks para agents (gravar e reutilizar contexto).
- Ao arquivar uma change (
openspec-archive-change), liberar o cache.
Entrada
change_id: identificador da change (ex.: ep-001-auth). Usar o nome resolvido em openspec status --change "<nome>" --json.
- Se omitido, inferir do contexto da conversa; se ambíguo, executar
openspec list --json e perguntar.
Fluxo de trabalho
- Resolver o
change_id — usar o nome da change (ou inferido do contexto).
- Preparar o cache — ao iniciar a implementação, carregar o contexto já resolvido (stack, configuração de BC, dependency graph) antes de executar qualquer task.
- Ler antes de calcular — para cada dado compartilhado (value object, entidade, configuração, grafo de dependências), verificar o cache antes de recalcular.
- Gravar ao calcular — quando uma task calcula um dado, persistir no cache da change para reutilização nas próximas tasks.
- Liberar ao finalizar — ao arquivar a change, liberar o cache para não vazar contexto entre mudanças.
Escopo do cache (por change)
| Domínio |
Exemplo de chave |
Descrição |
| Domínio compartilhado |
vo:email, vo:cpf |
Value objects reutilizáveis entre skills |
| Configuração do projeto |
project:stack, project:tenant-strategy, project:auth-provider |
Decisões tomadas no planejamento |
| Configuração de BC |
bc:auth, bc:catalog |
Configurações por Bounded Context |
| Dados calculados |
dependency-graph, task-order |
Resultados reutilizáveis entre skills |
Regras para chaves:
- Escopar toda chave pelo
change_id; contexto de uma mudança não vaza para outra.
- Uma única chave por conceito — reutilizar em vez de duplicar.
Workflow otimizado com cache
| Abordagem |
Comportamento |
| Antes (sem cache) |
Skill A calcula o EmailVO e armazena localmente; Skills B e C recalculam o mesmo EmailVO |
| Depois (com cache) |
Skill A calcula e persiste; Skills B e C reutilizam o valor já gravado |
Junto com openspec-apply-change, o cache permite que dados idênticos não sejam recalculados entre os agents acionados nas tasks (**Agent:** / **Prompt:** do backlog DDD).
Integração com outras skills
| Skill |
Papel do cache |
openspec-propose |
Registrar os dados compartilhados que a change usará de cache |
openspec-apply-change |
Preparar o cache antes de implementar; reutilizar contexto ao delegar cada task ao Agent |
openspec-validate-dependencies |
Reutilizar o dependency-graph em vez de recomputar a ordem de implementação |
openspec-archive-change |
Liberar o cache ao concluir a mudança |
Regras
- Nunca armazenar segredos (senhas, tokens, credenciais) no cache.
- Scopar o cache por
change_id; não compartilhar contexto entre mudanças.
- Dados cacheados devem refletir a change atual; se
spec.md, design.md ou tasks.md mudarem, invalidar e recalcular.
- O cache é auxiliar: a fonte da verdade continua sendo os artefatos OpenSpec.
Guardrails
- Verificar o cache antes de recalcular; não duplicar cálculo que já existe.
- Gravar no cache somente após o cálculo ser concluído — nunca gravar estado parcial.
- Recalcular se os dados cacheados estiverem desatualizados (spec/design alterados).
- Não usar o cache como fonte da verdade — artefatos OpenSpec prevalecem.
Referências
Skills relacionadas
openspec-propose
openspec-apply-change
openspec-validate-dependencies
openspec-archive-change
1---2name: openspec-context-cache3description: Gerenciar cache de contexto por change_id no fluxo OpenSpec. Usar quando o pedido envolver cache de contexto, persistência de contexto entre changes, ou otimização de contexto OpenSpec.4---56# OpenSpec Context Cache78Gerenciar cache de contexto compartilhado entre skills durante o ciclo OpenSpec, isolado por `change_id`.910**Propósito**: Evitar recálculos e manter consistência entre tasks de uma mesma mudança, compartilhando contexto (value objects, decisões de stack, dados calculados) entre skills sem duplicar trabalho.1112**Quando usar**:13- Ao iniciar a implementação de uma change com várias tasks (preparar o cache).14- Durante `openspec-apply-change`, ao delegar tasks para agents (gravar e reutilizar contexto).15- Ao arquivar uma change (`openspec-archive-change`), liberar o cache.1617---1819## Entrada2021- `change_id`: identificador da change (ex.: `ep-001-auth`). Usar o nome resolvido em `openspec status --change "<nome>" --json`.22- Se omitido, inferir do contexto da conversa; se ambíguo, executar `openspec list --json` e perguntar.2324---2526## Fluxo de trabalho27281. **Resolver o `change_id`** — usar o nome da change (ou inferido do contexto).292. **Preparar o cache** — ao iniciar a implementação, carregar o contexto já resolvido (stack, configuração de BC, dependency graph) antes de executar qualquer task.303. **Ler antes de calcular** — para cada dado compartilhado (value object, entidade, configuração, grafo de dependências), verificar o cache antes de recalcular.314. **Gravar ao calcular** — quando uma task calcula um dado, persistir no cache da change para reutilização nas próximas tasks.325. **Liberar ao finalizar** — ao arquivar a change, liberar o cache para não vazar contexto entre mudanças.3334---3536## Escopo do cache (por change)3738| Domínio | Exemplo de chave | Descrição |39|---------|------------------|-----------|40| Domínio compartilhado | `vo:email`, `vo:cpf` | Value objects reutilizáveis entre skills |41| Configuração do projeto | `project:stack`, `project:tenant-strategy`, `project:auth-provider` | Decisões tomadas no planejamento |42| Configuração de BC | `bc:auth`, `bc:catalog` | Configurações por Bounded Context |43| Dados calculados | `dependency-graph`, `task-order` | Resultados reutilizáveis entre skills |4445Regras para chaves:4647- Escopar toda chave pelo `change_id`; contexto de uma mudança não vaza para outra.48- Uma única chave por conceito — reutilizar em vez de duplicar.4950---5152## Workflow otimizado com cache5354| Abordagem | Comportamento |55|-----------|---------------|56| Antes (sem cache) | Skill A calcula o EmailVO e armazena localmente; Skills B e C recalculam o mesmo EmailVO |57| Depois (com cache) | Skill A calcula e persiste; Skills B e C reutilizam o valor já gravado |5859Junto com `openspec-apply-change`, o cache permite que dados idênticos não sejam recalculados entre os agents acionados nas tasks (`**Agent:**` / `**Prompt:**` do backlog DDD).6061---6263## Integração com outras skills6465| Skill | Papel do cache |66|-------|----------------|67| `openspec-propose` | Registrar os dados compartilhados que a change usará de cache |68| `openspec-apply-change` | Preparar o cache antes de implementar; reutilizar contexto ao delegar cada task ao Agent |69| `openspec-validate-dependencies` | Reutilizar o `dependency-graph` em vez de recomputar a ordem de implementação |70| `openspec-archive-change` | Liberar o cache ao concluir a mudança |7172---7374## Regras7576- **Nunca** armazenar segredos (senhas, tokens, credenciais) no cache.77- Scopar o cache por `change_id`; não compartilhar contexto entre mudanças.78- Dados cacheados devem refletir a change atual; se `spec.md`, `design.md` ou `tasks.md` mudarem, invalidar e recalcular.79- O cache é auxiliar: a fonte da verdade continua sendo os artefatos OpenSpec.8081## Guardrails8283- Verificar o cache antes de recalcular; não duplicar cálculo que já existe.84- Gravar no cache somente após o cálculo ser concluído — nunca gravar estado parcial.85- Recalcular se os dados cacheados estiverem desatualizados (spec/design alterados).86- Não usar o cache como fonte da verdade — artefatos OpenSpec prevalecem.8788## Referências8990- [OpenSpec Workflow](../../docs/tutorial/04-ciclo-completo-openspec.md)91- [Template de Tasks](../../docs/templates/openspec-task-template.yaml)92- [Dashboard de Progresso](../../docs/dashboard/openspec-progress-dashboard.md)9394## Skills relacionadas9596- `openspec-propose`97- `openspec-apply-change`98- `openspec-validate-dependencies`99- `openspec-archive-change`