CommunityCodierung & Entwicklunggithub.com

emyann/einen-agent-erstellen

Erklärt, wie man in Nemia einen Agenten erstellt – mit Name, Rolle, Beschreibung, Datei, Schlüsseln, Anweisungen, Abschlussschema, Fähigkeiten (auch von Drittanbietern), Fence, Dialogrunden und Überprüfung.

Was ist einen-agent-erstellen?

Dieser Skill beschreibt den vollständigen Prozess zur Erstellung eines Agenten in Nemia. Ein Agent wird als eine Datei unter `agents/<name>.md` definiert, die Frontmatter im YAML-Format sowie einen Anweisungsteil enthält. Die Datei spezifiziert die Rolle, das Modell (z.B. `opus`), den Fence (Berechtigungen für Tools und Aktionen), und die Fähigkeiten (Skills), die aus den Ordnern `skills/`, `.claude/skills/` und dem Store geladen werden können. Der Skill erklärt die fünf Ebenen der Beeinflussung eines Agenten (Anweisungen, benutzerdefinierte Anweisungen, Ordnerdateien, Factory-Regeln, Schritt-Policy) und ihre Priorität. Er deckt auch das Abschlussschema (`output: <name>.schema.json`), die Kommunikation mit Menschen in Runden (mit `blocked`-Abschluss und Gate-Funktion), sowie die Prüfung mittels `npx wf agents card <name>` ab. Besonderes Augenmerk liegt auf der strikten Einhaltung des Fences: Ein Schritt kann den Fence seines Agenten nur verengen, nie erweitern.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/emyann/nemia/tree/HEAD/packages/agent-orchestrator/skills/create-an-agent

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Einen Agenten in Nemia erstellen

Ein Agent ist eine Einstellung: eine Person mit einer Aufgabe, Standards (seinen Fähigkeiten) und Ausrüstung (seinen Werkzeugen). Ein Schritt in einem Workflow ist eine Position, die er besetzt; ein Agent kann Positionen in mehreren Workflows besetzen. Die Fabriken einer Person erhalten keine Agenten von Nemia: Das Team eines Repositorys befindet sich in dessen workflows/, das einer Person in ~/.agent-workflows/workflows/, und die Agents-Seite des Boards schreibt das Zweite. Lies Nemias README, An agent is a node's attachment, für das vollständige Format; dies hier ist die Vorgehensweise und was es gekostet hat, es zu lernen.

Wer es ist

  • Sein Name ist der seiner Datei, agents/<name>.md, der Vorname einer Person in Kleinbuchstaben (nora), und ein Schritt bezeichnet ihn damit (agent: nora). Das Board zeigt den Namen als den einer Person (Nora) neben einem daraus generierten Gesicht (Blobatar), überall gleich.
  • role: ist die Stelle, die es bekleidet, in wenigen Worten (Product engineer); description: sagt, wann es anzuhängen ist, eine Zeile. Beides sind eigene Zeilen des Agenten, zusammen mit harnessPrompt:: Ein Schritt, der eines setzt, wird abgelehnt. Ein Schritt fügt mit skills: zu den Fähigkeiten seines Agenten hinzu (Seine Fähigkeiten).
  • mcp: nennt die MCP-Server, die seine Sitzungen laden, mit den Namen, die ihnen die .mcp.json des Checkouts gibt (mcp: playwright). Ein Schritt fügt mit mcp: zu denen seines Agenten hinzu, wie es skills: tut: Ein Server, den nur ein Repository hat, wird von dem Schritt benannt, der ihn braucht, damit der Agent portabel bleibt. Eine Sitzung lädt die von ihrem Agenten und Schritt genannten Server und sonst keine: Ohne entsprechende Zeile bei beiden lädt sie keine, und ein Name, den der Checkout nicht deklariert, lehnt die Sitzung bei ihrem Start ab. Das Laden eines Servers erlaubt keines seiner Werkzeuge: Der Fence des Agenten entscheidet weiterhin. Ein Agent, der einen Server nennt, kann nicht probeweise ausgeführt werden, da ein Testlauf keinen Checkout hat.
  • Eine name:-Zeile muss mit dem Dateinamen übereinstimmen; card: ist veraltet (die Karte wird aus seinen Fähigkeiten generiert: npx wf agents card <name>).

Die Datei

