

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Gerenciando ativos
<a name="about-aws-devops-agent-managing-assets"></a>

AWS DevOps O agente armazena a configuração e o material de referência de um Espaço do Agente como **ativos**, os recursos gerenciados pelo cliente que moldam o que o agente sabe e como ele se comporta. Habilidades, AGENTS.md arquivos e anexos são todos ativos, e você pode criá-los, lê-los, atualizá-los e excluí-los programaticamente por meio da API de ativos.

Este tópico explica o modelo de ativos, as permissões do IAM de que você precisa, os metadados que cada tipo de ativo espera e como gerenciar ativos de ponta a ponta com a AWS CLI e o AWS SDK for Python (Boto3). Para obter uma visão geral conceitual das habilidades em si, consulte[DevOps Habilidades do agente](about-aws-devops-agent-devops-agent-skills.md). Para obter conhecimento gerado por agentes que você não cria sozinho, consulte. [Habilidades aprendidas](about-aws-devops-agent-learned-skills.md)

## Quando usar a API Asset
<a name="when-to-use-the-asset-api"></a>

O Operator Web App é a maneira mais rápida de criar uma única habilidade ou carregar um AGENTS.md arquivo de forma interativa. A API de ativos expõe as mesmas operações programaticamente para que scripts e automação possam gerenciar ativos sem passar pelo aplicativo Web. Os motivos comuns para chamar diretamente a API Asset incluem:
+ Criação ou atualização de um ativo a partir de um script, terminal ou notebook em vez do aplicativo Web.
+ Bulk-loading um conjunto inicial de habilidades ou AGENTS.md arquivos em um novo Espaço do Agente.
+ Ler o conteúdo de um ativo para fazer backup ou comparar versões.

Cada operação na API de ativos é exposta por meio da AWS CLI `aws devops-agent <operation>` e por meio dos AWS SDKs como cliente. `devops-agent`

## Operações da API de ativos
<a name="asset-api-operations"></a>

A API Asset expõe as seguintes operações. Cada linha lista a ação do IAM que você deve conceder para chamar a operação e o recurso ao qual a ação se aplica. Cada ação reside no `aidevops:` namespace e, com exceção de`ListAssetTypes`, se aplica a um recurso do Agent Space do formulário. `arn:aws:aidevops:<region>:<account-id>:agentspace/<agentSpaceId>` Para obter informações mais `aidevops:` amplas sobre permissões, consulte[DevOps Permissões do Agent IAM](aws-devops-agent-security-devops-agent-iam-permissions.md).


| Operation | Description | Ação do IAM | Recurso | 
| --- | --- | --- | --- | 
| ListAssetTypes | Liste os tipos de ativos suportados pelo AWS DevOps Agent. | aidevops:ListAssetTypes | \* | 
| CreateAsset | Crie um novo ativo em um Espaço do Agente (habilidade AGENTS.md, anexo, agente personalizado, perfil de teste ou feedback). | aidevops:CreateAsset | Espaço do agente | 
| GetAsset | Recupere os metadados e as informações da versão de um ativo. | aidevops:GetAsset | Espaço do agente | 
| UpdateAsset | Atualize os metadados ou o conteúdo de um ativo existente. | aidevops:UpdateAsset | Espaço do agente | 
| DeleteAsset | Exclua um ativo e todos os seus arquivos de um Espaço do Agente. | aidevops:DeleteAsset | Espaço do agente | 
| ListAssets | Listar ativos em um Espaço do Agente, com filtragem opcional por tipo de ativo. | aidevops:ListAssets | Espaço do agente | 
| ListAssetVersions | Listar as versões históricas de um ativo. | aidevops:ListAssetVersions | Espaço do agente | 
| GetAssetContent | Baixe o conteúdo completo de um ativo como um pacote zip. | aidevops:GetAssetContent | Espaço do agente | 
| CreateAssetFile | Adicione um novo arquivo a um ativo existente. | aidevops:CreateAssetFile | Espaço do agente | 
| GetAssetFile | Recupere um único arquivo de um ativo pelo caminho. | aidevops:GetAssetFile | Espaço do agente | 
| UpdateAssetFile | Substitua o conteúdo ou os metadados de um arquivo existente em um ativo. | aidevops:UpdateAssetFile | Espaço do agente | 
| DeleteAssetFile | Remova um único arquivo de um ativo. | aidevops:DeleteAssetFile | Espaço do agente | 
| ListAssetFiles | Liste os arquivos em um ativo. | aidevops:ListAssetFiles | Espaço do agente | 

