Skip to content
Apothem
Uso

Escrevendo regras

Redija, defina o escopo e mantenha as regras de comportamento do Apothem.

As regras são arquivos Markdown em src/apothem/rules/ com extensão .md.

Frontmatter da regra

---
name: "..."
description: "..."
pathFilter: ""            # empty string for always-on; a glob for path-filtered
alwaysApply: true         # true for always-on; false for path-filtered
---

Escopos da regra

O escopo de uma regra é definido por dois campos do frontmatter, alwaysApply e pathFilter:

alwaysApplypathFilterQuando é aplicada
true"" (vazio)Sempre ativa: toda sessão, todo arquivo
falseum glob como "**/*.py"Filtrada por caminho: somente quando o arquivo ativo corresponde ao glob

Cinco regras distribuídas são sempre ativas: agnostic-posture, authority-inquiry, session-closure, context-management e o índice de regras. Uma regra sempre ativa custa contexto em toda sessão, então uma nova regra DEVERIA ser filtrada por caminho com globs que nomeiem os arquivos que ela governa; um filtro apenas ** não define escopo algum, e o Claude Code carrega essa regra na inicialização como uma regra sempre ativa. O corpus distribuído limita o conjunto sempre ativo a essa lista e a um teto de bytes; uma regra promovida a sempre ativa altera ambos na mesma mudança. Nomeie cada regra que você adicionar no índice de regras (apothem-rule-index), para que uma sessão em um harness que não define o escopo das regras por caminho ainda a encontre. Uma regra companheira (<parent>-<aspect>) recebe o pathFilter da sua regra-mãe, ou um mais restrito, de modo que nunca carregue sem a regra-mãe. Não dê a uma regra sua o nome apothem-rule-index: uma instalação faz backup e sobrescreve um arquivo de regra com esse nome.

Regra de exemplo

---
name: "python-conventions"
description: "Python style conventions for this project"
pathFilter: "**/*.py"
alwaysApply: false
---

# Python conventions

- Use type annotations on all public functions.
- Maximum line length: 88 characters.
- Prefer explicit over implicit.

Aplicando regras aos harnesses

Depois de escrever uma regra, atualize cada adaptador de harness instalado. Execute apothem harnesses list para ver o conjunto instalado e, em seguida, chame update uma vez por harness:

apothem update --harness claude-code
apothem update --harness cursor --project /path/to/project

Um harness de escopo de projeto precisa de --project no update, como na segunda linha; um harness de escopo de usuário não precisa.

Validação de regras

Execute o validador de frontmatter contra o arquivo de regra que você escreveu. A partir de um checkout do Apothem, PYTHONPATH=src torna o pacote importável; depois de uma instalação por script, use PYTHONPATH="$HOME/.apothem/src" no lugar dele.

PYTHONPATH=src python -m apothem.conformity.gate --check frontmatter-grep src/apothem/rules/<rule>.md

Uma verificação por gravação, como frontmatter-grep, recebe o arquivo a verificar, ou --stdin para ler o conteúdo da entrada padrão; sem nenhum dos dois, ela espera por entrada na entrada padrão. Uma verificação independente recebe, em vez disso, um diretório raiz, como em --check naming-grep ..

On this page