Frontmatter, dann seine Anweisungen. Die anderen Schlüssel legen fest, wie seine Sitzungen ablaufen – harness, model, effort, context, remote, output und sein Fence – und ein Schritt, der ihn benennt, übernimmt jeden, es sei denn, er setzt seinen eigenen. Die Verdrahtung ist Sache des Schritts und wird hier abgelehnt: after, input, workspace, check, gate, loop, budget, background.

  • Der Fence steht unter dem Block seines Harness: claude: { fence: { permissionMode, tools, allowedTools, disallowedTools } } oder codex: { fence: { sandbox } }. Der Block enthält nur fence, und ein Block für einen anderen Harness als den der Datei wird abgelehnt. Ein Fence-Schlüssel auf oberster Ebene ist die alte Schreibweise, wird aber noch gelesen; nemia frontmatter rewrite <folder> verschiebt ihn in den Block.
  • Sage, was ein Schritt überschreiben darf: overridable: model, effort, fence, skills, jedes Wort eines aus OVERRIDABLE (model, effort, context, harness, remote, output, fence, skills, mcp). Ein Schritt, der etwas anderes setzt, wird beim Laden abgelehnt, unter Nennung des Schlüssels und des Agenten. Ohne diese Zeile darf ein Schritt alles überschreiben, und nemia start sagt, eine hinzuzufügen.
---
role: Code reviewer
harness: claude
model: opus
overridable: model, effort, fence
claude:
  fence:
    permissionMode: dontAsk
    tools: Read, Grep, Glob, Bash
    allowedTools: Bash(git log:*), Bash(git diff:*)
---
  • Das Frontmatter ist YAML, wie das eines Schritts und eines Skills; jeder Wert wird als geschriebener Text gelesen. Setze einen Wert in Anführungszeichen, der : oder # enthält oder mit einem YAML-Zeichen beginnt ([, {, *, &, !, |, >, -, ?), wie in description: "Reviews a change: its correctness". Schreibe einen langen Wert als Literalblock, |- und den Wert in den eingerückten Zeilen darunter. Ein Listenschlüssel akzeptiert Read, Grep oder [Read, Grep]; das Board schreibt die erste Form.
  • Sage effort: und context: (200k): Ein Job liest keine Benutzereinstellungen, und eine unbegrenzte Sitzung liest bei jedem Aufruf bis zu einer Million Token.
  • auto wird beim Laden für die Modelle abgelehnt, bei denen gemessen wurde, dass es abfällt (haiku, claude-sonnet-4-5); nenne dontAsk mit Regeln dort.

Seine Anweisungen

Der Körper sind seine Anweisungen, angehängt an Claude Codes eigenen Prompt (harnessPrompt: keep; no-coding entfernt den Coding-Abschnitt des Harness, replace setzt die Anweisungen an seine Stelle). Halte sie generisch und kurz: Wer es ist, wofür es verantwortlich ist, was es niemals tut, wie es eine Runde beendet, was sein Abschluss enthält. Die Vorgehensweise gehört in einen Skill, und eine Regel, die die Maschinerie bereithält (ein Fence, ein Gate), braucht keinen Satz. Eine fortgesetzte Sitzung behält den Körper, mit dem sie gestartet wurde: Eine Bearbeitung erreicht die nächste Ausführung, niemals eine laufende.

Die fünf Ebenen

Die Anweisungen sind eine von fünf Ebenen, die einen Agenten unabhängig von seiner Aufgabe formen, jede geschrieben von dem, dem sie gehört:

  1. Anweisungen — der Körper des Agenten: Wer es ist, wo immer es eingestellt ist.
  2. Benutzerdefinierte Anweisungen — was eine Person einem Agenten hinzufügt, den sie verwendet, ohne ihn umzuschreiben, gespeichert in ihrem Store, eine Datei pro Agentenname (wf agents custom <name>), niemals im Ordner des Agenten. Nur Worte: Sie setzen keinen Schlüssel, also erweitern sie nie den Fence oder geben ein Tool. Eine Ausführung friert sie bei ihrem Start ein, sodass eine Bearbeitung nur die Ausführungen danach erreicht.
  3. Die Dateien des Ordners — die Dateien, die der Harness aus dem Ordner liest, in dem der Agent arbeitet (heute CLAUDE.md, AGENTS.md): Was dort für jeden Agenten steht, der darin arbeitet. Nemia setzt nichts daraus zusammen. Sie rangieren über den eigenen Anweisungen des Agenten und unter den Regeln der Fabrik und der Richtlinie des Schritts, obwohl ein Harness sie als alles überschreibend darstellt: Diese Rahmung stammt vom Harness.
  4. Die Regeln der Fabrik — die Regeln und Richtlinien einer Fabrik, jedem in ihr eingestellten Agenten mitgeteilt: eine Datei pro Fabrik, gespeichert im Store (nemia factory rules <name>), niemals in einem Repository. Nur Worte und von einer Ausführung bei ihrem Start eingefroren, wie benutzerdefinierte Anweisungen. Ein Schritt bei einem entfernten Agenten erhält keine.
  5. Die Richtlinie des Schritts — die eigenen Worte und Schlüssel des Schritts: Was diese Position dieses Prozesses von einer Rolle verlangt. Eine normale Ebene, kein Workaround: Sage dort, was ein Workflow erwartet, und halte es aus den Anweisungen heraus. Ein Schritt kann Fähigkeiten hinzufügen, niemals entfernen.

