@andespindola/crow-skills 0.24.0 → 0.25.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.
Files changed (78) hide show
  1. package/LICENSE +32 -4
  2. package/THIRD-PARTY-NOTICES.md +43 -0
  3. package/catalog.json +147 -37
  4. package/crow_skills/__init__.py +1 -1
  5. package/crow_skills/autoupdate.py +6 -1
  6. package/crow_skills/cli.py +15 -2
  7. package/docs/cli.md +2 -0
  8. package/package.json +2 -1
  9. package/release.json +195 -50
  10. package/skills/crow-accessibility/SKILL.md +7 -5
  11. package/skills/crow-accessibility/references/verificacao.md +102 -0
  12. package/skills/crow-agent-security/SKILL.md +8 -4
  13. package/skills/crow-agent-security/references/limites-agente.md +17 -0
  14. package/skills/crow-api-test/SKILL.md +2 -0
  15. package/skills/crow-api-test/references/casos-negativos.md +16 -0
  16. package/skills/crow-architecture/SKILL.md +2 -0
  17. package/skills/crow-architecture/references/modulos-profundos.md +18 -0
  18. package/skills/crow-backend/SKILL.md +3 -1
  19. package/skills/crow-backend/references/servico-backend.md +13 -0
  20. package/skills/crow-be-human/SKILL.md +2 -1
  21. package/skills/crow-be-human/references/voz-e-registro.md +35 -0
  22. package/skills/crow-behaviour/SKILL.md +7 -0
  23. package/skills/crow-behaviour/references/briefing-executavel.md +65 -0
  24. package/skills/crow-behaviour/references/ciclo-de-revisao.md +104 -0
  25. package/skills/crow-behaviour/references/progress-ledger.md +3 -1
  26. package/skills/crow-browser/SKILL.md +6 -3
  27. package/skills/crow-browser/references/mecanismo-de-browser.md +24 -0
  28. package/skills/crow-browser/references/pagina.md +43 -0
  29. package/skills/crow-debug/SKILL.md +1 -1
  30. package/skills/crow-design/SKILL.md +6 -6
  31. package/skills/crow-design/references/contrato.md +84 -0
  32. package/skills/crow-discovery/SKILL.md +5 -4
  33. package/skills/crow-discovery/references/pesquisa-sem-vies.md +33 -0
  34. package/skills/crow-documents/SKILL.md +9 -3
  35. package/skills/crow-documents/references/ooxml.md +43 -0
  36. package/skills/crow-documents/references/pdf.md +31 -0
  37. package/skills/crow-documents/references/planilha.md +35 -0
  38. package/skills/crow-domain/SKILL.md +2 -0
  39. package/skills/crow-domain/references/invariante-e-identidade.md +11 -0
  40. package/skills/crow-frontend/SKILL.md +6 -5
  41. package/skills/crow-growth/SKILL.md +2 -1
  42. package/skills/crow-growth/references/experimento-e-metrica.md +39 -0
  43. package/skills/crow-infra/SKILL.md +6 -5
  44. package/skills/crow-infra/references/kubernetes.md +6 -0
  45. package/skills/crow-interface/SKILL.md +1 -1
  46. package/skills/crow-interface/reference/adapt.md +8 -0
  47. package/skills/crow-interface/reference/layout.md +4 -1
  48. package/skills/crow-interface/reference/workflow.md +2 -0
  49. package/skills/crow-media/SKILL.md +5 -5
  50. package/skills/crow-media/references/producao.md +63 -0
  51. package/skills/crow-native-mobile/SKILL.md +1 -1
  52. package/skills/crow-observe/SKILL.md +8 -4
  53. package/skills/crow-observe/references/cardinalidade.md +11 -0
  54. package/skills/crow-performance/SKILL.md +5 -5
  55. package/skills/crow-performance/references/measurement.md +6 -0
  56. package/skills/crow-platform/SKILL.md +4 -4
  57. package/skills/crow-postgres/SKILL.md +3 -0
  58. package/skills/crow-postgres/references/migracao-online.md +17 -0
  59. package/skills/crow-product-leadership/SKILL.md +4 -3
  60. package/skills/crow-product-leadership/references/decisao-e-pessoas.md +35 -0
  61. package/skills/crow-qa/SKILL.md +1 -1
  62. package/skills/crow-release/SKILL.md +10 -5
  63. package/skills/crow-release/references/transicao.md +13 -0
  64. package/skills/crow-reverse/SKILL.md +1 -1
  65. package/skills/crow-secrets/SKILL.md +2 -2
  66. package/skills/crow-security-review/SKILL.md +12 -5
  67. package/skills/crow-security-scan/SKILL.md +8 -3
  68. package/skills/crow-security-scan/references/evidencia-scan.md +17 -0
  69. package/skills/crow-security-test/SKILL.md +5 -1
  70. package/skills/crow-security-test/references/prova-dinamica.md +24 -0
  71. package/skills/crow-seo/SKILL.md +6 -4
  72. package/skills/crow-seo/references/saida-tecnica.md +78 -0
  73. package/skills/crow-skill-author/SKILL.md +10 -6
  74. package/skills/crow-skill-author/references/medicao.md +85 -0
  75. package/skills/crow-spec/SKILL.md +4 -3
  76. package/skills/crow-spec/references/criterio-e-fatia.md +27 -0
  77. package/skills/crow-threat-model/SKILL.md +5 -1
  78. package/skills/crow-threat-model/references/ciclo-ameaca.md +15 -0
