Skip to content

Bygge ferdigheter ​

Denne veiledningen går gjennom å lage en Triggerfish-ferdighet fra bunnen av — fra å skrive SKILL.md-filen til å teste den og få den godkjent.

Hva du vil bygge ​

En ferdighet er en mappe som inneholder en SKILL.md-fil som lærer agenten hvordan den skal gjøre noe. Innen slutten av denne veiledningen vil du ha en fungerende ferdighet som agenten kan oppdage og bruke.

Ferdighetens anatomi ​

Alle ferdigheter er en mappe med en SKILL.md ved roten:

min-ferdighet/
  SKILL.md           # Påkrevd: frontmatter + instruksjoner
  template.md        # Valgfritt: maler som ferdigheten refererer
  helper.ts          # Valgfritt: støttekode

SKILL.md-filen har to deler:

  1. YAML-frontmatter (mellom ----avgrensere) — metadata om ferdigheten
  2. Markdown-kropp — instruksjonene agenten leser

Trinn 1: Skriv frontmatteren ​

Frontmatteren deklarerer hva ferdigheten gjør, hva den trenger og hvilke sikkerhetsbegrensninger som gjelder.

yaml
---
name: github-triage
description: >
  Triage GitHub notifications and issues. Categorize by priority,
  summarize new issues, and flag PRs needing review.
classification_ceiling: CONFIDENTIAL
requires_tools:
  - exec
network_domains:
  - api.github.com
---

Nødvendige felter ​

FeltBeskrivelseEksempel
nameUnik identifikator. Små bokstaver, bindestreker for mellomrom.github-triage
descriptionHva ferdigheten gjør og når den skal brukes. 1-3 setninger.Se ovenfor

Valgfrie felter ​

FeltBeskrivelseStandard
classification_ceilingMaksimalt datasensitivitetsnivåPUBLIC
requires_toolsVerktøy ferdigheten trenger tilgang til[]
network_domainsEksterne domener ferdigheten aksesserer[]

Velge et klassifiseringstak ​

Klassifiseringstake er den maksimale datasensitiviteten ferdigheten din vil håndtere. Velg det laveste nivået som fungerer:

NivåNår det brukesEksempler
PUBLICBruker bare offentlig tilgjengelige dataNettsøk, offentlig API-dokumentasjon, vær
INTERNALArbeider med interne prosjektdataKodeanalyse, konfigurasjonsgjennomgang, interne dokumenter
CONFIDENTIALHåndterer personlige eller private dataE-postsammendrag, GitHub-varsler, CRM-spørringer
RESTRICTEDAksesserer svært sensitive dataNøkkelbehandling, sikkerhetsrevisjoner, samsvar

Hvis ferdighetens tak overstiger brukerens konfigurerte tak, vil ferdighetsforfatters-API-en avvise det. Bruk alltid det laveste nødvendige nivået. :::

Trinn 2: Skriv instruksjonene ​

Markdown-kroppen er det agenten leser for å lære å utføre ferdigheten. Gjør det handlingsrettet og spesifikt.

Strukturmal ​

markdown
# Ferdighetsnavn

Enlinjesformålssetning.

## Når du skal bruke

- Betingelse 1 (bruker spør om X)
- Betingelse 2 (utløst av cron)
- Betingelse 3 (relatert nøkkelord oppdaget)

## Trinn

1. Første handling med spesifikke detaljer
2. Andre handling med spesifikke detaljer
3. Behandle og formatere resultatene
4. Lever til den konfigurerte kanalen

## Utdataformat

Beskriv hvordan resultater skal formateres.

## Vanlige feil

- Ikke gjør X fordi Y
- Sjekk alltid Z før du fortsetter

Beste praksis ​

  • Start med formål: En setning som forklarer hva ferdigheten gjør
  • Inkluder «Når du skal bruke»: Hjelper agenten med å bestemme når ferdigheten skal aktiveres
  • Vær spesifikk: «Hent de siste 24 timers uleste e-poster» er bedre enn «Hent e-poster»
  • Bruk kodeeksempler: Vis nøyaktige API-kall, dataformater, kommandomønstre
  • Legg til tabeller: Hurtigreferanse for alternativer, endepunkter, parametere
  • Inkluder feilhåndtering: Hva du gjør når et API-kall mislykkes eller data mangler
  • Avslutt med «Vanlige feil»: Forhindrer agenten fra å gjenta kjente problemer

