165 lines
4.9 KiB
Markdown
165 lines
4.9 KiB
Markdown
---
|
|
name: clip-skill
|
|
description: Gerir company skills no Paperclip — listar, instalar, atribuir a agentes, auditar cobertura. Usar quando "clip skill", "skills clip", "instalar skill", "atribuir skill", "skills paperclip".
|
|
context: fork
|
|
layer: wiki
|
|
---
|
|
|
|
# /clip-skill — Gerir Company Skills Paperclip
|
|
|
|
Gerir skills instaladas na empresa Descomplicar no Paperclip. Instalar, atribuir, remover e auditar.
|
|
|
|
## Constantes
|
|
|
|
```
|
|
BD: PGPASSWORD="paperclip" psql -h localhost -p 54329 -U paperclip -d paperclip
|
|
COMPANY_ID: ebe10308-efd7-453f-86ab-13e6fe84004f
|
|
API: http://localhost:3100/api
|
|
SKILLS_CC: ~/.claude/plugins/marketplaces/descomplicar-plugins/
|
|
```
|
|
|
|
## Contexto técnico
|
|
|
|
Skills no Paperclip funcionam como **injecção de contexto em runtime**:
|
|
- O conteúdo do SKILL.md é injectado como contexto adicional ao agente a cada heartbeat
|
|
- Não há instalação permanente — a skill é lida do ficheiro a cada execução
|
|
- Atribuição é por agente via `adapter_config.paperclipSkillSync.desiredSkills` (array de slugs)
|
|
- Skills instaladas na empresa ficam em `company_skills` — só as atribuídas ao agente são injectadas
|
|
|
|
**Distribuição actual de adapters (07-04-2026):**
|
|
- 5 C-Level (CEO/CDO/CFO/CGO/CTO): `claude_local` com `claude-sonnet-4-6` (raciocínio estratégico)
|
|
- 59 especialistas/directores: `gemini_local` com `gemini-2.5-flash` (execução, baixo custo)
|
|
- 1 analyst (Reality Checker): `process` com `claude-sonnet-4-6` (on-demand, sem heartbeat, sem skills)
|
|
|
|
`opencode_local` foi **removido** (modelos indisponíveis). Política: C-Level = claude_local sonnet-4-6, restantes = gemini_local. Templates em `/clip-agent`.
|
|
|
|
## Modo lista (sem argumentos)
|
|
|
|
### Skills instaladas na empresa
|
|
|
|
```sql
|
|
SELECT name, slug, key, source_type, trust_level, compatibility,
|
|
created_at::date as instalada
|
|
FROM company_skills
|
|
WHERE company_id = 'ebe10308-efd7-453f-86ab-13e6fe84004f'
|
|
ORDER BY name;
|
|
```
|
|
|
|
### Agentes com skills atribuidas
|
|
|
|
```sql
|
|
SELECT name, role, status,
|
|
adapter_config->'paperclipSkillSync'->'desiredSkills' as skills
|
|
FROM agents
|
|
WHERE company_id = 'ebe10308-efd7-453f-86ab-13e6fe84004f'
|
|
AND adapter_config::text LIKE '%paperclipSkillSync%'
|
|
ORDER BY name;
|
|
```
|
|
|
|
### Resumo
|
|
|
|
Apresentar:
|
|
```
|
|
## Skills Clip — [data]
|
|
|
|
**Empresa:** N skills instaladas (N locais, N built-in)
|
|
**Agentes:** N com skills atribuidas / 62 total
|
|
|
|
### Skills instaladas
|
|
| Nome | Key | Fonte | Trust | Compativel |
|
|
...
|
|
|
|
### Agentes com skills
|
|
| Agente | Role | Skills |
|
|
...
|
|
|
|
### Agentes sem skills (top 10 por relevancia)
|
|
[listar agentes com routines activas mas sem skills]
|
|
```
|
|
|
|
## Modo instalar (com path ou key)
|
|
|
|
### Instalar skill de path local
|
|
|
|
Argumento: path absoluto para pasta com SKILL.md.
|
|
|
|
Verificar primeiro que existe SKILL.md:
|
|
```bash
|
|
ls {{PATH}}/SKILL.md 2>/dev/null && head -5 {{PATH}}/SKILL.md
|
|
```
|
|
|
|
Instalar via API:
|
|
```bash
|
|
curl -s -X POST "http://localhost:3100/api/companies/ebe10308-efd7-453f-86ab-13e6fe84004f/skills/import" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: Bearer $PAPERCLIP_API_KEY" \
|
|
-d '{"source": "{{PATH}}"}'
|
|
```
|
|
|
|
Se API falha (auth), inserir directamente na BD:
|
|
```sql
|
|
-- Ler frontmatter do SKILL.md para obter name e description
|
|
-- Depois inserir:
|
|
INSERT INTO company_skills (id, company_id, key, slug, name, description, markdown, source_type, source_locator, trust_level, compatibility, file_inventory, created_at, updated_at)
|
|
VALUES (
|
|
gen_random_uuid(),
|
|
'ebe10308-efd7-453f-86ab-13e6fe84004f',
|
|
'descomplicar/{{PLUGIN}}/{{SKILL_NAME}}',
|
|
'{{SKILL_NAME}}',
|
|
'{{NAME_FROM_FRONTMATTER}}',
|
|
'{{DESCRIPTION_FROM_FRONTMATTER}}',
|
|
'{{FULL_SKILL_MD_CONTENT}}',
|
|
'local_path',
|
|
'{{PATH}}',
|
|
'markdown_only',
|
|
'compatible',
|
|
'[]'::jsonb,
|
|
NOW(), NOW()
|
|
)
|
|
RETURNING id, name, slug;
|
|
```
|
|
|
|
Confirmar com o utilizador antes de instalar. Mostrar name e description do SKILL.md.
|
|
|
|
### Instalar skill do marketplace CC
|
|
|
|
Argumento: nome da skill no formato `plugin/skill` (ex: `crm-ops/crm`).
|
|
|
|
Resolver path:
|
|
```bash
|
|
SKILL_PATH="$HOME/.claude/plugins/marketplaces/descomplicar-plugins/{{PLUGIN}}/skills/{{SKILL}}"
|
|
ls "$SKILL_PATH/SKILL.md" 2>/dev/null && head -10 "$SKILL_PATH/SKILL.md"
|
|
```
|
|
|
|
Depois seguir o fluxo de instalacao por path local.
|
|
|
|
### Instalar em massa (com filtro de plugin)
|
|
|
|
Argumento: nome do plugin (ex: `crm-ops`).
|
|
|
|
```bash
|
|
find "$HOME/.claude/plugins/marketplaces/descomplicar-plugins/{{PLUGIN}}/skills/" -name "SKILL.md" -exec dirname {} \;
|
|
```
|
|
|
|
Listar todas as skills encontradas com name e description. Pedir confirmacao antes de instalar cada uma.
|
|
|
|
## Modo atribuir (skill a agente)
|
|
|
|
### Atribuir via API
|
|
|
|
```bash
|
|
curl -s -X POST "http://localhost:3100/api/agents/{{AGENT_ID}}/skills/sync" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: Bearer $PAPERCLIP_API_KEY" \
|
|
-d '{"desiredSkills": [{{SKILLS_ARRAY}}]}'
|
|
```
|
|
|
|
### Atribuir via BD (fallback)
|
|
|
|
```sql
|
|
UPDATE agents SET adapter_config = jsonb_set(
|
|
COALESCE(adapter_config, '{}'::jsonb),
|
|
'{paperclipSkillSync}',
|
|
jsonb_build_object('desiredSkills', '{{SKILLS_JSON_ARRAY}}'::jsonb)
|
|
)
|
|
WHE |