package/LICENSE CHANGED
@@ -4,6 +4,30 @@ Software proprietário. Este pacote é distribuído publicamente para uso, não
4
4
  cópia. O código-fonte não é aberto: a sua presença no pacote é uma necessidade de
5
5
  execução, não uma concessão de direitos sobre ele.
6
6
 
7
+ ## Componentes de terceiros
8
+
9
+ Este pacote inclui software de terceiros sob licenças próprias. Todo ele está dentro de
10
+ `skills/crow-interface/`:
11
+
12
+ 1. **Impeccable**, Copyright 2025 Paul Bakaus — Apache License 2.0, em
13
+ `skills/crow-interface/licenses/Apache-2.0.txt`, com o aviso original preservado em
14
+ `skills/crow-interface/licenses/Impeccable-NOTICE.md`. A proveniência e as
15
+ modificações estão em `skills/crow-interface/NOTICE.md`.
16
+ 2. **platform-design-skills** — MIT, em
17
+ `skills/crow-interface/licenses/platform-design-MIT.txt`.
18
+ 3. **modern-screenshot**, Copyright (c) 2021-present wxm — MIT, em
19
+ `skills/crow-interface/licenses/modern-screenshot-MIT.txt`.
20
+
21
+ Para esses componentes e para as obras deles derivadas, **a licença de terceiros
22
+ prevalece sobre esta**. Nada nesta licença restringe, condiciona ou revoga os direitos
23
+ que a Apache-2.0 e a MIT concedem a você sobre esses arquivos, inclusive os de
24
+ redistribuir, modificar e criar obra derivada, observadas as obrigações de atribuição e
25
+ de aviso dessas mesmas licenças. As restrições de "O que você não pode fazer" abaixo
26
+ alcançam somente o conteúdo próprio do Crow.
27
+
28
+ Quando um arquivo trouxer aviso de licença próprio, é esse aviso que governa aquele
29
+ arquivo. O inventário consolidado está em `THIRD-PARTY-NOTICES.md`.
30
+
7
31
  ## O que você pode fazer
8
32
 
9
33
  1. Instalar e executar o `crow-skills` nos seus próprios computadores, sem limite de
@@ -45,7 +69,11 @@ Qualquer uso fora do permitido acima depende de autorização escrita do titular
45
69
 
46
70
  ---
47
71
 
