Skip to content
Back to skills

Context Cli

ASecurity

Ensina como emitir contexto-filho e integrar CLIs externos com o runtime do Ravi. Use quando precisar: - Criar ou revisar um generator/launcher para CLI externa - Ensinar um agent a emitir `ravi context issue` com least privilege - Validar o contrato de `RAVI_CONTEXT_KEY`, identidade e approvals - Auditar lineage de contextos emitidos para CLIs

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 20, 2026
ai-agentsgobash

Works with

  • cli

Security analysis

A100/100

Scanned October 20, 2026

npx -y skills add filipexyz/ravi --skill context-cli --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Context Cli?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Context Cli
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/filipexyz-context-cli/badge)](https://www.skillsdirectory.com/skills/filipexyz-context-cli)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: context-cli
description: |
  Ensina como emitir contexto-filho e integrar CLIs externos com o runtime do Ravi. Use quando precisar:
  - Criar ou revisar um generator/launcher para CLI externa
  - Ensinar um agent a emitir `ravi context issue` com least privilege
  - Validar o contrato de `RAVI_CONTEXT_KEY`, identidade e approvals
  - Auditar lineage de contextos emitidos para CLIs
---

# Context CLI - Teaching Layer

Use esta skill quando o trabalho envolver um CLI externo rodando "dentro" de um contexto do Ravi.

Ela existe para evitar dois erros recorrentes:

1. tentar reconstruir identidade com `RAVI_AGENT_ID` / `RAVI_SESSION_KEY`,
2. tratar approval como algo fora do contexto emitido.

## Regra Principal

Para CLIs externos, `RAVI_CONTEXT_KEY` e o comando `ravi context ...` sao a interface canonica.

Nao ensine o agent a:

- injetar `RAVI_AGENT_ID`
- injetar `RAVI_SESSION_KEY`
- injetar `RAVI_SESSION_NAME`
- inferir identidade pelo nome da sessao

Ensine o agent a:

- emitir contexto-filho com `ravi context issue`
- passar `RAVI_CONTEXT_KEY` para o processo filho
- resolver identidade com `ravi context whoami`
- checar capacidade com `ravi context check`
- pedir approval com `ravi context authorize`
- auditar/inspecionar com `ravi context list/info/revoke`
- tratar `ravi context codex-tool-hook` como alias depreciado de `ravi context codex-bash-hook` (mesmo acesso e payload). Hooks gerados devem continuar emitindo `codex-bash-hook`.

## Fluxo Canonico

### 1. Emitir contexto-filho

```bash
ravi context issue meu-cli --allow execute:group:daemon --ttl 1h
```

Boas praticas:

- `cliName` estavel e sem ambiguidade
- capabilities explicitas por default
- `--inherit` so quando houver razao real
- TTL curto por default

### 2. Passar o contexto para o processo externo

O launcher/generator deve repassar:

```bash
RAVI_CONTEXT_KEY=<emitido pelo issue>
```

Pode herdar o resto do ambiente normal do processo, mas nao deve sintetizar identidade do Ravi via outras variaveis.

### 3. Resolver identidade dentro do CLI externo

```bash
ravi context whoami
```

Campos importantes:

- `contextId`
- `kind`
- `agentId`
- `sessionKey`
- `sessionName`
- `source`
- `metadata`
- `capabilitiesCount`

### 4. Checar ou pedir capability

Dry-check:

```bash
ravi context check execute group daemon
```

Approval:

```bash
ravi context authorize execute group daemon
```

Interpretacao correta:

- `allowed=true, inherited=true` -> ja tinha capability
- `allowed=true, approved=true` -> approval novo anexado ao contexto atual
- `allowed=false` -> negar/timeout; respeitar `reason`

### 5. Executar a acao real

```bash
ravi daemon status
```

## Lineage e Auditoria

Ao ensinar agentes a usar contexto-filho, enfatize:

- `ravi context list` para visao geral sem expor `contextKey`
- `ravi context info <contextId>` para lineage detalhado
- `ravi context revoke <contextId>` para encerrar imediatamente um contexto emitido

Lineage esperado no metadata:

- `parentContextId`
- `parentContextKind`
- `issuedFor`
- `issuedAt`
- `issuanceMode`
- `approvalSource` (quando herdado)

## Contrato Do CLI

O dominio `context` segue o contrato agent-first (Manual v2). Regras compactas:

**Exit codes:** `0` sucesso · `1` erro/not-found · `2` uso invalido · `3` freio de escrita (dry-run — nao e erro, e o sistema funcionando).

**Confirmação baseada em risco:**

- `ravi context revoke <id>` reduz autoridade e executa imediatamente. Cascateia para filhos salvo `--no-cascade`.
- `ravi context credentials remove <key>` — dry-run por default; so remove com `--execute`.

**Equivalentes locais (NAO renomear):**

- `ravi context prune` — usa `--apply --confirm prune-contexts` (freio mais forte que o padrao).
- `ravi context cleanup-agent-runtime` — dry-run por default; executa com `--revoke`.

**Envelopes de erro (`--json`):**

- `CONTEXT_NOT_FOUND` (info/lineage/revoke) — exit 1, com `suggestions` de contextIds reais.
- `CREDENTIAL_NOT_FOUND` (credentials remove/set-default) — exit 1, sugestoes por contextId/label.
- `WRITE_REQUIRES_EXECUTE` — exit 3, com `error.plan` do que seria escrito.

**Invariante de seguranca:** chave `rctx_*` completa NUNCA aparece em envelope, plano de dry-run ou suggestions — so contextIds, labels e prefixo mascarado (8 chars). Se aparecer, e regressao de seguranca.

**Modo compacto:** `ravi context list --fields contextId,kind --json` e `ravi context credentials list --fields contextId,label --json`.

### Checklist do contrato

1. Vai revogar? Confira o ID e execute uma vez; revoga imediatamente porque reduz exposicao.
2. Not-found? Leia `error.suggestions` antes de tentar variantes do id.
3. Prune/cleanup? Use os flags locais (`--apply --confirm` / `--revoke`), nao invente `--execute` neles.
4. Nunca cole uma chave `rctx_*` em log, issue ou prompt — envelopes ja vem sem ela por design.
5. Listagem para agente? Prefira `--json --fields ...` para reduzir tokens.

Spec normativa: `.ravi/specs/cli/context/` (SPEC, WHY, RUNBOOK, CHECKS).

## Checklist de Ensino

Quando o usuario pedir um "CLI externo integrado ao Ravi", ensine nesta ordem:

1. Qual capability minima o CLI realmente precisa?
2. Qual `cliName` vai entrar no audit trail?
3. O launcher ja usa `ravi context issue`?
4. O processo filho recebe so `RAVI_CONTEXT_KEY` como credencial Ravi?
5. O CLI chama `whoami/check/authorize` antes da acao?
6. O fluxo de suporte sabe usar `list/info/revoke`?

## Artefatos de Referencia

- Contrato formal: `design/context-generator-contract.md`
- Referencia minima: `src/reference/context-cli.ts`
- Comandos CLI: `src/cli/commands/context.ts`
- Registry/runtime: `src/runtime/context-registry.ts`

## Sinais de Implementacao Ruim

Pare e corrija se encontrar:

- testes/setups exportando `RAVI_AGENT_ID` para "simular" contexto
- launchers que pulam `ravi context issue`
- CLIs que executam a acao real sem `check`/`authorize`
- logs ou comandos que imprimem `contextKey`
- audit trail sem `cliName` estavel

## Exemplo Minimo

```bash
# sessao Ravi pai
ravi context issue ext-cli --allow execute:group:daemon

# processo filho
ravi context whoami
ravi context authorize execute group daemon
ravi daemon status
```

## Resultado Esperado

Ao aplicar esta skill, o agent deve conseguir:

- emitir contexto-filho com least privilege
- explicar por que `RAVI_CONTEXT_KEY` basta
- integrar um CLI externo sem spoofing de identidade
- auditar lineage e lifecycle do contexto emitido

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.