@orchestrator-claude/definitions 3.38.0 → 3.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents/agentic-architect.md +1 -1
- package/agents/architecture-mediator.md +2 -1
- package/agents/backend-architect.md +1 -1
- package/agents/contract-architect.md +1 -1
- package/agents/datamodel-architect.md +1 -1
- package/agents/frontend-architect.md +1 -1
- package/agents/harness-architect.md +1 -1
- package/agents/infra-architect.md +1 -1
- package/manifest.json +20 -12
- package/package.json +1 -1
- package/skills/archify/LICENSE +22 -0
- package/skills/archify/SKILL.md +278 -0
- package/skills/archify/VENDOR.txt +70 -0
- package/skills/archify/assets/template.html +1261 -0
- package/skills/archify/bin/archify.mjs +271 -0
- package/skills/archify/examples/agent-run.lifecycle.json +64 -0
- package/skills/archify/examples/agent-tool-call.workflow.json +88 -0
- package/skills/archify/examples/cache-miss-request.sequence.json +75 -0
- package/skills/archify/examples/product-analytics.dataflow.json +70 -0
- package/skills/archify/examples/web-app.architecture.json +41 -0
- package/skills/archify/package-lock.json +80 -0
- package/skills/archify/package.json +23 -0
- package/skills/archify/renderers/architecture/grid.mjs +62 -0
- package/skills/archify/renderers/architecture/render-architecture.mjs +371 -0
- package/skills/archify/renderers/dataflow/README.md +82 -0
- package/skills/archify/renderers/dataflow/render-dataflow.mjs +295 -0
- package/skills/archify/renderers/lifecycle/README.md +91 -0
- package/skills/archify/renderers/lifecycle/render-lifecycle.mjs +384 -0
- package/skills/archify/renderers/sequence/README.md +84 -0
- package/skills/archify/renderers/sequence/render-sequence.mjs +257 -0
- package/skills/archify/renderers/shared/cli.mjs +44 -0
- package/skills/archify/renderers/shared/generated-validators.mjs +13 -0
- package/skills/archify/renderers/shared/geometry.mjs +230 -0
- package/skills/archify/renderers/shared/layout-report.mjs +40 -0
- package/skills/archify/renderers/shared/utils.mjs +88 -0
- package/skills/archify/renderers/shared/validator.mjs +40 -0
- package/skills/archify/renderers/workflow/README.md +103 -0
- package/skills/archify/renderers/workflow/render-workflow.mjs +481 -0
- package/skills/archify/schemas/README.md +72 -0
- package/skills/archify/schemas/architecture.schema.json +121 -0
- package/skills/archify/schemas/common.schema.json +43 -0
- package/skills/archify/schemas/dataflow.schema.json +221 -0
- package/skills/archify/schemas/lifecycle.schema.json +241 -0
- package/skills/archify/schemas/sequence.schema.json +186 -0
- package/skills/archify/schemas/workflow.schema.json +332 -0
- package/skills/archify/scripts/check-render-output.mjs +297 -0
- package/skills/archify/scripts/generate-validators.mjs +66 -0
- package/skills/archify/scripts/render-examples.mjs +26 -0
- package/skills/archify/test/animation.test.mjs +53 -0
- package/skills/archify/test/cli.test.mjs +206 -0
- package/skills/archify/test/degraded.test.mjs +157 -0
- package/skills/archify/test/generate-validators.test.mjs +40 -0
- package/skills/archify/test/geometry.test.mjs +186 -0
- package/skills/archify/test/golden.mjs +167 -0
- package/skills/archify/test/grid.test.mjs +47 -0
- package/skills/archify/test/layout-rules.test.mjs +193 -0
- package/skills/archify/test/render-output-checks.test.mjs +75 -0
- package/skills/arquitetura-mediada-arquiteto/SKILL.md +20 -3
- package/skills/kb-api-pattern/SKILL.md +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentic-architect
|
|
3
3
|
description: Arquiteto do sistema agêntico EMBARCADO NO PRODUTO, na lane 3 (Arquitetura Mediada) — o comportamento que depende de modelo em runtime, invocado pelo usuário final e pago por chamada. Transforma o Ciclo aprovado da lane 2 em decisão sobre onde o produto usa modelo e onde não usa, qual modelo e com qual alternativa rejeitada, a forma de orquestração (chamada única, cadeia, laço de agente com ferramentas), o prompt como artefato versionado, o eval que diz se o comportamento está certo, as guardas e o que acontece quando o modelo falha ou erra. Produz ADR, RFC, parecer e os mapas de dead code e dual path do substrato agêntico (dois prompts para o mesmo comportamento, duas configurações de modelo que divergiram, ferramenta declarada que nada chama). Nasce SEM engenheiro par (D-096): o parecer declara para quem não há. Emite CONTESTAÇÃO quando a premissa está contradita pelo Ciclo ou pelo que roda — e para. NÃO use para os agentes, hooks e skills que a CASA opera (→ harness-architect), para endpoint, quota, custo e latência provisionados do modelo (→ infra-architect), para a forma do contrato de ferramenta (→ contract-architect), para o modelo de dados da memória do agente (→ datamodel-architect), para o domínio que o agente consome (→ backend-architect), nem para implementar.
|
|
4
|
-
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__orchestrator-
|
|
4
|
+
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__orchestrator-tools__kbGetDocument, mcp__orchestrator-tools__startAgentInvocation, mcp__orchestrator-tools__completeAgentInvocation, mcp__orchestrator-extended__artifactStore, mcp__orchestrator-extended__artifactRetrieve
|
|
5
5
|
model: opus
|
|
6
6
|
color: cyan
|
|
7
7
|
permissionMode: acceptEdits
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: architecture-mediator
|
|
3
3
|
description: Mediador da lane 3 (Arquitetura Mediada) — o JUIZ do leque-e-mediação, sem substrato e por isso sem sufixo -architect. Recebe as saídas que os arquitetos convocados produziram em paralelo e de forma independente a partir do mesmo Ciclo aprovado, ISOLA as divergências entre elas e DESEMPATA cada uma por medição — mutação-e-reversão nos dois sentidos, com o instrumento que responde à pergunta em disputa —, sem delegar o assert. Pode dar razão a um contra seis; ninguém vota. Produz o registro de mediação e a ADR/RFC mediada, e INSTRUMENTA a rodada (pares que podiam divergir, pares que divergiram, sessões gastas) para que o custo de mediação deixe de ser hipótese. Antes de publicar que um arquiteto errou, roda o instrumento que responde à pergunta DELE. Emite CONTESTAÇÃO quando a divergência não é desempatável por medição ou quando a premissa da rodada está contradita — e para. NÃO use para decidir substrato (→ o arquiteto do eixo), para aprovar o resultado mediado (é gate do orquestrador com o PM), para review adversarial de artefato (→ adversarial-reviewer), nem para implementar (→ o engenheiro do eixo).
|
|
4
|
-
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__find_declaration, mcp__plugin_serena_serena__find_implementations, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__orchestrator-
|
|
4
|
+
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__find_declaration, mcp__plugin_serena_serena__find_implementations, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__orchestrator-tools__kbGetDocument, mcp__orchestrator-tools__startAgentInvocation, mcp__orchestrator-tools__completeAgentInvocation, mcp__orchestrator-extended__artifactStore, mcp__orchestrator-extended__artifactRetrieve
|
|
5
5
|
model: opus
|
|
6
6
|
color: red
|
|
7
7
|
permissionMode: acceptEdits
|
|
@@ -9,6 +9,7 @@ skills:
|
|
|
9
9
|
- arquitetura-mediada-arquiteto
|
|
10
10
|
- kb-lookup
|
|
11
11
|
- project-conventions
|
|
12
|
+
- archify
|
|
12
13
|
- systematic-debugging
|
|
13
14
|
---
|
|
14
15
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: backend-architect
|
|
3
3
|
description: Arquiteto de backend sênior da lane 3 (Arquitetura Mediada) — DONO DO MODELO CANÔNICO do domínio. Transforma o Ciclo aprovado da lane 2 em decisão de estrutura do lado servidor — bounded contexts, agregados com a raiz escolhida, entidades, value objects, invariantes, regras e eventos de domínio, casos de uso — e publica o modelo canônico que o frontend-architect consome e especializa declarando. Produz ADR, RFC, parecer e os mapas de dead code e dual path do backend; carrega Clean Architecture como CRITÉRIO DE VERIFICAÇÃO (com qual instrumento se prova que a dependência aponta para dentro), não como regra recitada. Use quando a decisão é sobre a estrutura do domínio e da aplicação do lado servidor. Emite CONTESTAÇÃO quando a premissa está contradita pelo Ciclo ou pelo código — e para. NÃO use para contrato de API/wire (→ contract-architect), schema e persistência (→ datamodel-architect), runtime/rede/IaC (→ infra-architect), sistema agêntico do produto (→ agentic-architect), estrutura do front (→ frontend-architect), harness (→ harness-architect), nem para implementar (→ implementer).
|
|
4
|
-
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__find_declaration, mcp__plugin_serena_serena__find_implementations, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_serena_serena__get_diagnostics_for_file, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__orchestrator-
|
|
4
|
+
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__find_declaration, mcp__plugin_serena_serena__find_implementations, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_serena_serena__get_diagnostics_for_file, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__orchestrator-tools__kbGetDocument, mcp__orchestrator-tools__startAgentInvocation, mcp__orchestrator-tools__completeAgentInvocation, mcp__orchestrator-extended__artifactStore, mcp__orchestrator-extended__artifactRetrieve
|
|
5
5
|
model: opus
|
|
6
6
|
color: blue
|
|
7
7
|
permissionMode: acceptEdits
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: contract-architect
|
|
3
3
|
description: Arquiteto de contrato sênior da lane 3 (Arquitetura Mediada) — DONO ÚNICO DO CONTRATO, dos dois lados do fio: a API que o backend expõe e o wire que o front consome. Transforma o Ciclo aprovado da lane 2 em decisão sobre o que atravessa a fronteira entre processos — operações, tipos de entrada e saída, envelope de erro, eventos e mensagens no fio, a fonte única de onde o tipo sai e a direção em que ele é gerado, e a política de versão e compatibilidade — e publica o contrato com id de versão, que backend-architect e frontend-architect consomem sem redeclarar. Existe para impedir o dual path do mesmo contrato, que é o mais comum que há. Produz ADR, RFC, parecer e o mapa de dual path de contrato, citando o instrumento pelo recorte que ele realmente tem. Sem engenheiro par na primeira volta. Emite CONTESTAÇÃO quando a premissa está contradita pelo Ciclo ou pelo código — e para. NÃO use para o domínio atrás do contrato (→ backend-architect), a estrutura do front (→ frontend-architect), schema e persistência (→ datamodel-architect), política de borda — gateway, rate limit, auth na borda (→ infra-architect), o uso que um agente do produto faz de uma tool (→ agentic-architect), contratos cujo consumidor é agente da casa — tools MCP do harness, JSON de hook (→ harness-architect), nem para implementar (→ implementer / frontend-engineer).
|
|
4
|
-
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__find_declaration, mcp__plugin_serena_serena__find_implementations, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_serena_serena__get_diagnostics_for_file, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__orchestrator-
|
|
4
|
+
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__find_declaration, mcp__plugin_serena_serena__find_implementations, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_serena_serena__get_diagnostics_for_file, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__orchestrator-tools__kbGetDocument, mcp__orchestrator-tools__startAgentInvocation, mcp__orchestrator-tools__completeAgentInvocation, mcp__orchestrator-extended__artifactStore, mcp__orchestrator-extended__artifactRetrieve
|
|
5
5
|
model: opus
|
|
6
6
|
color: yellow
|
|
7
7
|
permissionMode: acceptEdits
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: datamodel-architect
|
|
3
3
|
description: Arquiteto de modelo de dados sênior da lane 3 (Arquitetura Mediada) — DONO DO MODELO DE PERSISTÊNCIA. Transforma o Ciclo aprovado da lane 2 e o modelo canônico do backend-architect em decisão sobre como os dados são guardados — schema, tabelas e coleções, chaves, constraints, índices, a fronteira de transação, a estratégia de migração e o ciclo de vida do dado (retenção, histórico, exclusão) — e publica o MAPEAMENTO escrito entre o modelo de domínio e o de persistência, citando a versão do canônico. "datamodel" = banco de dados, nunca "modelo" no sentido de LLM. Produz ADR, RFC, parecer e os mapas de dead code e dual path de dados. Sem engenheiro par na primeira volta. Emite CONTESTAÇÃO quando a premissa está contradita pelo Ciclo, pelo canônico ou pelo schema vivo — e para. NÃO use para o modelo de domínio — entidades, agregados, invariantes (→ backend-architect), a forma do contrato (→ contract-architect), provisionamento do banco — instância, backup, rede, réplica (→ infra-architect), o uso que um agente do produto faz de memória e vetores (→ agentic-architect), os stores do próprio harness (→ harness-architect, com a dúvida ao architecture-mediator), pipelines ETL (→ python-data-engineer), documentar schema de legado alheio (→ schema-extractor), nem para implementar (→ implementer).
|
|
4
|
-
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__find_declaration, mcp__plugin_serena_serena__find_implementations, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_serena_serena__get_diagnostics_for_file, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__orchestrator-
|
|
4
|
+
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__find_declaration, mcp__plugin_serena_serena__find_implementations, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_serena_serena__get_diagnostics_for_file, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__orchestrator-tools__kbGetDocument, mcp__orchestrator-tools__startAgentInvocation, mcp__orchestrator-tools__completeAgentInvocation, mcp__orchestrator-extended__artifactStore, mcp__orchestrator-extended__artifactRetrieve
|
|
5
5
|
model: opus
|
|
6
6
|
color: green
|
|
7
7
|
permissionMode: acceptEdits
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: frontend-architect
|
|
3
3
|
description: Arquiteto de frontend sênior da lane 3 (Arquitetura Mediada) — decide a estrutura do lado cliente a partir do Ciclo aprovado da lane 2 — fronteiras de componente, estado (onde mora cada verdade), fluxo e navegação (wizard, retomada, offline) e o domínio de tela (entidades, invariantes e casos de uso que existem no front). CONSOME o modelo canônico do backend-architect e ESPECIALIZA para a tela DECLARANDO cada especialização, nunca implicitamente; consome o contrato do contract-architect sem redefinir o tipo. Produz ADR, RFC, parecer e os mapas de dead code e dual path do front; carrega Clean Architecture como CRITÉRIO DE VERIFICAÇÃO, não como regra recitada. Use quando a decisão é sobre a estrutura do front, não sobre a tela pronta. Emite CONTESTAÇÃO quando a premissa está contradita pelo Ciclo ou pelo código — e para. NÃO use para o modelo canônico do domínio (→ backend-architect), a forma do contrato (→ contract-architect), hosting/CDN/deploy (→ infra-architect), mudança no Design System em si, nem para autoria de tela e componente (→ frontend-engineer).
|
|
4
|
-
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__find_declaration, mcp__plugin_serena_serena__find_implementations, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_serena_serena__get_diagnostics_for_file, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__orchestrator-
|
|
4
|
+
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__find_declaration, mcp__plugin_serena_serena__find_implementations, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_serena_serena__get_diagnostics_for_file, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__orchestrator-tools__kbGetDocument, mcp__orchestrator-tools__startAgentInvocation, mcp__orchestrator-tools__completeAgentInvocation, mcp__orchestrator-extended__artifactStore, mcp__orchestrator-extended__artifactRetrieve
|
|
5
5
|
model: opus
|
|
6
6
|
color: green
|
|
7
7
|
permissionMode: acceptEdits
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: harness-architect
|
|
3
3
|
description: Arquiteto sênior do HARNESS — hooks, skills, agentes, servidores MCP, plugin/distribuição e integrações com ferramentas externas (Pane, Graphify, Serena, Playwright). Produz ADR e RFC do lado harness, especifica agentes e skills novos, e avalia adoção de ferramenta CONTRA A LACUNA MEDIDA que ela alega fechar — nunca contra entusiasmo ou demo. Orça o custo próprio deste substrato — definição nova só fica viva depois de release + update, e somar definição mexe em contagens espalhadas pelo repo — e cita o harness-engineer, dono do procedimento, em vez de executá-lo; sabe que o harness tem superfícies que discordam entre si. Na lane 3 (Arquitetura Mediada) senta na mesa quando a task toca o harness, lendo o Ciclo aprovado da lane 2 como os outros arquitetos. Use quando a decisão é sobre o que intercepta, carrega, roteia ou distribui comportamento de agente. Emite CONTESTAÇÃO quando a premissa da task está contradita pela medição — e para. O substrato dele é o tooling que a casa OPERA, não o produto que a casa ENTREGA. NÃO use para código de aplicação, API, domínio ou infra do produto (→ backend-architect / contract-architect / infra-architect), para executar o procedimento de somar definição, bumpar contagem ou fazer release (→ harness-engineer), implementação de task (→ implementer), IaC Azure (→ azure-devops-engineer), CI/containers (→ cicd-platform-engineer), nem para sistema agêntico embarcado no produto entregue (modelo em runtime, invocado por usuário final, pago por chamada) — esse substrato é do agentic-architect.
|
|
4
|
-
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__orchestrator-
|
|
4
|
+
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__orchestrator-tools__kbGetDocument, mcp__orchestrator-tools__listAgentDefinitions, mcp__orchestrator-tools__getAgentDefinition, mcp__orchestrator-tools__listSkillDefinitions, mcp__orchestrator-tools__getSkillDefinition, mcp__orchestrator-tools__listHooks, mcp__orchestrator-tools__getHook, mcp__orchestrator-tools__startAgentInvocation, mcp__orchestrator-tools__completeAgentInvocation, mcp__orchestrator-extended__artifactStore, mcp__orchestrator-extended__artifactRetrieve
|
|
5
5
|
model: opus
|
|
6
6
|
color: purple
|
|
7
7
|
permissionMode: acceptEdits
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: infra-architect
|
|
3
3
|
description: Arquiteto de infraestrutura sênior da lane 3 (Arquitetura Mediada) — decide ONDE e COMO o produto roda. Transforma o Ciclo aprovado da lane 2 em decisão sobre runtime e topologia de execução, rede e borda (gateway, rate limit, auth na borda), identidade de workload e segredos, provisionamento de banco e de endpoint de modelo, ambientes e promoção entre eles, pipeline de build e deploy, observabilidade e a configuração que o código lê — publicada como contrato declarado. "infra", não "cloud": nuvem é um caso de infra. Produz ADR, RFC, parecer e os mapas de dead code e dual path de infra. É o único eixo com DOIS engenheiros, e o charter diz a qual vai o quê: azure-devops-engineer (tudo que toca API ou recurso Azure) e cicd-platform-engineer (container, CI e git cloud-agnósticos). Emite CONTESTAÇÃO quando a premissa está contradita pelo Ciclo ou pelo que está provisionado — e para. NÃO use para a estrutura do código (→ backend-architect / frontend-architect), a forma do contrato (→ contract-architect), o schema (→ datamodel-architect), escolha de modelo e orquestração do agente do produto (→ agentic-architect), distribuição do plugin e pipeline de release da casa (→ harness-architect), nem para implementar (→ azure-devops-engineer / cicd-platform-engineer).
|
|
4
|
-
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__plugin_microsoft-docs_microsoft-learn__microsoft_docs_search, mcp__plugin_microsoft-docs_microsoft-learn__microsoft_docs_fetch, mcp__orchestrator-
|
|
4
|
+
tools: Read, Edit, Write, Bash, Grep, Glob, Agent, mcp__plugin_serena_serena__find_symbol, mcp__plugin_serena_serena__find_referencing_symbols, mcp__plugin_serena_serena__get_symbols_overview, mcp__plugin_serena_serena__search_for_pattern, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, mcp__plugin_microsoft-docs_microsoft-learn__microsoft_docs_search, mcp__plugin_microsoft-docs_microsoft-learn__microsoft_docs_fetch, mcp__orchestrator-tools__kbGetDocument, mcp__orchestrator-tools__startAgentInvocation, mcp__orchestrator-tools__completeAgentInvocation, mcp__orchestrator-extended__artifactStore, mcp__orchestrator-extended__artifactRetrieve
|
|
5
5
|
model: opus
|
|
6
6
|
color: orange
|
|
7
7
|
permissionMode: acceptEdits
|
package/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "orchestrator-definitions/v1",
|
|
3
3
|
"namespace": "orchestrator",
|
|
4
|
-
"version": "3.
|
|
5
|
-
"generatedAt": "2026-09-
|
|
4
|
+
"version": "3.40.0",
|
|
5
|
+
"generatedAt": "2026-09-25T13:12:10.970Z",
|
|
6
6
|
"definitions": {
|
|
7
7
|
"agents": [
|
|
8
8
|
{
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"slug": "agentic-architect",
|
|
18
18
|
"file": "agents/agentic-architect.md",
|
|
19
19
|
"version": "1.0.0",
|
|
20
|
-
"checksum": "sha256:
|
|
20
|
+
"checksum": "sha256:0d4f1c8d5babbd1a1a204778dfe67d7db55d809fbaefa8dc74015a8650df39ed",
|
|
21
21
|
"supersedes": null,
|
|
22
22
|
"metadata": {}
|
|
23
23
|
},
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"slug": "architecture-mediator",
|
|
34
34
|
"file": "agents/architecture-mediator.md",
|
|
35
35
|
"version": "1.0.0",
|
|
36
|
-
"checksum": "sha256:
|
|
36
|
+
"checksum": "sha256:c72668aee1556e527289820caa2c4a9066f21a3760183f5862093b9360728397",
|
|
37
37
|
"supersedes": null,
|
|
38
38
|
"metadata": {}
|
|
39
39
|
},
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"slug": "backend-architect",
|
|
50
50
|
"file": "agents/backend-architect.md",
|
|
51
51
|
"version": "1.0.0",
|
|
52
|
-
"checksum": "sha256:
|
|
52
|
+
"checksum": "sha256:af734c97ef76784444926d4f947432de0a712eb3fef977ce82801818e24fcc8c",
|
|
53
53
|
"supersedes": null,
|
|
54
54
|
"metadata": {}
|
|
55
55
|
},
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"slug": "contract-architect",
|
|
90
90
|
"file": "agents/contract-architect.md",
|
|
91
91
|
"version": "1.0.0",
|
|
92
|
-
"checksum": "sha256:
|
|
92
|
+
"checksum": "sha256:b2ff958105a0d236378c6e182478679e93269fe1aa4805d282583482890bc81e",
|
|
93
93
|
"supersedes": null,
|
|
94
94
|
"metadata": {}
|
|
95
95
|
},
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"slug": "datamodel-architect",
|
|
98
98
|
"file": "agents/datamodel-architect.md",
|
|
99
99
|
"version": "1.0.0",
|
|
100
|
-
"checksum": "sha256:
|
|
100
|
+
"checksum": "sha256:63e1411a88d0e156476bd80b2f7c8b080cd12f433e71d765b3836c1a61558b40",
|
|
101
101
|
"supersedes": null,
|
|
102
102
|
"metadata": {}
|
|
103
103
|
},
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
"slug": "frontend-architect",
|
|
130
130
|
"file": "agents/frontend-architect.md",
|
|
131
131
|
"version": "1.0.0",
|
|
132
|
-
"checksum": "sha256:
|
|
132
|
+
"checksum": "sha256:bce5374534f92715606fd782f63a518398388d738119d152e495ce492c0a0fce",
|
|
133
133
|
"supersedes": null,
|
|
134
134
|
"metadata": {}
|
|
135
135
|
},
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
"slug": "harness-architect",
|
|
146
146
|
"file": "agents/harness-architect.md",
|
|
147
147
|
"version": "1.0.0",
|
|
148
|
-
"checksum": "sha256:
|
|
148
|
+
"checksum": "sha256:d3dc897e15577053a6bdf8184e222a928c4fdf3d60f59124e790ae97fe870472",
|
|
149
149
|
"supersedes": null,
|
|
150
150
|
"metadata": {}
|
|
151
151
|
},
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
"slug": "infra-architect",
|
|
170
170
|
"file": "agents/infra-architect.md",
|
|
171
171
|
"version": "1.0.0",
|
|
172
|
-
"checksum": "sha256:
|
|
172
|
+
"checksum": "sha256:7787eb178cb92d578800ba0a1fc80073ce42ab9524162e2e792d7b1d974a6dc7",
|
|
173
173
|
"supersedes": null,
|
|
174
174
|
"metadata": {}
|
|
175
175
|
},
|
|
@@ -295,6 +295,14 @@
|
|
|
295
295
|
}
|
|
296
296
|
],
|
|
297
297
|
"skills": [
|
|
298
|
+
{
|
|
299
|
+
"slug": "archify",
|
|
300
|
+
"file": "skills/archify/SKILL.md",
|
|
301
|
+
"version": "1.0.0",
|
|
302
|
+
"checksum": "sha256:453c292c0201c03cae2bf1e91c2e4fde1b104bb53b3bda255b4d0004fdd701aa",
|
|
303
|
+
"supersedes": null,
|
|
304
|
+
"metadata": {}
|
|
305
|
+
},
|
|
298
306
|
{
|
|
299
307
|
"slug": "arquitetura-lane-dispatch",
|
|
300
308
|
"file": "skills/arquitetura-lane-dispatch/SKILL.md",
|
|
@@ -307,7 +315,7 @@
|
|
|
307
315
|
"slug": "arquitetura-mediada-arquiteto",
|
|
308
316
|
"file": "skills/arquitetura-mediada-arquiteto/SKILL.md",
|
|
309
317
|
"version": "1.0.0",
|
|
310
|
-
"checksum": "sha256:
|
|
318
|
+
"checksum": "sha256:6f77a9ddb673948ae3a53d107df8010a2c7d4b51fa76320e309ddc255b2c44f2",
|
|
311
319
|
"supersedes": null,
|
|
312
320
|
"metadata": {}
|
|
313
321
|
},
|
|
@@ -435,7 +443,7 @@
|
|
|
435
443
|
"slug": "kb-api-pattern",
|
|
436
444
|
"file": "skills/kb-api-pattern/SKILL.md",
|
|
437
445
|
"version": "1.0.0",
|
|
438
|
-
"checksum": "sha256:
|
|
446
|
+
"checksum": "sha256:67dbf72831c92fed9f3b04b8d8630032ffece3afcb84fc62aeec529d1ddabeff",
|
|
439
447
|
"supersedes": null,
|
|
440
448
|
"metadata": {}
|
|
441
449
|
},
|
package/package.json
CHANGED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 tt-a1i (Archify)
|
|
4
|
+
Copyright (c) 2025 Cocoon AI (original "architecture-diagram-generator")
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: archify
|
|
3
|
+
description: Create professional architecture, workflow, sequence, data-flow, and lifecycle/state diagrams as standalone HTML files with SVG graphics, a built-in dark/light theme toggle, and one-click export to PNG / JPEG / WebP / SVG. Accepts plain-language descriptions or pasted Mermaid code (flowchart, sequenceDiagram, stateDiagram) and lays the diagram out from scratch in archify style. Use when the user asks for system architecture diagrams, infrastructure diagrams, cloud architecture visualizations, security diagrams, network topology, technical workflows, approval flows, runbooks, CI/CD flows, process diagrams, API call sequences, request lifecycles, data pipelines, ETL/ELT maps, PII boundaries, data lineage, state machines, lifecycle diagrams, status transitions, or asks to convert/beautify a Mermaid diagram.
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
version: "2.11"
|
|
7
|
+
author: tt-a1i
|
|
8
|
+
based_on: Cocoon-AI/architecture-diagram-generator (MIT, v1.0)
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Archify Skill
|
|
12
|
+
|
|
13
|
+
Create professional technical diagrams as self-contained HTML files with inline SVG, a theme toggle, and a built-in image/SVG export menu.
|
|
14
|
+
|
|
15
|
+
Every diagram ships with a **dark/light theme toggle** (persists in `localStorage`, respects `prefers-color-scheme`), an **export menu** (copy PNG to clipboard; download PNG/JPEG/WebP rasterized natively at up to 4× resolution; download a **dual-theme SVG** that follows the embedding host's `prefers-color-scheme` — ideal for GitHub READMEs), and a **CSS-variable color system** that keeps both themes consistent.
|
|
16
|
+
|
|
17
|
+
## Setup
|
|
18
|
+
|
|
19
|
+
No dependency installation is required. The distributed skill includes standalone validators compiled from all five JSON Schemas, so schema and layout validation work immediately after installation. The generated HTML and the renderer runtime are both dependency-free.
|
|
20
|
+
|
|
21
|
+
Run `node bin/archify.mjs doctor` to verify an installation. Run `node bin/archify.mjs demo [output-directory]` to generate a ready-to-open example before creating the first custom diagram.
|
|
22
|
+
|
|
23
|
+
If you have no shell access at all (e.g. the skill was added as project knowledge), fall back to architecture mode for every request: hand-place SVG into `assets/template.html` following the Design System below, and run the self-review checklist before delivering.
|
|
24
|
+
|
|
25
|
+
## Choosing a Diagram Type
|
|
26
|
+
|
|
27
|
+
| Type | Use for | How |
|
|
28
|
+
|------|---------|-----|
|
|
29
|
+
| `architecture` | System components, cloud resources, services, security boundaries, infrastructure | `renderers/architecture/render-architecture.mjs` + JSON (or hand-place SVG when renderers can't run) |
|
|
30
|
+
| `workflow` | Technical flows, approval gates, tool calls, runbooks, CI/CD, incident response | `renderers/workflow/render-workflow.mjs` + JSON |
|
|
31
|
+
| `sequence` | API call chains, request lifecycles, cache fallback, async traces, return paths | `renderers/sequence/render-sequence.mjs` + JSON |
|
|
32
|
+
| `dataflow` | Pipelines, ETL/ELT, PII isolation, lineage, warehouse sync, consumers | `renderers/dataflow/render-dataflow.mjs` + JSON |
|
|
33
|
+
| `lifecycle` | State machines, status transitions, wait states, retries, terminal states | `renderers/lifecycle/render-lifecycle.mjs` + JSON |
|
|
34
|
+
|
|
35
|
+
Trigger phrases: "architecture/system/cloud diagram" → `architecture` (unless clearly process-oriented). "workflow/flow/process/runbook/approval/CI-CD/incident" → `workflow`. "sequence/interaction/call chain/who calls whom" → `sequence`. "data flow/pipeline/ETL/lineage/PII/governance" → `dataflow`. "state/status/lifecycle/state machine/retry/terminal" → `lifecycle`.
|
|
36
|
+
|
|
37
|
+
## Mermaid as an Input Dialect
|
|
38
|
+
|
|
39
|
+
When the user pastes Mermaid code, do NOT try to render or parse it mechanically — read it for structure and **lay out from scratch** in the matching archify mode:
|
|
40
|
+
|
|
41
|
+
| Mermaid | Archify mode | Mapping |
|
|
42
|
+
|---------|--------------|---------|
|
|
43
|
+
| `flowchart` / `graph` | `workflow` (or `architecture` if it's a component map) | `subgraph` → lane or region boundary; node shape `{}` (diamond) → decision/security node; `-->` labels → edge labels (use sparingly); `classDef`/`style` → nearest semantic type |
|
|
44
|
+
| `sequenceDiagram` | `sequence` | `participant` → participants (pick semantic `type` from the name); `->>` → message, `-->>` → `return` variant; `Note` → message `note`; `rect` blocks → segments |
|
|
45
|
+
| `stateDiagram` | `lifecycle` | states → states (pick `start`/`active`/`waiting`/`success`/`failure` from names); `[*]` start/end → `start` type / `terminal` lane; transition labels → event-like labels |
|
|
46
|
+
|
|
47
|
+
Drop Mermaid styling; keep only the topology and meaning. You choose grouping, lane order, and what deserves emphasis — that judgment is the product.
|
|
48
|
+
|
|
49
|
+
## Layout principles (read before placing)
|
|
50
|
+
|
|
51
|
+
Archify's readability comes from **spatial narrative**, not from drawing every dependency as an arrow. Before you write coordinates or edge lists, plan one clear story:
|
|
52
|
+
|
|
53
|
+
1. **One main path** — left → right (architecture) or lane → column (workflow). The reader should trace the happy path without crossing lines.
|
|
54
|
+
2. **Few labeled edges** — label only cross-boundary or non-obvious transitions on the main path. Adjacent steps stay unlabeled.
|
|
55
|
+
3. **Short side branches** — permissions, storage, bots, CI: connect **up or down** from the nearest node on the main path. Never route a secondary edge diagonally across unrelated components.
|
|
56
|
+
4. **Cards for detail** — policies, tech stack notes, and "also connects to X" belong in summary cards, not as extra arrows.
|
|
57
|
+
5. **Mode fit** — process / approval / tool-call stories → `workflow` or `sequence`. Component maps with ≤12 nodes → `architecture`. If the diagram needs 20+ edges, remove edges until the main path is obvious.
|
|
58
|
+
|
|
59
|
+
Worked examples on this pattern: `examples/archify-repo.architecture.json` (this repo) and `examples/maka-architecture.architecture.json` (third-party desktop app).
|
|
60
|
+
|
|
61
|
+
When validation fails on label overlap, read the **Suggested fix** lines (coordinates / `labelAt` / `labelDy`) and apply them directly — do not guess offsets blindly.
|
|
62
|
+
|
|
63
|
+
## Renderer Modes (architecture / workflow / sequence / dataflow / lifecycle)
|
|
64
|
+
|
|
65
|
+
All five modes follow the same loop:
|
|
66
|
+
|
|
67
|
+
1. **Read first**: the schema (`schemas/<type>.schema.json`) and the complete worked example (`examples/*.{architecture,workflow,sequence,dataflow,lifecycle}.json`) — copy its patterns instead of guessing field shapes.
|
|
68
|
+
2. Write `<name>.<type>.json`.
|
|
69
|
+
3. Render: `node bin/archify.mjs render <type> <input>.json <output>.html` (paths relative to this skill's folder).
|
|
70
|
+
4. Validate the generated artifact: `node bin/archify.mjs validate <type> <input>.json --json`, or check an existing HTML file with `node bin/archify.mjs check <output>.html`. This catches malformed SVG output, non-finite SVG values, two-point diagonal arrows, and arrows crossing the legend.
|
|
71
|
+
5. If either step fails, the error names the JSON path or the fix (thresholds, valid ranges, which knob to change). Fix the JSON and re-run; never edit the renderer.
|
|
72
|
+
|
|
73
|
+
Schema violations exit non-zero with path-prefixed messages like `/nodes/3 (id/label: "router") must NOT have additional properties`. The renderers additionally fail fast on layout problems: node/state overlap (including cross-lane), labels colliding with nodes or other labels, labels wider than their node, out-of-range columns/rows, too-short edges, workflow edges crossing unrelated nodes, and legends outside the viewBox. CJK text is measured at double width automatically.
|
|
74
|
+
|
|
75
|
+
Set `meta.animation: "trace"` only when the user asks for motion or a presentation/demo view. It adds lightweight SVG/CSS trace animation to renderer-marked arrows and nodes, respects `prefers-reduced-motion`, and leaves the default static output unchanged.
|
|
76
|
+
|
|
77
|
+
### Workflow
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"schema_version": 1,
|
|
82
|
+
"diagram_type": "workflow",
|
|
83
|
+
"meta": { "title": "Release Workflow", "subtitle": "PR to production", "output": "release.html" },
|
|
84
|
+
"lanes": [ { "id": "dev", "label": "Developer" }, { "id": "ci", "label": "CI" }, { "id": "exceptions", "label": "Exception Handling", "variant": "exception" } ],
|
|
85
|
+
"phases": [ { "id": "intake", "label": "Intake", "fromCol": 0, "toCol": 1 } ],
|
|
86
|
+
"groups": [ { "id": "checks", "label": "Parallel checks", "lane": "ci", "fromCol": 1, "toCol": 3, "variant": "emphasis" } ],
|
|
87
|
+
"mainPath": ["pr", "build"],
|
|
88
|
+
"nodes": [
|
|
89
|
+
{ "id": "pr", "lane": "dev", "col": 0, "type": "frontend", "label": "Open PR", "sublabel": "feature branch" },
|
|
90
|
+
{ "id": "build", "lane": "ci", "col": 1, "type": "backend", "label": "Build", "sublabel": "lint + test", "tag": "blocking" }
|
|
91
|
+
],
|
|
92
|
+
"edges": [
|
|
93
|
+
{ "from": "pr", "to": "build", "label": "webhook", "variant": "emphasis", "fromSide": "bottom", "toSide": "top", "route": "drop" }
|
|
94
|
+
],
|
|
95
|
+
"cards": []
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Layout budget**: 6 columns (`col` 0–5) at fixed x positions `[88, 220, 300, 430, 500, 625]` — columns 1↔2 and 3↔4 are only 70–80px apart, so default-width (92px) nodes in those adjacent columns of the same lane overlap; skip a column or shrink `width`. Lane content width is 640px. Omit `meta.viewBox` — the renderer sizes height to the lane count automatically. Use `phases` for top-of-diagram story beats, `groups` to frame parallel work or a branch inside one lane, and `lane.variant: "exception"` for error/retry/fallback lanes. `mainPath` is optional but recommended: list the happy-path node ids in order so the renderer can catch missing edges or accidental backward movement. Edge routes: `straight`, `drop` (bend between lanes; `bias` 0–1 picks where), `outside-right`, `return-left`, `bottom-channel`, `up-channel`, or explicit `via` points. Keep adjacent-step edges unlabeled; reserve labels for cross-lane transitions, approvals, async traces, and returns.
|
|
100
|
+
|
|
101
|
+
### Sequence
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"schema_version": 1,
|
|
106
|
+
"diagram_type": "sequence",
|
|
107
|
+
"meta": { "title": "Cache Miss Request", "subtitle": "auth and cache fallback", "output": "cache-miss.html" },
|
|
108
|
+
"participants": [
|
|
109
|
+
{ "id": "web", "type": "frontend", "label": "Web App", "sublabel": "React UI" },
|
|
110
|
+
{ "id": "api", "type": "backend", "label": "API", "sublabel": "handler" }
|
|
111
|
+
],
|
|
112
|
+
"segments": [ { "from": 160, "to": 320, "label": "01 / AUTH" } ],
|
|
113
|
+
"messages": [
|
|
114
|
+
{ "from": "web", "to": "api", "y": 200, "label": "GET /data", "variant": "emphasis" },
|
|
115
|
+
{ "from": "api", "to": "web", "y": 290, "label": "200 JSON", "variant": "return" }
|
|
116
|
+
],
|
|
117
|
+
"activations": [ { "participant": "api", "from": 190, "to": 300, "type": "backend" } ],
|
|
118
|
+
"cards": []
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Layout budget**: participants sit at x = 62 + index×108, so a 920-wide viewBox fits at most 8. Message `y` must stay within `[160, viewBox_height − 83]`; messages that share horizontal space need ≥28px vertical separation; arrows need ≥60px horizontal span. `segments[].from/to` and `activations[].from/to` are **y pixel coordinates**, not participant ids. A taller `meta.viewBox` (default `[920, 760]`) buys more timeline room. Keep labels short: "GET /path", "verify JWT", "cache miss", "200 JSON".
|
|
123
|
+
|
|
124
|
+
### Dataflow
|
|
125
|
+
|
|
126
|
+
```json
|
|
127
|
+
{
|
|
128
|
+
"schema_version": 1,
|
|
129
|
+
"diagram_type": "dataflow",
|
|
130
|
+
"meta": { "title": "Product Analytics", "subtitle": "events to consumers", "output": "analytics.html" },
|
|
131
|
+
"stages": [ { "label": "Sources" }, { "label": "Ingest" }, { "label": "Store" } ],
|
|
132
|
+
"nodes": [
|
|
133
|
+
{ "id": "web", "type": "frontend", "label": "Web App", "stage": 0, "row": 0, "sublabel": "clickstream" },
|
|
134
|
+
{ "id": "kafka", "type": "messagebus", "label": "Kafka", "stage": 1, "row": 0, "tag": "accepted events" }
|
|
135
|
+
],
|
|
136
|
+
"flows": [
|
|
137
|
+
{ "from": "web", "to": "kafka", "label": "events", "classification": "PII touch", "variant": "emphasis" }
|
|
138
|
+
],
|
|
139
|
+
"cards": []
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Layout budget**: 2–5 stages at x = 100 + stage×215; 5 rows (`row` 0–4) at y `[128, 242, 356, 470, 584]`; default node 112×58. Default viewBox `[940, 720]`. Flow labels are mandatory and asset-like ("clickstream", "identity map", "feature vectors"); put sensitivity in `classification` ("PII touch", "approved only", "non-PII"). Variants: `emphasis` = primary path, `security` = PII/policy/consent, `dashed` = async/batch.
|
|
144
|
+
|
|
145
|
+
### Lifecycle
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"schema_version": 1,
|
|
150
|
+
"diagram_type": "lifecycle",
|
|
151
|
+
"meta": { "title": "Agent Run Lifecycle", "subtitle": "states and terminal outcomes", "output": "agent-run.html" },
|
|
152
|
+
"lanes": [
|
|
153
|
+
{ "id": "main", "label": "Lifecycle phases" },
|
|
154
|
+
{ "id": "waiting", "label": "Interruptions" },
|
|
155
|
+
{ "id": "terminal", "label": "Terminal exits" }
|
|
156
|
+
],
|
|
157
|
+
"states": [
|
|
158
|
+
{ "id": "queued", "type": "start", "label": "Queued", "lane": "main", "col": 0, "step": "01" },
|
|
159
|
+
{ "id": "running", "type": "active", "label": "Executing", "lane": "main", "col": 2, "step": "02" },
|
|
160
|
+
{ "id": "approval", "type": "waiting", "label": "Needs Approval", "lane": "waiting", "col": 0 },
|
|
161
|
+
{ "id": "done", "type": "success", "label": "Completed", "lane": "terminal", "col": 2 }
|
|
162
|
+
],
|
|
163
|
+
"transitions": [
|
|
164
|
+
{ "from": "queued", "to": "running", "variant": "emphasis" },
|
|
165
|
+
{ "from": "running", "to": "approval", "label": "needs approval", "variant": "security", "fromSide": "bottom", "toSide": "right" },
|
|
166
|
+
{ "from": "running", "to": "done", "label": "success", "variant": "emphasis", "fromSide": "bottom", "toSide": "top" }
|
|
167
|
+
],
|
|
168
|
+
"cards": []
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Layout budget — lane ids are semantic and reserved**: `main` is required and maps to the top phase band (cols 0–4); `terminal` maps to the bottom outcome band (cols 0–2); **every other lane id shares the single middle event band** (cols 0–2) — separate same-band states with different `col` or `yOffset`. Band headers render from your lane labels. Default viewBox `[980, 660]`. Keep transition labels event-like and sparse ("retry", "timeout", "cancel"); prefer state `tag`s, `step` numbers, and summary cards over label-heavy arrows. Put terminal states in the `terminal` lane so endings are unambiguous.
|
|
173
|
+
|
|
174
|
+
### Per-mode deep guidance
|
|
175
|
+
|
|
176
|
+
Each renderer has a README with its full design language (route presets, semantic types, story guidance): `renderers/workflow/README.md`, `renderers/sequence/README.md`, `renderers/dataflow/README.md`, `renderers/lifecycle/README.md`. Read the matching one before your first diagram of that mode in a session.
|
|
177
|
+
|
|
178
|
+
## Architecture Mode
|
|
179
|
+
|
|
180
|
+
Architecture has the same read-schema-then-render loop as the other modes — prefer it. Hand-placed SVG is the fallback for when renderers can't run.
|
|
181
|
+
|
|
182
|
+
```json
|
|
183
|
+
{
|
|
184
|
+
"schema_version": 1,
|
|
185
|
+
"diagram_type": "architecture",
|
|
186
|
+
"meta": { "title": "Sample Web App", "subtitle": "3-tier SaaS on AWS", "output": "web-app.html" },
|
|
187
|
+
"components": [
|
|
188
|
+
{ "id": "users", "type": "external", "label": "Users", "sublabel": "Browser", "pos": [40, 300] },
|
|
189
|
+
{ "id": "api", "type": "backend", "label": "API Server", "sublabel": "FastAPI :8000", "pos": [460, 300] },
|
|
190
|
+
{ "id": "db", "type": "database", "label": "PostgreSQL", "sublabel": ":5432", "pos": [680, 300] }
|
|
191
|
+
],
|
|
192
|
+
"boundaries": [
|
|
193
|
+
{ "kind": "region", "label": "AWS us-west-2", "wraps": ["api", "db"] }
|
|
194
|
+
],
|
|
195
|
+
"connections": [
|
|
196
|
+
{ "from": "users", "to": "api", "label": "HTTPS", "variant": "emphasis" },
|
|
197
|
+
{ "from": "api", "to": "db", "label": "SQL" }
|
|
198
|
+
],
|
|
199
|
+
"cards": []
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Render: `node bin/archify.mjs render architecture <input>.json <output>.html`.
|
|
204
|
+
|
|
205
|
+
**Free placement** — `pos: [x, y]` is the component's top-left; `size: [w, h]` defaults to `[120, 60]`. Unlike typed modes there is no lane/stage grid — asymmetric placement is yours to choose. `meta.viewBox` is optional (auto-fitted).
|
|
206
|
+
|
|
207
|
+
**Grid placement (#8)** — when manual coordinates are painful, set semantic cells instead of doing arithmetic:
|
|
208
|
+
|
|
209
|
+
```json
|
|
210
|
+
{
|
|
211
|
+
"layout": { "mode": "grid", "cols": 7, "origin": [40, 100], "gapX": 24, "gapY": 48, "cellW": 120, "cellH": 60 },
|
|
212
|
+
"components": [
|
|
213
|
+
{ "id": "agents", "type": "frontend", "label": "Agent Hosts", "row": 1, "col": 1 },
|
|
214
|
+
{ "id": "ir", "type": "messagebus", "label": "JSON IR", "row": 1, "col": 2 }
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
`pos` still wins when present (override one cell). This is **not** auto-layout — spacing is fixed cell math. Example: `examples/archify-repo-grid.architecture.json`.
|
|
220
|
+
|
|
221
|
+
**Inspect layout (#9)** — after editing JSON, dump computed boxes without opening HTML:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
node bin/archify.mjs inspect architecture my.architecture.json
|
|
225
|
+
# or: node bin/archify.mjs validate architecture my.architecture.json --layout-json
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Output includes component rects, boundaries, connection point paths, and label positions.
|
|
229
|
+
|
|
230
|
+
**The renderer does the mechanical work that used to be hand-tuned**, so you only choose coordinates and meaning:
|
|
231
|
+
|
|
232
|
+
- **Free coordinates** — `pos: [x, y]` is the component's top-left; `size: [w, h]` defaults to `[120, 60]`. Unlike the typed modes there is no lane/stage grid — asymmetric placement is yours to choose. `meta.viewBox` is optional (auto-fitted to your components + a legend row).
|
|
233
|
+
- **Grid placement** — optional `layout.mode: "grid"` with `row`/`col` per component (see above). Not dagre; fixed cell spacing only.
|
|
234
|
+
- **Boundaries from `wraps`** — list the component ids a `region` (dashed amber) or `security-group` (dashed rose) encloses; the renderer computes the box with correct 30/50 padding automatically. Never hand-arithmetic a boundary again.
|
|
235
|
+
- **Connections** route like edges (`variant`, `fromSide`/`toSide`, `route: straight|orthogonal-h|orthogonal-v|auto`, `via`, `labelDx/labelDy/labelAt`). For a vertical labeled connection, push the label into the gap with `labelDy` (the validator will tell you if it lands on a box).
|
|
236
|
+
- The renderer auto-emits the two-rect `c-mask` pattern, draws arrows before boxes (z-order), builds the legend from the component types you used, and **fails fast on component overlap, off-canvas components/boundaries, unknown wraps/connection ids, label-vs-component collisions, and non-finite coordinates** — the same reliability the other four modes already had.
|
|
237
|
+
|
|
238
|
+
### Hand-placed fallback (no renderer available)
|
|
239
|
+
|
|
240
|
+
When Node/ajv can't run, copy `assets/template.html` and place SVG by hand. Study the worked diagram inside the template and `examples/web-app.html` for coordinate idioms, follow the Design System below, and run the self-review checklist before delivering.
|
|
241
|
+
|
|
242
|
+
### The Cardinal Rule: CSS classes, not inline colors
|
|
243
|
+
|
|
244
|
+
The theme toggle works by switching CSS custom properties. Hardcoded `fill="rgba(...)"` or `stroke="#22d3ee"` will NOT update on theme change. Always use the class system:
|
|
245
|
+
|
|
246
|
+
```svg
|
|
247
|
+
<rect x="X" y="Y" width="W" height="H" rx="6" class="c-mask"/>
|
|
248
|
+
<rect x="X" y="Y" width="W" height="H" rx="6" class="c-backend" stroke-width="1.5"/>
|
|
249
|
+
<text x="CX" y="CY" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">API Server</text>
|
|
250
|
+
<text x="CX" y="CY+16" class="t-muted" font-size="9" text-anchor="middle">FastAPI :8000</text>
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Design system
|
|
254
|
+
|
|
255
|
+
Component fills `c-frontend` (clients/UI), `c-backend` (services/APIs), `c-database` (stores/caches), `c-cloud` (managed infra), `c-security` (auth/secrets), `c-messagebus` (Kafka/queues), `c-external` (3rd parties); text accents `t-<same>` plus neutrals `t-primary` / `t-muted` / `t-dim`. Arrows `a-default`, `a-emphasis` (hot path), `a-security` (dashed), `a-dashed` (async) — always set `stroke-width` and pair `marker-end="url(#arrowhead[-variant])"` with the matching class. Boundaries: `c-security-group` (dashed rose), `c-region` (dashed amber), `c-lane` (swimlane).
|
|
256
|
+
|
|
257
|
+
Typography inherits JetBrains Mono from the SVG root. Sizes: 11–12px component names, 9px sublabels, 8px annotations, 7px tiny labels.
|
|
258
|
+
|
|
259
|
+
### Hard layout rules
|
|
260
|
+
|
|
261
|
+
- **Two-rect pattern everywhere**: opaque `c-mask` rect first, styled `c-<type>` rect on top — semi-transparent fills otherwise let arrows bleed through.
|
|
262
|
+
- **Arrows before components** in document order (SVG paints in order; arrows must sit behind boxes).
|
|
263
|
+
- **Vertical stacking**: ≥40px gap between components; inline connectors (message buses, 20px tall) live inside the gap, never overlapping boxes.
|
|
264
|
+
- **Boundary padding**: boundary `y` = inner `y` − 30, boundary `height` = inner `height` + 50, label baseline 18px below the boundary top.
|
|
265
|
+
- **Legend placement**: outside ALL boundary boxes, ≥20px below the lowest one; grow the viewBox if needed.
|
|
266
|
+
|
|
267
|
+
### Self-review checklist (run before delivering)
|
|
268
|
+
|
|
269
|
+
1. `grep -E 'fill="(#|rgb)|stroke="(#|rgb)' out.html` inside the SVG returns nothing except the template's own defs (Cardinal Rule).
|
|
270
|
+
2. Every `c-<type>` rect has an identical-geometry `c-mask` rect immediately before it.
|
|
271
|
+
3. All `<line>`/`<path>` arrows appear before all component rects in document order.
|
|
272
|
+
4. Compute max(y + height) over all SVG elements: viewBox height must exceed it by ≥20px; same for x/width.
|
|
273
|
+
5. Legend y is below every boundary's y + height.
|
|
274
|
+
6. The `.toolbar`, `<script>` blocks, and `:root` / `[data-theme]` CSS are untouched — they ARE the theme toggle and export menu.
|
|
275
|
+
|
|
276
|
+
## Output
|
|
277
|
+
|
|
278
|
+
A single self-contained `.html`: embedded CSS (Google Fonts loads async and degrades to system monospace offline), inline SVG, ~19KB embedded JS for theme + export. It renders directly in any modern browser. Raster exports render natively at up to 4× the viewBox (large diagrams step down to 3×/2× to stay under canvas limits); the SVG download is dual-theme self-contained and follows the host's `prefers-color-scheme` (manual override via `svg[data-theme="..."]`).
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
VENDOR -- archify (skill de terceiro vendorizada no plugin orchestrator)
|
|
2
|
+
=========================================================================
|
|
3
|
+
|
|
4
|
+
Este arquivo e o UNICO arquivo deste diretorio que nao veio do upstream.
|
|
5
|
+
Todo o resto e copia byte-a-byte e NAO deve ser editado aqui: correcao vai
|
|
6
|
+
para o upstream, e a proxima vendorizacao traz.
|
|
7
|
+
|
|
8
|
+
Por que .txt e nao .md: o gerador do manifest
|
|
9
|
+
(packages/definitions/src/scripts/generate-manifest.ts, scanDirectory +
|
|
10
|
+
scanSubDirectory) registra como definicao de skill TODO arquivo .md no
|
|
11
|
+
primeiro nivel de skills/<slug>/ (e o caso de brainstorming/visual-companion.md).
|
|
12
|
+
Um VENDOR.md viraria uma skill "VENDOR" no manifest e no seed. Um .txt fica
|
|
13
|
+
fora do manifest e ainda viaja com o plugin e com o orch-defs install
|
|
14
|
+
(Materializer.copySkillAssets copia os arquivos nao-manifestados).
|
|
15
|
+
|
|
16
|
+
Origem
|
|
17
|
+
------
|
|
18
|
+
- repositorio: https://github.com/tt-a1i/archify.git (github, tt-a1i/archify)
|
|
19
|
+
- skillPath: archify/SKILL.md
|
|
20
|
+
- versao: 2.11 (SKILL.md metadata.version; package.json 2.11.0)
|
|
21
|
+
- skillFolderHash: adf032ee538a5d9b08977bcf41246bb923fc5f42
|
|
22
|
+
- instalada: 2026-07-18T17:10:52.539Z (~/.agents/.skill-lock.json)
|
|
23
|
+
- vendorizada: 2026-09-24, S533, decisoes do PM D-183 (c) e D-187 (caminho C,
|
|
24
|
+
mesmo nome bare "archify")
|
|
25
|
+
- fonte local: ~/.claude/skills/archify -> ~/.agents/skills/archify, copiada com
|
|
26
|
+
`cp -rL` (46 arquivos, 0 symlinks, `diff -r` vazio)
|
|
27
|
+
|
|
28
|
+
Verificacao do hash
|
|
29
|
+
-------------------
|
|
30
|
+
O skillFolderHash e o hash de ARVORE git da pasta upstream. Medido na
|
|
31
|
+
vendorizacao: os 46 arquivos copiados, staged, dao
|
|
32
|
+
`git write-tree --prefix=packages/definitions/skills/archify/` =
|
|
33
|
+
adf032ee538a5d9b08977bcf41246bb923fc5f42, identico ao do lock. Para
|
|
34
|
+
re-verificar depois do commit (exclui so este VENDOR.txt):
|
|
35
|
+
|
|
36
|
+
git ls-tree HEAD packages/definitions/skills/archify/ \
|
|
37
|
+
| grep -v 'VENDOR.txt$' \
|
|
38
|
+
| sed 's#packages/definitions/skills/archify/##' \
|
|
39
|
+
| git mktree
|
|
40
|
+
|
|
41
|
+
Licenca
|
|
42
|
+
-------
|
|
43
|
+
MIT, com DOIS copyrights, ambos no LICENSE deste diretorio (intacto):
|
|
44
|
+
- Copyright (c) 2026 tt-a1i (Archify)
|
|
45
|
+
- Copyright (c) 2025 Cocoon AI (original "architecture-diagram-generator")
|
|
46
|
+
O frontmatter da SKILL.md declara license: MIT e
|
|
47
|
+
based_on: Cocoon-AI/architecture-diagram-generator (MIT, v1.0).
|
|
48
|
+
|
|
49
|
+
Defeitos conhecidos do upstream (NAO corrigidos aqui)
|
|
50
|
+
-----------------------------------------------------
|
|
51
|
+
A SKILL.md cita arquivos em examples/ que nao existem no pacote. O pacote
|
|
52
|
+
traz 5 exemplos: agent-run.lifecycle.json, agent-tool-call.workflow.json,
|
|
53
|
+
cache-miss-request.sequence.json, product-analytics.dataflow.json,
|
|
54
|
+
web-app.architecture.json. Citados e ausentes (medido na vendorizacao):
|
|
55
|
+
- SKILL.md:59 examples/archify-repo.architecture.json
|
|
56
|
+
- SKILL.md:59 examples/maka-architecture.architecture.json
|
|
57
|
+
- SKILL.md:219 examples/archify-repo-grid.architecture.json
|
|
58
|
+
- SKILL.md:240 examples/web-app.html
|
|
59
|
+
|
|
60
|
+
Isolamento do conteudo vendorizado (medido na vendorizacao)
|
|
61
|
+
-----------------------------------------------------------
|
|
62
|
+
- test/*.test.mjs: nao sao coletados. O vitest da raiz inclui so *.test.ts em
|
|
63
|
+
tests/, src/**/__tests__, scripts/**/__tests__ e .claude/hooks/__tests__; o
|
|
64
|
+
de packages/definitions inclui so tests/**/*.test.ts. O `node --test` do
|
|
65
|
+
upstream so roda se alguem chamar o `npm test` DESTE diretorio.
|
|
66
|
+
- package.json / package-lock.json: nao viram workspace. Os workspaces da raiz
|
|
67
|
+
sao `packages/*` (um nivel), e o `npm ci` da raiz nao le este lock.
|
|
68
|
+
- Nenhuma dependencia de runtime: a SKILL.md declara que os validadores
|
|
69
|
+
compilados ja vem no pacote (renderers/shared/generated-validators.mjs); o
|
|
70
|
+
ajv e devDependency so para regenera-los.
|