Die Zahl ist die Rangfolge: Wo zwei Ebenen Unterschiedliches sagen, gewinnt die höhere Zahl, und die Aufgabe steht über allen. Die Reihenfolge, in der die Worte ankommen, ist eine separate Sache — Anweisungen, benutzerdefinierte Anweisungen, die Regeln der Fabrik, die Richtlinie des Schritts, dann die Aufgabe, wobei die Dateien des Ordners vom Harness dort gelesen werden, wo der Agent arbeitet. Welcher Ebene eine neue Anweisung gehört, ist Nemias eigene Routing-Regel, Where a new instruction goes, einmal im ausgelieferten Five layers-Abschnitt gesagt: Frage sie, anstatt zu raten. Fences verengen sich nur: Ein Schritt kann den Fence seines Agenten verengen, niemals erweitern – die disallowedTools: eines Schritts werden zu denen seines Agenten hinzugefügt, und der Lader lehnt die tools:, allowedTools:, permissionMode: oder sandbox: eines Schritts ab, die dem Agenten etwas geben würden, was seine Datei nicht hat. Also sagen die Anweisungen, was für die Rolle überall gilt, und nichts über einen einzelnen Workflow oder Arbeitsbereich.

Sein Abschluss

output: <name>.schema.json, ein JSON Schema neben dem Agenten: Was der Schritt übergibt, streng dekodiert. Hausstil: jedes Feld described, required, additionalProperties: false.

  • Reserviert: outcome, summary, artifacts, needs sind bei jedem Abschluss die eigenen des Laufs; der Lader lehnt ein Schema ab, das eines deklariert. (Iris Absicht sagt aus diesem Grund proposedOutcome.)
  • Halte ein Schema über die Versuche einer Sitzung hinweg gleich: Eine fortgesetzte Sitzung, der ein geändertes Schema gegeben wird, baut ihren gesamten Prompt-Cache neu auf.
  • Ein Schritt liest einen Abschluss mit input: <step> von jedem Schritt, auf den er wartet, auch über die dazwischenliegenden Schritte hinweg; ein Schritt, der eine Schleife bildet (loop:), darf nur auf einen Schritt warten, also liest er auf diese Weise, was vor der Schleife kam (ein Review-Schritt liest so die Spezifikation).

Seine Fähigkeiten

skills: <a>, <b> nennt Ordner, die eine SKILL.md enthalten, gesucht in skills/ neben dem Agenten-Ordner, dann im .claude/skills/ des Repositorys, dann im Store, zuletzt in Nemias eigenen Fähigkeiten. tools: muss Skill erlauben. Das .claude/skills/ des Repositorys wird nur gefunden, wenn das Repository der Ort des Schritts ist, wie ein Start es vorgibt: Ein Test, der einen Ordner lädt, übergibt den Ort ebenfalls. Ein Schritt mit einem Agenten darf mit seinem eigenen skills: Fähigkeiten hinzufügen: Die Sitzung erhält die des Agenten, dann die des Schritts, jede einmal. Der Fence des Agenten muss sie bereits laden; ein Schritt erweitert ihn nie.

  • Schreibe einen Skill mit der Methode des Skill-Erstellers: Eine description:, die sagt, wann er zu verwenden ist, einen kurzen Körper, Details in Dateien daneben.
  • Verwende den eines anderen unverändert: In einem Scratch-Projekt, DO_NOT_TRACK=1 npx skills add <owner>/<repo> --skill <name> --agent claude-code --copy -y; kopiere den Ordner in .claude/skills/, füge seinen Eintrag in skills-lock.json ein, und füge seinen Autor, Quelle und Lizenz zu THIRD_PARTY_NOTICES.md hinzu (MIT verlangt den Hinweis in jeder Kopie). Bearbeite es niemals – der Lock fixiert es – und passe es im Körper des Agenten an. Verkaufe den Skill, den ein Modell aufrufen kann: Ein Skill mit disable-model-invocation: true ist ein Slash-Befehl einer Person (grill-me ruft nur grilling auf).