48
- Proprietary software, all rights reserved. Published for use, not for copying:
49
- installing and running it is permitted; redistribution, derivative works, extracting
50
- its content into another product or dataset, and reverse engineering are not. No
51
- warranty. See the Portuguese text above for the governing terms.
72
+ Proprietary software, all rights reserved, EXCEPT for the third-party components
73
+ bundled under `skills/crow-interface/` (Impeccable, Apache-2.0; platform-design-skills
74
+ and modern-screenshot, MIT), for which the third-party licence prevails over this one:
75
+ nothing here restricts the rights those licences grant you over those files. See
76
+ `THIRD-PARTY-NOTICES.md`. For Crow's own content, publication is for use, not for
77
+ copying: installing and running it is permitted; redistribution, derivative works,
78
+ extracting its content into another product or dataset, and reverse engineering are
79
+ not. No warranty. See the Portuguese text above for the governing terms.
@@ -0,0 +1,43 @@
1
+ # Avisos de terceiros
2
+
3
+ Inventário do software de terceiros distribuído dentro deste pacote. Para cada item, a
4
+ licença indicada **prevalece** sobre o `LICENSE` da raiz, conforme a seção "Componentes
5
+ de terceiros" dele.
6
+
7
+ Todo o conteúdo de terceiros está sob `skills/crow-interface/`. As demais 34 skills e o
8
+ CLI são conteúdo próprio do Crow.
9
+
10
+ ## Impeccable — Apache License 2.0
11
+
12
+ - Titular: Copyright 2025 Paul Bakaus
13
+ - Upstream: https://github.com/pbakaus/impeccable
14
+ - Licença: `skills/crow-interface/licenses/Apache-2.0.txt`
15
+ - Aviso original preservado: `skills/crow-interface/licenses/Impeccable-NOTICE.md`
16
+ - Proveniência, snapshot e modificações Crow: `skills/crow-interface/NOTICE.md`
17
+ - Escopo: a skill `crow-interface` é reconstrução derivada da Impeccable. Arquivos
18
+ derivados trazem cabeçalho "Derived from Impeccable".
19
+
20
+ ## platform-design-skills — MIT
21
+
22
+ - Licença: `skills/crow-interface/licenses/platform-design-MIT.txt`. O arquivo MIT
23
+ distribuído traz "Copyright (c) 2026" sem titular nomeado; a atribuição a
24
+ ehmo/platform-design-skills vem do NOTICE upstream, conforme registrado em
25
+ `skills/crow-interface/NOTICE.md`.
26
+ - Escopo, segundo esse mesmo NOTICE: `skills/crow-interface/reference/ios.md` e
27
+ `skills/crow-interface/reference/android.md`.
28
+
29
+ ## modern-screenshot — MIT
30
+
31
+ - Titular: Copyright (c) 2021-present wxm (projeto qq15725/modern-screenshot)
32
+ - Licença: `skills/crow-interface/licenses/modern-screenshot-MIT.txt`
33
+ - Escopo: `skills/crow-interface/scripts/modern-screenshot.umd.js`, bundle distribuído
34
+ sem modificação
35
+
36
+ ---
37
+
38
+ # Third-party notices
39
+
40
+ Inventory of third-party software redistributed inside this package. For each item, the
41
+ stated licence **prevails** over the root `LICENSE`, per its "Componentes de terceiros"
42
+ section. All third-party content lives under `skills/crow-interface/`; the other 34
43
+ skills and the CLI are Crow's own content.
package/catalog.json CHANGED
@@ -4,33 +4,133 @@
4
4
  "overlays": [
5
5
  {
6
6
  "skill": "crow-behaviour",
7
- "roles": ["coordinator", "specialist", "reviewer"]
7
+ "roles": [
8
+ "coordinator",
9
+ "specialist",
10
+ "reviewer"
11
+ ]
8
12
  }
9
13
  ]
10
14
  },