### Políticas de exemplo do IAM
<a name="example-iam-policies"></a>

A política a seguir concede acesso total de gerenciamento aos ativos em um único Espaço do Agente:

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aidevops:CreateAsset",
        "aidevops:GetAsset",
        "aidevops:UpdateAsset",
        "aidevops:DeleteAsset",
        "aidevops:ListAssets",
        "aidevops:ListAssetVersions",
        "aidevops:GetAssetContent",
        "aidevops:CreateAssetFile",
        "aidevops:GetAssetFile",
        "aidevops:UpdateAssetFile",
        "aidevops:DeleteAssetFile",
        "aidevops:ListAssetFiles"
      ],
      "Resource": "arn:aws:aidevops:us-east-1:111122223333:agentspace/8f6187a7-0388-4926-8217-3a0fe32f757c"
    },
    {
      "Effect": "Allow",
      "Action": "aidevops:ListAssetTypes",
      "Resource": "*"
    }
  ]
}
```

A política a seguir concede acesso somente para leitura aos ativos em um único Espaço do Agente:

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aidevops:GetAsset",
        "aidevops:ListAssets",
        "aidevops:ListAssetVersions",
        "aidevops:GetAssetContent",
        "aidevops:GetAssetFile",
        "aidevops:ListAssetFiles"
      ],
      "Resource": "arn:aws:aidevops:us-east-1:111122223333:agentspace/8f6187a7-0388-4926-8217-3a0fe32f757c"
    },
    {
      "Effect": "Allow",
      "Action": "aidevops:ListAssetTypes",
      "Resource": "*"
    }
  ]
}
```

## Tipos de ativo
<a name="asset-types"></a>

Cada ativo tem uma `assetType` string que identifica que tipo de recurso ele é. Seis tipos de ativos podem ser criados por meio da API de ativos: `skill` `agents_md``attachment`,`custom_agent`,`test_profile`,, `feedback` e. As seções a seguir descrevem cada tipo. Você também pode ligar `ListAssetTypes` para recuperar os identificadores de tipo em tempo de execução.

Cada ativo carrega um objeto `metadata` JSON de formato livre que descreve o recurso. As chaves internas `metadata` usam snake\_case (por exemplo,,`agent_types`). `skill_type` As chaves externas`metadata`, no nível superior do corpo da solicitação, usam CamelCase (por exemplo`agentSpaceId`,,,`assetType`). `clientToken` As `metadata` chaves obrigatórias e opcionais dependem do tipo de ativo, conforme descrito nas seções a seguir.

Quando você chama `UpdateAsset` ou`UpdateAssetFile`, o serviço aplica a semântica PATCH a`metadata`: as chaves que você inclui são substituídas e as chaves que você omite mantêm seus valores armazenados. Você não pode alterar o ativo `assetType` depois que ele foi criado.

### habilidade
<a name="skill"></a>

Um `skill` ativo empacota instruções e material de referência que o agente carrega quando relevante. Uma habilidade simples é um único `SKILL.md` arquivo; uma habilidade complexa é um pacote zip que contém um `SKILL.md` arquivo e `assets/` diretórios opcionais`references/`.

**`metadata`Propriedades necessárias:**
+ **name** (string) — Um identificador exclusivo para a habilidade. Somente letras minúsculas, números e hífens, de 1 a 64 caracteres. Não deve começar nem terminar com um hífen. Exigido apenas para habilidades simples. Para uploads de zip, o serviço lê a `name` partir do `SKILL.md` frontmatter e qualquer valor fornecido aqui é ignorado.
+ **description** (string) — Uma explicação de 1 a 1024 caracteres de quando o agente deve usar a habilidade. Exigido apenas para habilidades simples. Para uploads de zip, o serviço lê a `description` partir do `SKILL.md` frontmatter e qualquer valor fornecido aqui é ignorado.
+ **agent\_types** (array of strings) — Um ou mais tipos de agentes aos quais essa habilidade se aplica. Use `["GENERIC"]` para disponibilizar a habilidade para todos os tipos de agentes. Outros valores incluem `CHAT``INCIDENT_TRIAGE`,`INCIDENT_RCA`,`INCIDENT_MITIGATION`,`PREVENTION`,`CHANGE_REVIEW`,`CHANGE_RELEASE`, `QUALITY_ASSURANCE_TESTING``RELEASE_SHEPHERD`,`RELEASE_READINESS_REVIEW`,, `RELEASE_TESTING` e. O `GENERIC` valor não pode ser combinado com outros valores.