Sein Fence

  • Eine Rolle, die nichts schreibt, verwendet dontAsk. Nur Lesezugriffe in ihrem Arbeitsbereich, schreibgeschützte Befehle und was eine Erlaubnisregel benennt, läuft; der Rest wird abgelehnt, ohne zu fragen. Die Einstellungen des Repositorys können Befehle erlauben, die andere Rollen brauchen und die in den Arbeitsbereich schreiben (einen Build zum Beispiel), also verweigert ein Agent mit Bash jeden davon namentlich in disallowedTools:. Ein Unter-Agent erbt den Modus und die Regeln; liste Agent in allowedTools: auf, damit die Dispatch selbst nie abgelehnt wird. Erlaube namentlich jede Prüfung, die die Rolle ausführt und die die Einstellungen nicht abdecken; sein Skill buchstabiert jede einzeln, einen pro Aufruf (einer, der umschlossen, gepiped, umgeleitet oder hinter cd, git -C, VAR= oder for steht, wird abgelehnt), und sendet einen Lese- oder Suchvorgang an Read, Grep oder Glob, nicht an Bash.
  • Eine Rolle, die bearbeitet, verwendet auto und verweigert namentlich, was sie niemals tun darf: Bash(git push), Bash(git push:*), Bash(git branch -D:*), Bash(git branch --delete --force:*), Bash(pkill:*), Bash(killall:*), mcp__playwright__browser_run_code_unsafe.
  • Ein Schritt verengt nur, und nur wo overridable: fence nennt. Ein Schritt, der ein Werkzeug, eine Erlaubnis oder einen Modus braucht, den die Datei seines Agenten nicht hergibt, benötigt einen anderen Agenten; die disallowedTools: eines Schritts werden zu denen seines Agenten hinzugefügt: Schreibe nur die Verweigerungen, die der Schritt hinzufügt; er kann niemals eine von denen des Agenten entfernen.

Mit einer Person sprechen

Ein Schritt ist ein Job im Agent SDK: Er kann nicht innerhalb eines Gesprächs warten. Um zu fragen, meldet er sich mit blocked und seinen Fragen ab; die Person antwortet auf dem Board oder mit wf retry <run> <step> --message "…", und dieselbe Sitzung wird mit den Antworten als nächster Runde fortgesetzt. Sage dies im Körper eines Agenten, der befragt, und schalte den Schritt mit Gate, dessen Abschluss eine Person akzeptieren muss (gate: true). Die letzte Runde eines Jobs ist seine Abmeldung: Ein Agent, der lange Befehle ausführt (der E2E-Test), wird angewiesen, sie im Vordergrund auszuführen oder auf sie zu warten, niemals, während einer läuft, abzumelden (ein erster Web-Build eines Ingenieurs meldete sich einmal ab, bevor sein E2E endete). Ein als blocked abgemeldeter Abschluss wird für sich allein gelesen, daher trägt ein Agent, der in Runden fragt, alles bisher Festgelegte in jeder Runde mit sich: Die dritte Runde eines Interviewers ließ einmal seine früheren Entscheidungen fallen. Deklariere die Fragen als Feld des Ausgabeschemas, { "x-shape": "questions", "description": "…" }, das der Lader zu einer strengen Form erweitert: Das Board zeichnet sie als Auswahlmöglichkeiten, die eine Person durch Klicken beantwortet. Ein mit Gate versehener Schritt, der weiß, was die Schritte nach ihm kosten werden, deklariert { "x-shape": "budgets", "description": "…" } daneben: eine Liste von { step, usd, why }, jeder ein Schritt nach dem Gate, einmal, in Dollar über Null, why die Gründe für den Betrag. Das Gate zeigt sie neben dem Abschluss an, und die Genehmigung macht sie zu den Obergrenzen dieser Schritte, mit jedem Betrag, den die Person geändert hat (nemia approve <run> <step> --budget <step>=<amount>); eine Obergrenze über dem eigenen budget: eines Schritts wird dort genannt und niemals ungefragt genehmigt. Ein Abschluss, dessen Budgets einen anderen Schritt nennen oder keinen Betrag enthalten, wird an seine Sitzung zurückgewiesen.

Überprüfe es

  1. npx wf agents card <name> aus dem Repository: Der echte Lader liest die Datei – ihre Schlüssel, die reservierten Namen ihres Schemas, jede gefundene Fähigkeit – und gibt die Karte aus oder lehnt mit Worten ab, die die Behebung nennen.
  2. Die eigenen Prüfungen des Repositorys, wo seine Guards jeden Ordner lesen, den es ausliefert (die Fences, die eingefrorenen Schritte, der Render-Roundtrip): Führe sie an jedem Cache vorbei aus, der den Workflows-Ordner nicht sieht.
  3. Führe es aus: einen mit Gate versehenen Workflow, der es benennt, auf einer kleinen echten Karte, und lese seinen Abschluss vor der Genehmigung.
  4. Nenne den neuen Agenten dort, wo das Repository seine Agenten auflistet.

Wenn du etwas lernst

Einen Agenten zu erstellen ist, wie dieser Skill getestet wird. Wenn ein Schritt hier falsch war oder fehlte – eine Ablehnung, der du begegnet bist, ein Schlüssel, der dich überrascht hat – korrigiere diese Datei in derselben Änderung wie den Agenten, in höchstens drei Zeilen, zusammen mit der Datei, die die Regel enthält.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Verwandte Skills