archgate-pack.yaml
Metadados do pacote — name, version, description, maintainers e tags. Isto é autoritativo; o caminho do diretório é apenas um endereço.
Crie seu próprio pacote de ADR — metadados do pacote, documentos de ADR pareados com arquivos de regra, tipos ambientes e o caminho de submissão para ganhar um selo Curated.
Um pacote é um diretório de Architecture Decision Records e suas regras executáveis, descrito por um pequeno arquivo de metadados. Você pode construir um pacote para o repositório privado do seu próprio time, ou submetê-lo ao registro oficial para ganhar um selo Curated. A estrutura é idêntica de qualquer forma.
Todo pacote segue o mesmo layout. A ideia-chave é que cada ADR é um par: um documento Markdown que humanos e agentes de IA leem, e um arquivo .rules.ts colocalizado que máquinas executam.
packs/my-pack/ archgate-pack.yaml # pack metadata (required) README.md # overview and ADR listing (required) rules.d.ts # ambient types for .rules.ts (required) adrs/ ADR-001-my-decision.md # ADR document (at least one) ADR-001-my-decision.rules.ts # corresponding rule filearchgate-pack.yaml
Metadados do pacote — name, version, description, maintainers e tags. Isto é autoritativo; o caminho do diretório é apenas um endereço.
Documentos de ADR
Markdown com frontmatter YAML, uma decisão cada. Eles explicam por que uma escolha foi feita e quais trade-offs decorrem dela.
Arquivos de regra
Um .rules.ts colocalizado por ADR que transforma a decisão em uma verificação automatizada que o archgate check pode executar.
rules.d.ts
Definições de tipo ambientes para que seus arquivos de regra tenham type safety completo contra a API de regras.
Crie archgate-pack.yaml na raiz do pacote:
name: my-packversion: 0.1.0description: Short description of what this pack covers.maintainers: - github: your-github-usernametags: - language:typescript - concern:securityAs tags usam a convenção <axis>:<value> (language:, runtime:, framework:, tool:, concern:, domain:, stack:). Elas direcionam a filtragem no builder web, de modo que o diretório nunca precisa ser reorganizado quando um pacote abrange duas categorias.
Cada ADR é um arquivo Markdown em adrs/ com frontmatter YAML:
---id: ADR-001title: My Decisiondomain: architecturerules: truefiles: ["**/*.ts"]---Após o frontmatter, inclua estas seções, nesta ordem: ## Context, ## Decision, ## Do's and Don'ts e ## Consequences. Defina rules: true quando o ADR vier acompanhado de um arquivo de regra pareado, e use files para delimitar a quais caminhos a regra se aplica.
Pareie cada ADR que carrega regra com um arquivo <adr-id>-<slug>.rules.ts no mesmo diretório adrs/. Todo arquivo de regra deve:
/// <reference path="../rules.d.ts" />satisfies RuleSetRuleContext — glob(), grep(), grepFiles(), readFile(), readJSON() e report.violation() / report.warning() / report.info()asyncAqui está a regra pareada com o ADR SEC-001-no-secrets-in-code no pacote curado security, resumida:
/// <reference path="../rules.d.ts" />
export default { rules: { "no-secrets-in-code": { description: "Source files must not contain hardcoded secrets, API keys, or tokens", async check(ctx) { const sourceGlob = "**/*.{ts,tsx,js,jsx}"; const matches = await ctx.grepFiles( /API_KEY\s*=\s*["'][^"']{8,}["']/u, sourceGlob, ); for (const m of matches) { if (m.file.includes(".env.example")) continue; ctx.report.violation({ message: "Possible hardcoded API key — do not hardcode secrets.", file: m.file, line: m.line, fix: "Move the secret to an environment variable and read it via `process.env`.", }); } }, }, },} satisfies RuleSet;O arquivo rules.d.ts fornece tipos ambientes para RuleSet, RuleContext, GrepMatch, a API report e PackageJson. Copie-o de qualquer pacote curado para que seu editor e o validador concordem sobre o contrato.
Escreva um README.md que nomeie o pacote, dê uma descrição de uma linha, liste os ADRs incluídos em uma tabela (ID e título), e mostre o comando de início rápido archgate adr import packs/<name>. É isto que renderiza na página de detalhes do pacote no builder.
Para ter seu pacote hospedado no registro com um selo Curated:
Faça um fork do archgate/awesome-adrs e crie packs/my-pack/ com os arquivos acima.
Valide localmente — todo .rules.ts deve compilar sem erros, e o archgate-pack.yaml e a estrutura de arquivos de regra devem passar na validação de CI.
Abra um pull request usando o template de PR de pacote curado. Um mantenedor revisa e aprova.
Depois de mergeado, o pacote é importável por qualquer pessoa com archgate adr import packs/my-pack.
Você não precisa submeter ao registro oficial. A mesma estrutura funciona em qualquer repositório git, e os consumidores a importam com a URL git ou a forma <org>/<repo>/<path> — sem etapa de publicação necessária. O conjunto de ADRs do próprio time é apenas um pacote em um caminho do repositório.