Trinn 3: Test oppdagelse ​

Verifiser at ferdigheten kan oppdages av ferdighetslasten. Hvis du plasserte den i bundlet-mappen:

typescript
import { createSkillLoader } from "../src/skills/loader.ts";

const loader = createSkillLoader({
  directories: ["skills/bundled"],
  dirTypes: { "skills/bundled": "bundled" },
});

const skills = await loader.discover();
const mySkill = skills.find((s) => s.name === "github-triage");
console.log(mySkill);
// { name: "github-triage", classificationCeiling: "CONFIDENTIAL", ... }

Agent selvforfatning ​

Agenten kan opprette ferdigheter programmatisk ved hjelp av SkillAuthor-API-en.

Arbeidsflyt ​

1. Bruker:  «Jeg trenger at du sjekker Notion for nye oppgaver hver morgen»
2. Agent:   Bruker SkillAuthor til å opprette en ferdighet i arbeidsområdet
3. Ferdighet: Går inn i PENDING_APPROVAL-status
4. Bruker:  Mottar varsel, gjennomgår ferdigheten
5. Bruker:  Godkjenner → ferdighet blir aktiv
6. Agent:   Kobler ferdigheten inn i morgen-cron-planen

SIKKERHET Agenten kan ikke godkjenne egne ferdigheter. Dette håndheves på API-nivå. Alle agent-forfattede ferdigheter krever eksplisitt eierbekreftelse før aktivering. :::

Sikkerhetsskanning ​

Før aktivering passerer ferdigheter gjennom en sikkerhetsscanner som sjekker for prompt-injeksjonsmønstre:

  • «Ignore all previous instructions» — prompt-injeksjon
  • «You are now a...» — identitetsredefinisjon
  • «Reveal secrets/credentials» — dataeksfirasjonsforsøk
  • «Bypass security/policy» — sikkerhetsomgåelse
  • «Sudo/admin/god mode» — privilegieeskalering

Ferdigheter flagget av skanneren inkluderer advarsler som eieren må gjennomgå før godkjenning.

Triggers ​

Ferdigheter kan definere automatiske triggers i frontmatteren:

yaml
triggers:
  - cron: "0 7 * * *" # Hver dag kl. 7
  - cron: "*/30 * * * *" # Hvert 30. minutt

Planleggeren leser disse definisjonene og vekker agenten på de angitte tidspunktene for å utføre ferdigheten.

Komplett eksempel ​

Her er en komplett ferdighet for triagering av GitHub-varsler:

github-triage/
  SKILL.md
yaml
---
name: github-triage
description: >
  Triage GitHub notifications and issues. Categorize by priority,
  summarize new issues, flag PRs needing review. Use when the user
  asks about GitHub activity or on the hourly cron.
classification_ceiling: CONFIDENTIAL
requires_tools:
  - exec
network_domains:
  - api.github.com
---

# GitHub Triage

Review and categorize GitHub notifications, issues, and pull requests.

## When to Use

- User asks "what's happening on GitHub?"
- Hourly cron trigger
- User asks about specific repo activity

## Steps

1. Fetch notifications from GitHub API using the user's token
2. Categorize: PRs needing review, new issues, mentions, CI failures
3. Prioritize by label: bug > security > feature > question
4. Summarize top items with direct links
5. Flag anything assigned to the user

## Output Format

### PRs Needing Review
- [#123 Fix auth flow](link) — assigned to you, 2 days old

### New Issues (Last Hour)
- [#456 Login broken on mobile](link) — bug, high priority

### Mentions
- @you mentioned in #789 discussion

## Common Mistakes

- Don't fetch all notifications — filter by `since` parameter for the last hour
- Always check rate limits before making multiple API calls
- Include direct links to every item for quick action

Sjekkliste for ferdigheter ​

Før en ferdighet anses som komplett:

  • [ ] Mappenavn samsvarer med name i frontmatter
  • [ ] Beskrivelse forklarer hva og når den skal brukes
  • [ ] Klassifiseringstak er det laveste nivået som fungerer
  • [ ] Alle nødvendige verktøy er oppgitt i requires_tools
  • [ ] Alle eksterne domener er oppgitt i network_domains
  • [ ] Instruksjoner er konkrete og steg-for-steg
  • [ ] Utdataformat er spesifisert
  • [ ] Seksjon for vanlige feil er inkludert
  • [ ] Ferdigheten kan oppdages av lasteren (testet)