@cortex-context/cli 0.0.5

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.
@@ -0,0 +1,178 @@
1
+ ---
2
+ name: cortex-ingest
3
+ description: >
4
+ Skill de operações de manutenção do Cortex: health check, contagem de nós,
5
+ re-ingestão de dados e diagnóstico do grafo. Use quando o usuário quiser
6
+ verificar se o Cortex está saudável, forçar re-ingestão, ver quantos nós
7
+ existem, ou diagnosticar ingestão desatualizada.
8
+ Triggers: "re-ingerir cortex", "atualizar grafo cortex", "cortex health",
9
+ "quantos nós no cortex", "ingestão desatualizada", "forçar ingest",
10
+ "cortex está atualizado", "cortex out of date", "re-ingest cortex",
11
+ "refresh cortex", "rebuild cortex graph".
12
+ ---
13
+
14
+ # Skill: Cortex Ingest — Operações e Manutenção
15
+
16
+ ## Propósito
17
+
18
+ Verificar a saúde do Cortex, auditar contagens de nós, e forçar re-ingestão
19
+ quando o grafo estiver desatualizado (após adicionar/remover specs, services,
20
+ ou workflows do codebase).
21
+
22
+ > **Configuração**: `CORTEX_URL` e `CORTEX_API_TOKEN` são definidos em
23
+ > `.env` no diretório `mcp-servers/cortex/` do seu workspace.
24
+
25
+ ---
26
+
27
+ ## Quando Usar
28
+
29
+ | Situação | Ação |
30
+ |----------|------|
31
+ | Verificar se Cortex está online | Health check |
32
+ | Auditar contagem de nós por dimensão | `list_dimensions()` |
33
+ | Grafo desatualizado após commits | Trigger re-ingest via curl |
34
+ | Specs novas não aparecem no grafo | Re-ingest `spec` + verificar |
35
+ | Novo Temporal Workflow não está no grafo | Re-ingest `temporal_workflow` |
36
+
37
+ ---
38
+
39
+ ## 1. Health Check
40
+
41
+ Verifica se o Cortex está acessível e com Neo4j conectado.
42
+
43
+ ```bash
44
+ curl -s "${CORTEX_URL}/health" \
45
+ -H "Authorization: Bearer $CORTEX_API_TOKEN"
46
+ ```
47
+
48
+ Resposta esperada:
49
+ ```json
50
+ {
51
+ "status": "healthy",
52
+ "neo4j": "connected",
53
+ "version": "1.1.0"
54
+ }
55
+ ```
56
+
57
+ Se `status != "healthy"` ou `neo4j != "connected"`, verificar os containers:
58
+
59
+ ```bash
60
+ # Ver status dos containers
61
+ docker compose -f /opt/cortex/docker-compose.yml ps
62
+
63
+ # Ver logs do Cortex
64
+ docker compose -f /opt/cortex/docker-compose.yml logs --tail=50 cortex
65
+
66
+ # Reiniciar se parado
67
+ docker compose -f /opt/cortex/docker-compose.yml up -d
68
+ ```
69
+
70
+ > **Nota**: Se o Cortex está rodando em um host remoto, conecte via SSH antes de
71
+ > executar os comandos acima. Consulte a documentação de deploy do seu ambiente.
72
+
73
+ ---
74
+
75
+ ## 2. Auditar Contagens via MCP
76
+
77
+ Use `list_dimensions()` para ver o estado atual do grafo:
78
+
79
+ ```
80
+ Tool: list_dimensions()
81
+ ```
82
+
83
+ Resposta exemplo:
84
+ ```
85
+ | dim_key | node_label | nós |
86
+ |-------------------|------------------|-----|
87
+ | spec | Spec | 45 |
88
+ | service | Service | 5 |
89
+ | temporal_workflow | TemporalWorkflow | 8 |
90
+ ```
91
+
92
+ Se as contagens estiverem muito abaixo do esperado → grafo desatualizado → re-ingest.
93
+
94
+ ---
95
+
96
+ ## 3. Re-ingestão Manual
97
+
98
+ ### Via GitHub Actions (preferido)
99
+
100
+ O workflow `.github/workflows/cortex-ingest.yml` é acionado automaticamente em:
101
+ - Push para `develop`, `staging`, `main` nos repos com specs/services/workflows
102
+
103
+ Para acionar manualmente:
104
+ ```bash
105
+ gh workflow run cortex-ingest.yml \
106
+ --repo <seu-workspace-repo> \
107
+ --field dim_key=spec
108
+
109
+ gh workflow run cortex-ingest.yml \
110
+ --repo <seu-workspace-repo> \
111
+ --field dim_key=service
112
+ ```
113
+
114
+ ### Via curl direto (quando GH Actions não é viável)
115
+
116
+ O endpoint `POST /api/v1/ingest/{dim_key}` aciona a re-ingestão buscando os dados
117
+ automaticamente das fontes configuradas (GitHub API, filesystem):
118
+
119
+ ```bash
120
+ # Re-ingerir specs
121
+ curl -X POST "${CORTEX_URL}/api/v1/ingest/spec" \
122
+ -H "Authorization: Bearer $CORTEX_API_TOKEN"
123
+
124
+ # Re-ingerir services
125
+ curl -X POST "${CORTEX_URL}/api/v1/ingest/service" \
126
+ -H "Authorization: Bearer $CORTEX_API_TOKEN"
127
+
128
+ # Re-ingerir temporal workflows (se configurado)
129
+ curl -X POST "${CORTEX_URL}/api/v1/ingest/temporal_workflow" \
130
+ -H "Authorization: Bearer $CORTEX_API_TOKEN"
131
+ ```
132
+
133
+ > **Nota**: O body do POST é opcional — o servidor busca os dados automaticamente
134
+ > conforme configurado em `cortex.config.yaml`.
135
+
136
+ ---
137
+
138
+ ## 4. Diagnóstico de Ingestão
139
+
140
+ ### Sintoma: spec nova não aparece na busca
141
+
142
+ 1. Verifique se o push foi para `develop`, `staging` ou `main` (outros branches não acionam)
143
+ 2. Verifique o status do workflow: `gh run list --workflow=cortex-ingest.yml`
144
+ 3. Se o workflow falhou, veja o log: `gh run view <run-id> --log`
145
+ 4. Se o workflow não foi acionado: acione manualmente (comando acima)
146
+
147
+ ### Sintoma: `list_dimensions` retorna dimensão com 0 nós
148
+
149
+ 1. Verifique se a dimensão está configurada em `cortex.config.yaml`
150
+ 2. Force re-ingestão via curl (seção 3)
151
+ 3. Verifique os logs do Cortex para erros de parsing/ingestão
152
+
153
+ ### Sintoma: Cortex retorna 503 ou 502
154
+
155
+ 1. Verifique se os containers estão rodando: `docker compose ps`
156
+ 2. Verifique Neo4j: `docker compose logs neo4j --tail=50`
157
+ 3. Verifique memória disponível: `docker stats`
158
+
159
+ ---
160
+
161
+ ## 5. Verificar API Token
162
+
163
+ Se as chamadas retornam 401:
164
+ 1. Verifique `CORTEX_API_TOKEN` no `.env` do workspace: `cat mcp-servers/cortex/.env`
165
+ 2. Verifique se o token está correto no servidor: consulte sua configuração de deploy
166
+
167
+ ---
168
+
169
+ ## Referência Rápida
170
+
171
+ | Ação | Comando |
172
+ |------|---------|
173
+ | Health check | `curl -s "${CORTEX_URL}/health"` |
174
+ | Contar nós | MCP `list_dimensions()` |
175
+ | Re-ingest specs | `gh workflow run cortex-ingest.yml --field dim_key=spec` |
176
+ | Re-ingest services | `gh workflow run cortex-ingest.yml --field dim_key=service` |
177
+ | Status Docker | `docker compose -f /opt/cortex/docker-compose.yml ps` |
178
+ | Logs Docker | `docker compose -f /opt/cortex/docker-compose.yml logs --tail=100 cortex` |
@@ -0,0 +1,168 @@
1
+ ---
2
+ name: cortex-research
3
+ description: >
4
+ Skill de pesquisa no grafo de produto (Cortex). Use quando o usuário perguntar
5
+ sobre features existentes, specs, o que está implementado, o que afeta um serviço,
6
+ contexto de produto, histórico de decisões, ou antes de implementar qualquer
7
+ funcionalidade nova. Triggers: "quais features", "o que é a spec-NNN",
8
+ "pesquisar produto", "contexto do produto", "o que afeta o serviço", "specs existentes",
9
+ "quais repos são afetados", "features relacionadas a X", "já existe algo para Y".
10
+ ---
11
+
12
+ # Skill: Cortex Research — Pesquisa de Produto
13
+
14
+ ## Propósito
15
+
16
+ Consultar o **Cortex Product Knowledge Graph** para entender o produto antes de implementar
17
+ features, planejar mudanças, ou responder perguntas sobre o que existe no sistema.
18
+
19
+ **Regra obrigatória (Copilot Instructions, Regra 7)**: antes de planejar ou implementar
20
+ qualquer feature, use esta skill para verificar specs existentes relacionadas.
21
+
22
+ ---
23
+
24
+ ## Quando Usar
25
+
26
+ | Situação | Tool a chamar |
27
+ |----------|---------------|
28
+ | "O que existe para pagamentos?" | `query_product_context(keywords=["pagamento"])` |
29
+ | "Quais features estão em andamento?" | `list_features(status="in-progress")` |
30
+ | "Me fale sobre a spec-070" | `get_spec_context(spec_id="spec-070")` |
31
+ | "Quais features afetam o BFF?" | `get_service_context(service_id="service-bff")` |
32
+ | "Preciso implementar X, já existe?" | `query_product_context(keywords=["X"])` |
33
+ | Visão geral do backlog | `list_features()` |
34
+
35
+ ---
36
+
37
+ ## Tools MCP Disponíveis
38
+
39
+ ### 1. `query_product_context` — Busca semântica por keywords
40
+
41
+ Use para busca aberta quando não sabe o ID exato da spec.
42
+
43
+ ```
44
+ Parâmetros:
45
+ keywords: list[str] # ex: ["rateio", "pagamento", "pix"]
46
+ limit: int # padrão 8, máximo 15
47
+
48
+ Retorna: subgrafo ~500 tokens com specs relevantes + relações + repos afetados
49
+ ```
50
+
51
+ **Quando usar**: primeiro passo em qualquer pesquisa de produto. Ideal para entender
52
+ o contexto antes de planejar uma feature.
53
+
54
+ **Exemplos de chamadas:**
55
+ - `query_product_context(keywords=["auth", "google", "oauth"])` — specs de autenticação
56
+ - `query_product_context(keywords=["notificacao", "push", "whatsapp"])` — specs de notificações
57
+ - `query_product_context(keywords=["temporal", "workflow", "job"])` — specs de orquestração
58
+ - `query_product_context(keywords=["rateio", "divisao", "financeiro"])` — specs financeiras
59
+
60
+ ---
61
+
62
+ ### 2. `list_features` — Lista specs por status
63
+
64
+ Use para visão geral do produto ou backlog.
65
+
66
+ ```
67
+ Parâmetros:
68
+ status?: "completed" | "in-progress" | "planned" | "todo"
69
+
70
+ Retorna: lista agrupada por status com ID, título, repos
71
+ ```
72
+
73
+ **Quando usar**: visão geral antes de propor uma nova feature, verificar se algo está
74
+ em andamento antes de começar.
75
+
76
+ ---
77
+
78
+ ### 3. `get_spec_context` — Detalhe de uma spec específica
79
+
80
+ Use quando souber o ID da spec (spec-NNN).
81
+
82
+ ```
83
+ Parâmetros:
84
+ spec_id: str # ex: "spec-070", "070" (normalizado automaticamente)
85
+
86
+ Retorna: título, status, repos afetados, labels, summary, specs relacionadas (1-hop)
87
+ ```
88
+
89
+ **Quando usar**: entender os detalhes e dependências de uma feature específica.
90
+
91
+ ---
92
+
93
+ ### 4. `get_service_context` — Specs que afetam um serviço
94
+
95
+ Use para entender o impacto de features em um serviço específico.
96
+
97
+ ```
98
+ Parâmetros:
99
+ service_id: str # ex: "service-bff", "bff" (normalizado automaticamente)
100
+
101
+ IDs disponíveis:
102
+ service-backend, service-bff, service-webview, service-admin,
103
+ service-android, service-ios, service-lambda, service-landing, service-cortex
104
+
105
+ Retorna: stack, capabilities, porta/URL + todas as specs AFFECTS agrupadas por status
106
+ ```
107
+
108
+ **Quando usar**: antes de implementar algo em um serviço, verificar quais features
109
+ já tocam aquele serviço e podem criar conflito ou dependência.
110
+
111
+ ---
112
+
113
+ ## Fluxo Recomendado: Pesquisa Antes de Implementar
114
+
115
+ ```
116
+ 1. query_product_context(keywords=[tema, subtema])
117
+ → Entende o panorama das specs relacionadas
118
+
119
+ 2. get_service_context(service_id="service-X") # se mudar um serviço específico
120
+ → Vê todas as specs que já afetam o serviço
121
+
122
+ 3. get_spec_context(spec_id="spec-NNN") # para specs relevantes encontradas
123
+ → Lê os detalhes e dependências da spec
124
+
125
+ 4. list_features(status="in-progress") # se quiser ver o que está ativo
126
+ → Evita criar conflito com trabalho em andamento
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Encadeamento de Chamadas
132
+
133
+ **Cenário: "Quero implementar autenticação com Apple Sign-In"**
134
+
135
+ ```
136
+ 1. query_product_context(keywords=["auth", "apple", "ios"])
137
+ → Encontra spec-058 (Apple Auth iOS), spec-068 (Social Auth Unification)
138
+
139
+ 2. get_spec_context(spec_id="spec-058")
140
+ → Vê que afeta service-ios, service-backend, service-webview
141
+
142
+ 3. get_service_context(service_id="service-backend")
143
+ → Confirma que spec-058 já existe e está "completed"
144
+ → Vê outras specs relacionadas ao backend
145
+
146
+ → Conclusão: Apple Auth já existe, implementar apenas se for extensão
147
+ ```
148
+
149
+ **Cenário: "Qual o status do rateio por itens?"**
150
+
151
+ ```
152
+ 1. query_product_context(keywords=["rateio", "itens", "divisao"])
153
+ → Encontra spec-035, spec-040, spec-050
154
+
155
+ 2. get_spec_context(spec_id="spec-035")
156
+ → Status: completed, repos: [backend, bff, webview]
157
+ ```
158
+
159
+ ---
160
+
161
+ ## Output Format
162
+
163
+ Quando apresentar resultados ao usuário:
164
+ - Destaque o **ID + título** de cada spec encontrada
165
+ - Mostre o **status** com ícones (✅ completed, 🚧 in-progress, 📋 planned, ⬜ todo)
166
+ - Liste os **repos afetados** para o usuário saber onde implementar
167
+ - Se encontrar specs relacionadas, **explique as dependências**
168
+ - Termine com uma **recomendação** (implementar / estender / já existe)
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@cortex-context/cli",
3
+ "version": "0.0.5",
4
+ "description": "CLI to initialize and manage Cortex Context (Knowledge Graph) in any VS Code workspace",
5
+ "bin": {
6
+ "cortex-context": "./dist/index.js"
7
+ },
8
+ "files": [
9
+ "dist",
10
+ "README.md"
11
+ ],
12
+ "scripts": {
13
+ "build": "tsup",
14
+ "dev": "tsup --watch",
15
+ "start": "node dist/index.js",
16
+ "lint": "eslint src --ext .ts",
17
+ "type-check": "tsc --noEmit",
18
+ "test": "vitest run --passWithNoTests",
19
+ "test:watch": "vitest",
20
+ "prepublishOnly": "npm run build"
21
+ },
22
+ "dependencies": {
23
+ "@modelcontextprotocol/sdk": "^1.12.0",
24
+ "commander": "^12.1.0",
25
+ "prompts": "^2.4.2",
26
+ "chalk": "^5.3.0",
27
+ "ora": "^8.1.1",
28
+ "fs-extra": "^11.2.0",
29
+ "semver": "^7.6.3"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "^22.0.0",
33
+ "@types/prompts": "^2.4.9",
34
+ "@types/fs-extra": "^11.0.4",
35
+ "@types/semver": "^7.5.8",
36
+ "typescript": "^5.5.0",
37
+ "tsup": "^8.3.0",
38
+ "vitest": "^2.1.0"
39
+ },
40
+ "engines": {
41
+ "node": ">=18.0.0"
42
+ },
43
+ "keywords": [
44
+ "cortex",
45
+ "context",
46
+ "knowledge-graph",
47
+ "mcp",
48
+ "copilot",
49
+ "cli"
50
+ ],
51
+ "license": "MIT",
52
+ "repository": {
53
+ "type": "git",
54
+ "url": "https://github.com/rodrigoroldan/cli-cortex-context.git"
55
+ },
56
+ "publishConfig": {
57
+ "access": "public",
58
+ "registry": "https://registry.npmjs.org"
59
+ }
60
+ }