11
15
  "groups": [
12
- {"name": "essencial", "title": "Essencial", "description": "Coordenação e o que serve a quase todo projeto: arquitetura, especificação, depuração, testes e revisão de segurança",
13
- "skills": ["crow-behaviour", "crow-architecture", "crow-spec", "crow-debug", "crow-qa", "crow-security-review"]},
14
- {"name": "web", "title": "Web", "description": "Interfaces web: direção visual, implementação, acessibilidade, navegador e SEO",
15
- "skills": ["crow-frontend", "crow-interface", "crow-design", "crow-accessibility", "crow-browser", "crow-seo"]},
16
- {"name": "backend", "title": "Backend", "description": "Serviços, APIs, dados e domínio",
17
- "skills": ["crow-backend", "crow-api-test", "crow-postgres", "crow-domain", "crow-architecture"]},
18
- {"name": "qualidade", "title": "Qualidade", "description": "Testes, defeitos, desempenho e observabilidade",
19
- "skills": ["crow-qa", "crow-debug", "crow-performance", "crow-observe"]},
20
- {"name": "seguranca", "title": "Segurança", "description": "Revisão, varredura, prova, modelagem de ameaças, credenciais e apps com LLM",
21
- "skills": ["crow-security-review", "crow-security-scan", "crow-security-test", "crow-threat-model", "crow-secrets", "crow-agent-security"]},
22
- {"name": "infra", "title": "Infra e entrega", "description": "Infraestrutura, release e coordenação de plataforma",
23
- "skills": ["crow-infra", "crow-release", "crow-platform"]},
24
- {"name": "mobile", "title": "Mobile", "description": "Apps nativos e mobile",
25
- "skills": ["crow-native-mobile"]},
26
- {"name": "produto", "title": "Produto", "description": "Descoberta, especificação, crescimento, liderança e coordenação de plataforma",
27
- "skills": ["crow-discovery", "crow-spec", "crow-growth", "crow-product-leadership", "crow-platform"]},
28
- {"name": "midia-docs", "title": "Mídia e documentos", "description": "Mídia, documentos, planilhas, apresentações e experiência de conversa",
29
- "skills": ["crow-media", "crow-documents", "crow-be-human"]},
30
- {"name": "reverse", "title": "Engenharia reversa", "description": "Análise de código, binário ou protocolo",
31
- "skills": ["crow-reverse"]},
32
- {"name": "autoria", "title": "Autoria de skills", "description": "Criar ou revisar skills",
33
- "skills": ["crow-skill-author"]}
16
+ {
17
+ "name": "essencial",
18
+ "title": "Essencial",
19
+ "description": "Coordenação e o que serve a quase todo projeto: arquitetura, especificação, depuração, testes e revisão de segurança",
20
+ "skills": [
21
+ "crow-behaviour",
22
+ "crow-architecture",
23
+ "crow-spec",
24
+ "crow-debug",
25
+ "crow-qa",
26
+ "crow-security-review"
27
+ ]
28
+ },
29
+ {
30
+ "name": "web",
31
+ "title": "Web",
32
+ "description": "Interfaces web: direção visual, implementação, acessibilidade, navegador e SEO",
33
+ "skills": [
34
+ "crow-frontend",
35
+ "crow-interface",
36
+ "crow-design",
37
+ "crow-accessibility",
38
+ "crow-browser",
39
+ "crow-seo"
40
+ ]
41
+ },
42
+ {
43
+ "name": "backend",
44
+ "title": "Backend",
45
+ "description": "Serviços, APIs, dados e domínio",
46
+ "skills": [
47
+ "crow-backend",
48
+ "crow-api-test",
49
+ "crow-postgres",
50
+ "crow-domain",
51
+ "crow-architecture"
52
+ ]
53
+ },
54
+ {
55
+ "name": "qualidade",
56
+ "title": "Qualidade",
57
+ "description": "Testes, defeitos, desempenho e observabilidade",
58
+ "skills": [
59
+ "crow-qa",
60
+ "crow-debug",
61
+ "crow-performance",
62
+ "crow-observe"
63
+ ]
64
+ },
65
+ {
66
+ "name": "seguranca",
67
+ "title": "Segurança",
68
+ "description": "Revisão, varredura, prova, modelagem de ameaças, credenciais e apps com LLM",
69
+ "skills": [
70
+ "crow-security-review",
71
+ "crow-security-scan",
72
+ "crow-security-test",
73
+ "crow-threat-model",
74
+ "crow-secrets",
75
+ "crow-agent-security"
76
+ ]
77
+ },
78
+ {
79
+ "name": "infra",
80
+ "title": "Infra e entrega",
81
+ "description": "Infraestrutura, release e coordenação de plataforma",
82
+ "skills": [
83
+ "crow-infra",
84
+ "crow-release",
85
+ "crow-platform"
86
+ ]
87
+ },
88
+ {
89
+ "name": "mobile",
90
+ "title": "Mobile",
91
+ "description": "Apps nativos e mobile",
92
+ "skills": [
93
+ "crow-native-mobile"
94
+ ]
95
+ },
96
+ {
97
+ "name": "produto",
98
+ "title": "Produto",
99
+ "description": "Descoberta, especificação, crescimento, liderança e coordenação de plataforma",
100
+ "skills": [
101
+ "crow-discovery",
102
+ "crow-spec",
103
+ "crow-growth",
104
+ "crow-product-leadership",
105
+ "crow-platform"
106
+ ]
107
+ },
108
+ {
109
+ "name": "midia-docs",
110
+ "title": "Mídia e documentos",
111
+ "description": "Mídia, documentos, planilhas, apresentações e experiência de conversa",
112
+ "skills": [
113
+ "crow-media",
114
+ "crow-documents",
115
+ "crow-be-human"
116
+ ]
117
+ },
118
+ {
119
+ "name": "reverse",
120
+ "title": "Engenharia reversa",
121
+ "description": "Análise de código, binário ou protocolo",
122
+ "skills": [
123
+ "crow-reverse"
124
+ ]
125
+ },
126
+ {
127
+ "name": "autoria",
128
+ "title": "Autoria de skills",
129
+ "description": "Criar ou revisar skills",
130
+ "skills": [
131
+ "crow-skill-author"
132
+ ]
133
+ }
34
134
  ],