**`metadata`Propriedades opcionais:**
+ **skill\_type** (string) — O padrão é. `USER` A API Asset permite apenas habilidades criadas pelo cliente, então o único valor aceito é. `USER` O serviço rejeita solicitações definidas como `skill_type``LEARNED`, reservadas para habilidades geradas pelo próprio agente.
+ **status** (string) — Estado de ativação da habilidade. Os valores aceitos são `ACTIVE` e `INACTIVE` (somente maiúsculas). O padrão é `ACTIVE`. As habilidades inativas permanecem no Espaço do Agente, mas não são carregadas pelo agente durante as investigações ou o bate-papo. Use `UpdateAsset` com `metadata.status` para desativar ou reativar uma habilidade sem excluí-la. As habilidades são o único tipo de ativo que oferece suporte à ativação; o `status` campo é ignorado em todos os outros tipos de ativo. Consulte [Ativação e desativação de habilidades](#activating-and-deactivating-skills) para ver um exemplo prático.
+ **enable\_tools** (array of strings) — Uma lista de identificadores de ferramentas que o agente pode chamar ao carregar essa habilidade.

**Exemplo`metadata`:**

```
{
  "name": "rds-performance-investigation",
  "description": "Investigation procedures for RDS performance issues including connection exhaustion, slow queries, replication lag, and storage capacity. Use this skill when investigating database latency, connection errors, or read/write performance degradation.",
  "agent_types": ["GENERIC"]
}
```

**Limites: os** uploads em Zip não devem exceder 6 MB. Um Espaço do Agente pode conter até 200 habilidades criadas pelo usuário.

### agentes\_md
<a name="agents-md"></a>

Um `agents_md` ativo é um arquivo markdown contendo instruções permanentes do agente para um tipo específico de agente. O agente carrega a correspondência AGENTS.md no início de cada tarefa. Para obter mais informações sobre as instruções do agente, consulte[Instruções do agente](about-aws-devops-agent-agent-instructions.md).

**`metadata`Propriedades necessárias:**
+ **agent\_type** (string) — O tipo de agente ao qual o AGENTS.md arquivo se aplica. Os valores válidos são `GENERIC`, `CHAT`, `INCIDENT_TRIAGE`, `INCIDENT_RCA`, `INCIDENT_MITIGATION`, `PREVENTION`, `CHANGE_REVIEW`, `CHANGE_RELEASE`, `QUALITY_ASSURANCE_TESTING`, `RELEASE_SHEPHERD`, `RELEASE_READINESS_REVIEW` e `RELEASE_TESTING`.

**Exemplo`metadata`:**

```
{
  "agent_type": "INCIDENT_TRIAGE"
}
```

**Limites:** Cada Espaço do Agente pode conter no máximo um AGENTS.md por`agent_type`. O conteúdo do arquivo deve ser markdown (`text/markdown`) e não deve exceder 25 KB.

### anexo
<a name="attachment"></a>

Um `attachment` ativo armazena um arquivo binário ou de texto que o agente pode referenciar durante as investigações, por exemplo, um diagrama de arquitetura, um PDF do runbook ou um arquivo de registro de amostra.

**`metadata`Propriedades necessárias:**
+ **filename** (string) — O nome do arquivo original, incluindo o nome base e qualquer extensão (por exemplo,`topology.png`).
+ **extension** (string) — A extensão do arquivo sem o ponto inicial (por exemplo,`png`,`pdf`,`csv`).
+ **tamanho** (número) — O tamanho do arquivo em bytes.

**Exemplo`metadata`:**

```
{
  "filename": "topology.png",
  "extension": "png",
  "size": 184320
}
```

**Limites:** O tamanho total de todos os anexos em um Espaço do Agente não pode exceder 10 GB.

### agente personalizado
<a name="custom-agent"></a>

Um `custom_agent` ativo define uma configuração de agente especializado com um conjunto selecionado de ferramentas e habilidades. Use um agente personalizado para definir o escopo do agente para um fluxo de trabalho específico ou conjunto de recursos.

**`metadata`Propriedades necessárias:**
+ **name** (string) — Um identificador exclusivo para o agente personalizado. Somente letras minúsculas, números e hífens, de 1 a 64 caracteres. Não deve começar nem terminar com um hífen.

**`metadata`Propriedades opcionais:**
+ **tools** (matriz de strings) — Os identificadores de ferramentas que o agente personalizado pode usar. O padrão é uma lista vazia quando omitida.
+ **skills** (matriz de strings) — Os identificadores de habilidades que o agente personalizado carrega. O padrão é uma lista vazia quando omitida.

**Exemplo`metadata`:**

```
{
  "name": "rds-firefighter",
  "tools": ["cloudwatch:GetMetricData", "rds:DescribeDBInstances"],
  "skills": ["rds-performance-investigation"]
}
```

### perfil\_teste
<a name="test-profile"></a>

Um `test_profile` ativo armazena uma configuração reutilizável para uma execução de teste de versão, incluindo o tipo de teste a ser executado e o endpoint de destino.

**`metadata`Propriedades necessárias:**
+ **test\_agent\_type** (string) — O tipo de teste que esse perfil executa. Os valores válidos são `releaseUiTesting` e `releaseApiTesting`.
+ **target\_url** (string) — A URL que a execução do teste tem como alvo.

**`metadata`Propriedades opcionais:**
+ **name** (string) — Um identificador legível por humanos para o perfil de teste. Somente letras minúsculas, números e hífens, de 1 a 128 caracteres. Não deve começar nem terminar com um hífen.
+ **description** (string) — Uma descrição de 1 a 1024 caracteres do que o perfil de teste abrange.
+ **test\_personas** (array of strings) — As personas a serem exercitadas durante a execução do teste. Os valores válidos são `guest` e `authenticated`.
+ **api\_spec** (string) — Uma especificação de API para a execução do teste. Relevante para`releaseApiTesting`.
+ **credentials\_secret\_arn (string) — O ARN** de um segredo do Secrets AWS Manager contendo as credenciais para a execução do teste.

**Exemplo`metadata`:**

```
{
  "name": "checkout-api-tests",
  "description": "Release API tests for the checkout service.",
  "test_agent_type": "releaseApiTesting",
  "target_url": "https://api.example.com",
  "test_personas": ["guest", "authenticated"],
  "api_spec": "openapi: 3.0.0",
  "credentials_secret_arn": "arn:aws:secretsmanager:us-east-1:111122223333:secret:checkout-creds"
}
```

### feedback
<a name="feedback"></a>

Um `feedback` ativo registra o feedback fornecido pelo cliente sobre a execução de um único agente. Use recursos de feedback para capturar veredictos e notas que os pipelines de avaliação posterior podem agregar.

**`metadata`Propriedades necessárias:**
+ **agent\_types** (array of strings) — Os tipos de agentes que produziram a execução. Deve conter pelo menos um valor (por exemplo,`INCIDENT_TRIAGE`).

**`metadata`Propriedades opcionais:**
+ **execution\_id** (string) — A execução à qual esse feedback está associado. Ative essa opção`CreateAsset`; ela não pode ser alterada por`UpdateAsset`.

**Exemplo`metadata`:**

```
{
  "execution_id": "b2c3d4e5-6789-01ab-cdef-example22222",
  "agent_types": ["INCIDENT_TRIAGE"]
}
```

## Conteúdo do ativo: arquivo ou zip
<a name="asset-content-file-or-zip"></a>

Cada `CreateAsset` solicitação inclui um `content` objeto que contém os bytes que o ativo armazena. O formato de `content` depende se você está carregando um único arquivo ou um pacote zip:
+ **Arquivo de texto único** — `content.file.body.text` carrega até 1,5 MB de UTF-8 texto. Use isso para habilidades e AGENTS.md arquivos simples.

```json { "content": { "file": { "path": "SKILL.md", "body": { "text": "# Skill\n\nInstructions go here." } } } } ```
+ **Arquivo binário único** — `content.file.body.bytes` carrega até 6 MB de conteúdo binário codificado em base64. Use isso para anexos, como imagens ou PDFs. Como o blob está aninhado dentro `content` da união, codifique o arquivo em base64 com antecedência e envie a solicitação com `--cli-input-json` (consulte [Criar uma habilidade a partir de um arquivo binário para ver um exemplo prático](#create-a-skill-from-a-binary-file)).

```json { "content": { "file": { "path": "topology.png", "body": { "bytes": "<base64-encoded bytes>" } } } } ```
+ **Pacote Zip** — `content.zip.zipFile` carrega um arquivo zip codificado em base64 de até 6 MB. Use isso para habilidades que incluam `SKILL.md` mais arquivos adicionais em um `assets/` diretório `references/` ou.

```json { "content": { "zip": { "zipFile": "<base64-encoded zip bytes>" } } } ```

Para adicionar, substituir ou excluir arquivos individuais dentro de um ativo existente sem recarregar o pacote inteiro`CreateAssetFile`, use e. `UpdateAssetFile` `DeleteAssetFile`

## Gerenciando uma habilidade de ponta a ponta
<a name="managing-a-skill-end-to-end"></a>

O passo a passo a seguir cria uma habilidade de três maneiras diferentes (a partir de um único arquivo de texto, de um arquivo binário e de um pacote zip) e, em seguida, exercita as operações de leitura, atualização e exclusão. `8f6187a7-0388-4926-8217-3a0fe32f757c`Substitua pelo seu ID do Agent Space.

### Crie uma habilidade a partir de um único arquivo de texto
<a name="create-a-skill-from-a-single-text-file"></a>

Esse é o caminho mais simples: um único `SKILL.md` arquivo carregado em linha. Como o upload contém exatamente um arquivo de texto, você deve fornecer `name` e `description` inserir`metadata`.

**AWS CLI:**

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type skill \
  --metadata '{
    "name": "rds-performance-investigation",
    "description": "Investigation procedures for RDS performance issues. Use when investigating database latency, connection errors, or query timeouts.",
    "agent_types": ["GENERIC"]
  }' \
  --content '{
    "file": {
      "path": "SKILL.md",
      "body": {
        "text": "# RDS Performance Investigation\n\nUse this skill when customers report database latency, connection errors, query timeouts, or read/write performance degradation."
      }
    }
  }'
```

**Python (Boto3):**

```
import boto3

client = boto3.client("devops-agent")

response = client.create_asset(
    agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c",
    assetType="skill",
    metadata={
        "name": "rds-performance-investigation",
        "description": (
            "Investigation procedures for RDS performance issues. "
            "Use when investigating database latency, connection errors, "
            "or query timeouts."
        ),
        "agent_types": ["GENERIC"],
    },
    content={
        "file": {
            "path": "SKILL.md",
            "body": {
                "text": (
                    "# RDS Performance Investigation\n\n"
                    "Use this skill when customers report database latency, "
                    "connection errors, query timeouts, or read/write "
                    "performance degradation."
                )
            },
        }
    },
)

asset_id = response["asset"]["assetId"]
```

### Crie uma habilidade a partir de um arquivo binário
<a name="create-a-skill-from-a-binary-file"></a>

Use um upload binário quando o conteúdo da habilidade não for UTF-8 texto. O exemplo abaixo carrega um PDF pré-renderizado como corpo de habilidades. Como o corpo da solicitação contém um blob codificado em base64 aninhado dentro `content` da união, forneça a solicitação de um arquivo JSON `--cli-input-json` e codifique o blob com antecedência em base64.

O `-w 0` sinalizador abaixo diz ao GNU `base64` para emitir o blob codificado em uma única linha; sem ele, a quebra de linha padrão de 76 caracteres insere novas linhas que produzem JSON inválido quando o blob é interpolado no heredoc. No macOS, use `base64 -i ops-runbook.pdf` (o BSD `base64` não empacota por padrão).

**Crie o corpo da solicitação:**

```
base64 -w 0 ops-runbook.pdf > ops-runbook.b64
cat > create-skill.json <<EOF
{
  "agentSpaceId": "8f6187a7-0388-4926-8217-3a0fe32f757c",
  "assetType": "skill",
  "metadata": {
    "name": "ops-runbook",
    "description": "Operations runbook covering on-call escalation paths.",
    "agent_types": ["GENERIC"]
  },
  "content": {
    "file": {
      "path": "SKILL.pdf",
      "body": { "bytes": "$(cat ops-runbook.b64)" }
    }
  }
}
EOF
```

**AWS CLI:**

```
aws devops-agent create-asset --cli-input-json file://create-skill.json
```

**Python (Boto3):**

```
with open("ops-runbook.pdf", "rb") as f:
    body_bytes = f.read()

response = client.create_asset(
    agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c",
    assetType="skill",
    metadata={
        "name": "ops-runbook",
        "description": "Operations runbook covering on-call escalation paths.",
        "agent_types": ["GENERIC"],
    },
    content={
        "file": {
            "path": "SKILL.pdf",
            "body": {"bytes": body_bytes},
        }
    },
)
```

### Crie uma habilidade a partir de um pacote zip
<a name="create-a-skill-from-a-zip-bundle"></a>

Use um upload zip quando a habilidade incluir mais de um arquivo, por exemplo, `SKILL.md` mais material de referência e ativos. Para uploads zip, o serviço lê `name` e sai `description` do `SKILL.md` frontmatter, portanto, não os inclua. `metadata`

O layout do zip se parece com:

```
rds-performance-investigation.zip
├── SKILL.md
├── references/
│   └── rds-metrics-reference.md
└── assets/
    └── rds-investigation-flowchart.png
```

`SKILL.md`deve incluir frontmatter para que o serviço possa extrair o nome e a descrição:

```
---
name: rds-performance-investigation
description: Investigation procedures for RDS performance issues including
  connection exhaustion, slow queries, replication lag, and storage capacity.
  Use this skill when investigating database latency, connection errors, or
  read/write performance degradation.
---

# RDS Performance Investigation
...
```

**Crie o corpo da solicitação:**

```
base64 -w 0 rds-performance-investigation.zip > skill.zip.b64
cat > create-skill.json <<EOF
{
  "agentSpaceId": "8f6187a7-0388-4926-8217-3a0fe32f757c",
  "assetType": "skill",
  "metadata": { "agent_types": ["GENERIC"] },
  "content": {
    "zip": { "zipFile": "$(cat skill.zip.b64)" }
  }
}
EOF
```

**AWS CLI:**

```
aws devops-agent create-asset --cli-input-json file://create-skill.json
```

**Python (Boto3):**

```
with open("rds-performance-investigation.zip", "rb") as f:
    zip_bytes = f.read()

response = client.create_asset(
    agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c",
    assetType="skill",
    metadata={"agent_types": ["GENERIC"]},
    content={"zip": {"zipFile": zip_bytes}},
)
```

### Importar uma habilidade de um repositório
<a name="import-a-skill-from-a-repository"></a>

Você pode criar uma habilidade importando-a diretamente do diretório do GitHub repositório. AWS DevOps O agente busca o conteúdo da habilidade, extrai o nome e a descrição do SKILL.md frontmatter e cria a habilidade no seu Espaço do Agente. Isso permite gerenciar habilidades de controle de versão e importá-las ou sincronizá-las programaticamente.

**Pré-requisitos:**
+ Seu Espaço do Agente deve ter uma GitHub conta associada. Consulte [Conectando GitHub](connecting-to-cicd-pipelines-connecting-github.md).
+ O diretório do repositório deve conter um SKILL.md arquivo válido com frontmatter.

**AWS CLI:**

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type skill \
  --metadata '{ "agent_types": ["GENERIC"] }' \
  --content '{"sourceUrl": {"url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation"}}'
```

**Python (Boto3):**

```
response = client.create_asset(
    agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c",
    assetType="skill",
    metadata={"agent_types": ["GENERIC"]},
    content={
        "sourceUrl": {
            "url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation"
        }
    },
)

asset_id = response["asset"]["assetId"]
```

O serviço busca o conteúdo do diretório, lê o SKILL.md frontmatter de `name` e e importa todos `description` os arquivos. Não inclua `name` ou `description` `metadata` entre — eles são extraídos automaticamente do frontmatter.

**Sincronizando uma habilidade importada:**

Para obter as alterações mais recentes do repositório, chame `UpdateAsset` com`content.sourceUrl`:

```
aws devops-agent update-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId> \
  --content '{"sourceUrl": {"url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation"}}'
```

```
response = client.update_asset(
    agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c",
    assetId="<assetId>",
    content={
        "sourceUrl": {
            "url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation"
        }
    },
)
```

A sincronização substitui totalmente o conteúdo da habilidade pelo estado atual do diretório do repositório. Os campos editáveis (status, tipos de agentes) são preservados.

**Visualizando a fonte de importação:**

`GetAsset`retorna as informações de origem `metadata.source` para habilidades importadas do repositório:

```
{
  "metadata": {
    "name": "rds-performance-investigation",
    "description": "Investigation procedures for RDS performance issues...",
    "source": {
      "url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation",
      "lastSyncedAt": 1718467200
    },
    "agent_types": ["GENERIC"],
    "skill_type": "USER",
    "status": "ACTIVE"
  }
}
```

**Restrições**:
+ Somente GitHub URLs são aceitos. Você pode apontar para um diretório contendo um SKILL.md (por exemplo,`https://github.com/org/repo/tree/main/skills/my-skill`), que importa o diretório inteiro, incluindo arquivos de referência. Se o SKILL.md estiver na raiz do repositório, você também poderá vincular diretamente ao arquivo (por exemplo,`https://github.com/org/repo/blob/main/SKILL.md`), que importa somente o. SKILL.md
+ O diretório deve conter um SKILL.md com frontmatter válido.
+ O tamanho total do diretório não deve exceder 6 MB e no máximo 100 arquivos.
+ `content.sourceUrl`é mutuamente exclusivo com `content.file` e `content.zip` —você não pode combiná-los na mesma solicitação.
+ Uma atualização somente de metadados (sem`content`) preserva a fonte de importação existente e não é recuperada do repositório.

### Obter, listar, atualizar e excluir
<a name="get-list-update-and-delete"></a>

Use `GetAsset` para recuperar um único ativo por ID:

```
aws devops-agent get-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId>
```

Use `ListAssets` para percorrer cada ativo em um Espaço do Agente:

```
aws devops-agent list-assets \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --max-results 50

aws devops-agent list-assets \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --max-results 50 \
  --next-token <token>
```

Use `UpdateAsset` para alterar um ou mais `metadata` campos sem recarregar o conteúdo. As chaves que você omite mantêm seus valores existentes:

```
aws devops-agent update-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId> \
  --metadata '{ "agent_types": ["INCIDENT_TRIAGE", "INCIDENT_RCA"] }'
```

Use `ListAssetVersions` para inspecionar o histórico de versões de um ativo. Cada `UpdateAssetFile` chamada `UpdateAsset` ou chamada bem-sucedida avança o número da versão do ativo:

```
aws devops-agent list-asset-versions \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId>
```

Use `DeleteAsset` para remover o ativo e todos os seus arquivos:

```
aws devops-agent delete-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId>
```

### Adicionar um único arquivo a uma habilidade existente
<a name="add-a-single-file-to-an-existing-skill"></a>

Se você já criou uma habilidade a partir de um pacote zip e deseja adicionar um novo arquivo de referência, não é necessário recarregar o pacote inteiro. Uso`CreateAssetFile`:

```
aws devops-agent create-asset-file \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId> \
  --path references/troubleshooting.md \
  --content '{ "text": "# Troubleshooting\n\nAdditional notes." }'
```

Para substituir o arquivo no local, use `update-asset-file` com os mesmos argumentos. Para removê-lo, use`delete-asset-file`.

### Ativando e desativando habilidades
<a name="activating-and-deactivating-skills"></a>

As habilidades carregam um estado de ativação em`metadata.status`. Por padrão, as novas habilidades são `ACTIVE` carregadas pelo agente durante as investigações e o bate-papo. Você pode desativar uma habilidade para tirá-la da rotação sem excluí-la, por exemplo, enquanto investiga por que ela está produzindo resultados inesperados e a reativa posteriormente.

**Defina o estado inicial na criação** incluindo `metadata.status` na `CreateAsset` solicitação:

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type skill \
  --metadata '{
    "name": "rds-performance-investigation",
    "description": "Investigation procedures for RDS performance issues.",
    "agent_types": ["GENERIC"],
    "status": "INACTIVE"
  }' \
  --content '{
    "file": {
      "path": "SKILL.md",
      "body": { "text": "# RDS Performance Investigation" }
    }
  }'
```

**Desative uma habilidade existente** com`UpdateAsset`. Como `metadata` é aplicado como uma atualização parcial, o envio só `status` deixa todos os outros campos intactos:

```
aws devops-agent update-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId> \
  --metadata '{ "status": "INACTIVE" }'
```

**Reative** da mesma forma, com`"status": "ACTIVE"`:

```
aws devops-agent update-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId> \
  --metadata '{ "status": "ACTIVE" }'
```

`GetAsset`e `ListAssets` sempre inclua os dados atuais `status` dos ativos de habilidades, `metadata` para que você possa ler o estado de ativação ao vivo a qualquer momento.

O campo `status` diferencia maiúsculas de minúsculas. Somente `ACTIVE` e `INACTIVE` (maiúsculas) são aceitos. Qualquer outro valor falha com `ValidationException` a. A ativação se aplica somente às habilidades; a configuração `metadata.status` em qualquer outro tipo de ativo não tem efeito e o campo é removido da resposta.

## Exemplos de outros tipos de ativos
<a name="examples-for-the-other-asset-types"></a>

O passo a passo de habilidades acima se aplica a todos os outros tipos de ativos. A única diferença é o `metadata` bloqueio e, para anexos, a escolha do conteúdo binário. As `CreateAsset` chamadas mínimas abaixo ilustram cada tipo.

**Crie um AGENTS.md:**

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type agents_md \
  --metadata '{ "agent_type": "INCIDENT_TRIAGE" }' \
  --content '{
    "file": {
      "path": "AGENTS.md",
      "body": { "text": "# Triage Instructions\n\nFollow these steps for new incidents." }
    }
  }'
```

**Crie um anexo** (conteúdo binário; crie a solicitação a partir de um arquivo JSON, conforme mostrado em [Criar uma habilidade a partir de um arquivo binário](#create-a-skill-from-a-binary-file)):

```
base64 -w 0 topology.png > topology.png.b64
cat > create-attachment.json <<EOF
{
  "agentSpaceId": "8f6187a7-0388-4926-8217-3a0fe32f757c",
  "assetType": "attachment",
  "metadata": {
    "filename": "topology.png",
    "extension": "png",
    "size": 184320
  },
  "content": {
    "file": {
      "path": "topology.png",
      "body": { "bytes": "$(cat topology.png.b64)" }
    }
  }
}
EOF
aws devops-agent create-asset --cli-input-json file://create-attachment.json
```

**Crie um agente personalizado:**

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type custom_agent \
  --metadata '{
    "name": "rds-firefighter",
    "tools": ["cloudwatch:GetMetricData", "rds:DescribeDBInstances"],
    "skills": ["rds-performance-investigation"]
  }' \
  --content '{
    "file": {
      "path": "AGENT.md",
      "body": { "text": "# RDS Firefighter\n\nCustom agent for RDS incidents." }
    }
  }'
```

**Crie um perfil de teste:**

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type test_profile \
  --metadata '{
    "name": "checkout-api-tests",
    "test_agent_type": "releaseApiTesting",
    "target_url": "https://api.example.com",
    "test_personas": ["guest", "authenticated"]
  }' \
  --content '{
    "file": {
      "path": "PROFILE.md",
      "body": { "text": "# Checkout API test profile" }
    }
  }'
```

**Crie um ativo de feedback:**

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type feedback \
  --metadata '{
    "execution_id": "b2c3d4e5-6789-01ab-cdef-example22222",
    "agent_types": ["INCIDENT_TRIAGE"]
  }' \
  --content '{
    "file": {
      "path": "FEEDBACK.md",
      "body": { "text": "{\"verdict\":\"correct\"}" }
    }
  }'
```

**Liste os tipos de ativos compatíveis:**

```
aws devops-agent list-asset-types
```