35
135
  "skills": [
36
136
  {
@@ -44,7 +144,7 @@
44
144
  {
45
145
  "name": "crow-platform",
46
146
  "title": "Entrega de plataforma",
47
- "description": "Coordene uma plataforma ou iniciativa que atravessa produto, design, engenharia e operação. Não use para um bug ou ajuste isolado.",
147
+ "description": "Coordene uma plataforma ou iniciativa que atravessa produto, design, engenharia e operação, mapeando as etapas que faltam e o contrato entre elas. Não use para um bug ou ajuste isolado; a coordenação da execução e a delegação são de crow-behaviour.",
48
148
  "role": "coordinator",
49
149
  "owns": "delivery-map",
50
150
  "next": [
@@ -57,7 +157,7 @@
57
157
  {
58
158
  "name": "crow-discovery",
59
159
  "title": "Problema e decisão de produto",
60
- "description": "Investigue um problema de produto, segmento e hipótese antes de comprometer uma solução. Não reabra discovery para um bug conhecido.",
160
+ "description": "Investigue um problema de produto, segmento e hipótese antes de comprometer uma solução. Não reabra discovery para um bug conhecido. Especificação, fatia de release e critério de aceite são de crow-spec; preço, canal e retenção são de crow-growth.",
61
161
  "role": "specialist",
62
162
  "owns": "problem-brief",
63
163
  "next": [
@@ -68,7 +168,7 @@
68
168
  {
69
169
  "name": "crow-spec",
70
170
  "title": "Escopo e critérios de aceite",
71
- "description": "Transforme uma decisão de produto em uma especificação enxuta, fatias de release e critérios testáveis. Não conduz pesquisa de mercado.",
171
+ "description": "Transforme uma decisão de produto em uma especificação enxuta, fatias de release e critérios testáveis. Não conduz pesquisa de mercado: investigar o problema é de crow-discovery, e escrever ou rodar a suíte a partir do critério é de crow-qa.",
72
172
  "role": "specialist",
73
173
  "owns": "feature-spec",
74
174
  "next": [
@@ -105,7 +205,7 @@
105
205
  {
106
206
  "name": "crow-design",
107
207
  "title": "Direção visual e contrato de UI",
108
- "description": "Defina o contrato de experiência visual, fluxos, tokens e estados para implementação. Entrega brief/decisões, sem editar a interface nem repetir discovery resolvido.",
208
+ "description": "Use quando a decisão visual ainda não existe e precisa ser fixada antes de alguém implementar: direção, tokens, hierarquia, estados, vocabulário de interface e regras de adaptação de uma superfície. Entra também quando telas divergiram e falta uma fonte única. Não é para executar, refinar ou criticar interface já construída, que é de crow-interface, nem para integrar dados e comportamento da aplicação, que é de crow-frontend: aqui se decide, lá se constrói.",
109
209
  "role": "specialist",
110
210
  "owns": "design-contract",
111
211
  "next": [
@@ -176,7 +276,7 @@
176
276
  {
177
277
  "name": "crow-security-scan",
178
278
  "title": "Scans e evidência estática",
179
- "description": "Execute ou analise SAST, dependências, imagens e IaC conforme o alvo; normalize e compare resultados. Não confirma explorabilidade nem faz autofix.",
279
+ "description": "Use para rodar ou analisar scanner (SAST, dependências/SCA, imagem, IaC) e normalizar, deduplicar e comparar o resultado com a baseline. Achado é alegação: entrega candidatos com evidência, não confirma explorabilidade nem faz autofix — isso é de crow-security-review (julga a mudança) e crow-security-test (prova dinâmica). Diferente delas, aqui a saída é evidência de ferramenta sobre o alvo estático.",
180
280
  "role": "specialist",
181
281
  "owns": "scan-evidence",
182
282
  "next": [
@@ -186,7 +286,7 @@
186
286
  {
187
287
  "name": "crow-agent-security",
188
288
  "title": "Limites de agentes e LLMs",
189
- "description": "Revise apps com LLM, ferramentas, fontes externas e memória para injeção, autoridade excessiva e efeitos inseguros. Não tenta contornar controles de terceiros.",
289
+ "description": "Revise apps com LLM, ferramentas, MCP, fontes externas e memória quando um agente age com autoridade real: injeção indireta, autoridade excessiva, vínculo de ação, exfiltração por canal lateral e efeitos inseguros. Diferente de crow-threat-model, que modela o desenho, e de crow-security-review, que revisa a mudança de código: aqui o alvo são as fronteiras do agente em execução. Não contorna controles de terceiros nem roda exploits.",
190
290
  "role": "reviewer",
191
291
  "owns": "agent-controls",
192
292
  "next": [
@@ -232,7 +332,7 @@
232
332
  {
233
333
  "name": "crow-accessibility",
234
334
  "title": "Uso acessível da jornada",
235
- "description": "Valide e corrija semântica, teclado, foco, leitura assistiva e autenticação de uma interface real. Não certifica conformidade completa por scanner.",
335
+ "description": "Use quando a pergunta é se uma jornada real pode ser usada sem mouse, sem visão e sem memorização: semântica, teclado, foco, leitura assistiva, contraste medido, zoom e reflow, movimento e autenticação acessível. Entra depois de implementada, ou para julgar achado de varredura. Não certifica conformidade de nível por scanner, não substitui a verificação de comportamento de crow-qa e não é refinamento estético, que é de crow-interface.",
236
336
  "role": "specialist",
237
337
  "owns": "a11y-evidence",
238
338
  "next": [
@@ -303,7 +403,7 @@
303
403
  {
304
404
  "name": "crow-seo",
305
405
  "title": "Saída pública e descoberta",
306
- "description": "Revise conteúdo e saída técnica de páginas públicas para busca, coerência e indexação. Não otimiza área logada nem promete ranking.",
406
+ "description": "Use quando páginas públicas precisam ser encontráveis e a saída que o indexador recebe precisa ser conferida: status, metadado, canonical, robots, sitemap, dados estruturados, links internos, hreflang e renderização. Entra também quando uma rota saiu do índice, aparece sem descrição ou duplica outra. Não promete posição nem tráfego, não otimiza área logada e não é aquisição paga ou experimento de crescimento, que é de crow-growth.",
307
407
  "role": "specialist",
308
408
  "owns": "seo-change",
309
409
  "next": [
@@ -314,7 +414,7 @@
314
414
  {
315
415
  "name": "crow-media",
316
416
  "title": "Artefatos de imagem, áudio e vídeo",
317
- "description": "Crie ou edite mídia a partir de brief e assets autorizados, preservando fontes e validando o arquivo final. Não exige um fornecedor específico.",
417
+ "description": "Use quando o entregável é um arquivo de imagem, áudio ou vídeo a criar ou editar a partir de brief e assets autorizados, e quando o resultado precisa ser medido antes de ser entregue. Entra também para diagnosticar perda de qualidade, dessincronismo, legenda ausente ou arquivo que não abre no destino. Não exige fornecedor, modelo ou CLI específico, não produz o documento que a mídia ilustra, que é de crow-documents, e não decide a direção visual, que é de crow-design.",
318
418
  "role": "specialist",
319
419
  "owns": "media-artifact",
320
420
  "next": [
@@ -325,7 +425,7 @@
325
425
  {
326
426
  "name": "crow-documents",
327
427
  "title": "Documentos e entregáveis",
328
- "description": "Crie ou edite documentos, planilhas, apresentações ou HTML a partir de conteúdo real, validando conteúdo e formato final. Não usa exportadores irrelevantes.",
428
+ "description": "Use quando o entregável é um arquivo de documento, planilha, apresentação ou HTML a criar ou editar a partir de conteúdo real, e quando o formato final precisa ser conferido antes da entrega. Quando o pedido não nomeia formato de arquivo e a sessão tem ferramenta nativa de documento ou slide, é dela. A mídia que o documento contém é de crow-media, e a direção visual é de crow-design.",
329
429
  "role": "specialist",
330
430
  "owns": "document-artifact",
331
431
  "next": [
@@ -336,7 +436,7 @@
336
436
  {
337
437
  "name": "crow-skill-author",
338
438
  "title": "Manutenção de skills",
339
- "description": "Crie ou revise uma skill com escopo único, descoberta precisa e validação de uso isolado e em composição. Não instala automaticamente pacotes de terceiros.",
439
+ "description": "Use quando o pedido é criar, revisar, corrigir ou preparar para publicação uma skill deste repositório, inclusive quando o sintoma é uma skill que não dispara, dispara fora de hora ou colide com uma irmã. Entra também para julgar a description e o contrato de uma skill existente. Não instala automaticamente pacotes de terceiros e não substitui a especialista do domínio que a skill descreve.",
340
440
  "role": "specialist",
341
441
  "owns": "skill-package",
342
442
  "next": [
@@ -416,15 +516,25 @@
416
516
  "description": "Projete, implemente ou avalie a conversa de um agente de IA por chat ou voz, inclusive somente por voz, para que seja natural e contínua. Jornada não visual é de crow-accessibility, conduta do próprio agente é de crow-behaviour. Não substitui identidade do produto, segurança ou implementação de áudio.",
417
517
  "role": "specialist",
418
518
  "owns": "conversation-experience",
419
- "next": ["crow-media", "crow-accessibility", "crow-agent-security", "crow-qa"]
519
+ "next": [
520
+ "crow-media",
521
+ "crow-accessibility",
522
+ "crow-agent-security",
523
+ "crow-qa"
524
+ ]
420
525
  },
421
526
  {
422
527
  "name": "crow-interface",
423
528
  "title": "Experiência de interface",
424
- "description": "Crie, revise ou refine a experiência visual de interfaces web e nativas, com modos distintos de planejamento, crítica, auditoria, implementação e variantes live. Não implementa backend nem integração de dados por efeito colateral.",
529
+ "description": "Use quando há interface web ou nativa para construir, revisar, criticar, auditar, refinar ou explorar em variantes interativas, com brief pronto ou sem brief. Não é para fixar do zero o contrato visual que ainda não existe, que é de crow-design, nem para implementar backend ou integração de dados da aplicação, que é de crow-frontend: crow-design decide, esta constrói e julga o construído.",
425
530
  "role": "specialist",
426
531
  "owns": "interface-result",
427
- "next": ["crow-design", "crow-frontend", "crow-accessibility", "crow-performance"]
532
+ "next": [
533
+ "crow-design",
534
+ "crow-frontend",
535
+ "crow-accessibility",
536
+ "crow-performance"
537
+ ]
428
538
  }
429
539
  ]
430
540
  }
@@ -1,3 +1,3 @@
1
1
  """Portable, local-first installer for the crow-skills catalogue."""
2
2
 
3
- __version__ = "0.24.0"
3
+ __version__ = "0.25.0"
@@ -88,7 +88,12 @@ def detect(source_root=None):
88
88
  prefix = Path(npm.group(1))
89
89
  tool = prefix / "bin" / "npm"
90
90
  return {"kind": "npm", "root": text, "version": __version__, "launcher": str(prefix / "bin" / "crow-skills"),
91
- "upgrade": [str(tool) if tool.exists() else (shutil.which("npm") or "npm"), "install", "-g", PACKAGE + "@latest"]}
91
+ # --prefer-online: medido em 2026-11-09, o self-upgrade falhou com ETARGET ("No matching
92
+ # version found") logo após a publicação porque o metadado da versão nova estava em
93
+ # cache local, enquanto o registry já servia o dist-tag novo. Sem isso, o upgrade
94
+ # depende de quando o cache do npm expira.
95
+ "upgrade": [str(tool) if tool.exists() else (shutil.which("npm") or "npm"),
96
+ "install", "-g", "--prefer-online", PACKAGE + "@latest"]}
92
97
  if (base / ".git").exists():
93
98
  return {"kind": "git", "root": text, "version": __version__, "launcher": str(base / "bin" / "crow-skills"),
94
99
  "upgrade": None}
@@ -993,6 +993,8 @@ SKILL_STATE_WORDS = {
993
993
  "modificada": "editada no disco",
994
994
  "desativada": "instalada, mas desabilitada",
995
995
  "ausente": "registrada e não encontrada no disco",
996
+ "via_uniflow": "projetada do seu store do Uniflow (gerenciada em --agents uniflow)",
997
+ "link_externo": "link no store do Uniflow para fora dele",
996
998
  "nao_gerenciada": "não gerenciada por este CLI",
997
999
  "indeterminada": "não foi possível ler o destino",
998
1000
  }
@@ -1013,7 +1015,16 @@ def skill_state(row, source):
1013
1015
  return "desativada"
1014
1016
  if status == "missing":
1015
1017
  return "ausente"
1016
- if status in ("unmanaged", "absent", "external_link", "uniflow_link"):
1018
+ if status == "uniflow_link":
1019
+ # Projeção SAUDÁVEL do store do Uniflow: é a topologia normal de quem instala em uniflow e
1020
+ # deixa os CLIs lerem de lá, e o resto do CLI já a conta como instalada (group_coverage).
1021
+ # Chamar isso de "não gerenciada" assustava sem motivo — 33 skills em 4 agentes, aqui.
1022
+ # Projeção quebrada, desabilitada ou para pacote não gerenciado não chega como uniflow_link:
1023
+ # unmanaged_projections() a reescreve antes (modified/disabled/unmanaged).
1024
+ return "via_uniflow"
1025
+ if status == "external_link":
1026
+ return "link_externo"
1027
+ if status in ("unmanaged", "absent"):
1017
1028
  return "nao_gerenciada"
1018
1029
  return "indeterminada" # "unsafe" e qualquer estado novo: nunca contado como em dia
1019
1030
 
@@ -1069,7 +1080,9 @@ def skills_command(args, home, store):
1069
1080
  """Somente leitura: versão e estado de cada skill instalada, contra a fonte atual."""
1070
1081
  source = Source(getattr(args, "source", DEFAULT_SOURCE), getattr(args, "ref", "HEAD"))
1071
1082
  targets = scope(args, home, read=True)
1072
- rows = store.status(targets)
1083
+ # A mesma correção que status/doctor aplicam: projeção do Uniflow quebrada, desabilitada ou para
1084
+ # pacote não gerenciado não pode passar por projeção saudável.
1085
+ rows = unmanaged_projections(store, home, store.status(targets))
1073
1086
  items = {}
1074
1087
  for row in rows:
1075
1088
  if not row.get("name"):
package/docs/cli.md CHANGED
@@ -69,6 +69,8 @@ Nome: `@andespindola/crow-skills`; `publishConfig.access` é `public` desde a 0.
69
69
 
70
70
  A publicação é feita pelo workflow `.github/workflows/publish.yml` ao empurrar uma tag `vX.Y.Z` igual à `version` do `package.json` (ou por `workflow_dispatch` em `main`). Ele autentica por Trusted Publishing (OIDC), sem token npm em secret, e roda check, testes e o teste de instalação isolada antes de `npm publish`. O trusted publisher do pacote no npmjs.com deve apontar para `andersonflima/crow-skills` e `publish.yml`.
71
71
 
72
+ Depois do `npm publish`, o pipeline confirma a versão no próprio registry: consulta `https://registry.npmjs.org/@andespindola%2Fcrow-skills` sem npm e sem credencial e espera a versão do `package.json` aparecer em `.versions` e virar o `dist-tags.latest`, tentando a cada 20 s por até 15 minutos e registrando cada tentativa no log. Isso existe porque o log do `npm publish` sozinho não distingue uma publicação real de um `--dry-run` (que imprime um `+ pacote@versao` praticamente igual) nem de um passo pulado por gate, que deixa o job verde sem ter publicado nada. Propagação de alguns minutos até dezenas de minutos é normal e **não** é falha: passado o teto, o job termina com sucesso e emite um aviso com o comando `curl -s https://registry.npmjs.org/@andespindola%2Fcrow-skills | jq -r '.["dist-tags"].latest'` para conferir depois.
73
+
72
74
  Depois de a versão estar publicada e a conta estar autenticada com acesso:
73
75
 
74
76
  ```sh
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andespindola/crow-skills",
3
- "version": "0.24.0",
3
+ "version": "0.25.0",
4
4
  "description": "Versioned, complementary agent skills with a protected multi-agent installer",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {
@@ -12,6 +12,7 @@
12
12
  },
13
13
  "files": [
14
14
  "LICENSE",
15
+ "THIRD-PARTY-NOTICES.md",
15
16
  "bin/npm-crow-skills.cjs",
16
17
  "crow_skills/*.py",
17
18
  "catalog.json",