Mehrere Linux Projekte reagieren derzeit auf ein neues Gesetz in Brasilien. Einige Distributionen schränken den Zugriff aus dem Land ein und prüfen mögliche Folgen. Die Entscheidungen fallen einzeln und ohne gemeinsame Abstimmung. Auslöser ist das Gesetz ECA Digital. Es soll Kinder im Netz besser schützen und verlangt teils strenge Vorgaben für digitale Dienste. Die Regeln […]
In Ubuntu sorgt aktuell eine neue Sicherheitslücke für Aufsehen. Die Schwachstelle betrifft den Snap Dienst und ermöglichte lokalen Nutzern eine Ausweitung ihrer Rechte. Angreifer können unter bestimmten Umständen Root Zugriff erlangen. Die Lücke wurde als CVE‑2026‑3888 veröffentlicht und mit einem hohen Schweregrad bewertet. Das Problem entsteht durch den Umgang mit dem privaten /tmp Verzeichnis von […]
Das GNOME Projekt hat am 18. März 2026 die neue Version 50 der gleichnamigen Desktopumgebung veröffentlicht und liefert ein großes Paket an Neuerungen. Die Entwickler setzen dabei auf mehr Kontrolle, bessere Bedienung und moderne Technik. Viele Änderungen betreffen den Alltag der Nutzer. Ein Schwerpunkt liegt auf neuen Funktionen für Familien. Eltern können nun beim Erstellen […]
KDE hat Plasma 6.6.3 freigegeben. Das Update konzentriert sich stark auf KWin und behebt mehrere Abstürze. Besonders das Zoom Modul und die Ausgabeverwaltung arbeiteten zuvor nicht zuverlässig. Die neue Version verbessert zudem Eingaben, Screencasts und die Unterstützung spezieller Monitorfunktionen. Auch Discover erhält wichtige Korrekturen. Kategorien reagieren nun zuverlässiger und Aktualisierungen laufen sauberer. Die Darstellung von […]
Die Open Source Monitoring Conference sucht im Jahr ihres 20jährigen Bestehens Experten und Praktiker, die im Rahmen eines Vortrags auf der Konferenz ihr Wissen weitergeben möchten.
Sicherheitsforscher von Qualys haben schwere Schwachstellen im AppArmor System entdeckt. Die Lücken ermöglichen Angreifern durch Bypass von Kernel Schutzmechanismen weitreichende Rechte und betreffen viele große Distributionen wie Debian, Ubuntu oder SUSE. Die Fehler reichen bis ins Jahr 2017 zurück. Die Forscher fanden neun Schwachstellen in AppArmor. Angreifer können damit Prozesse austricksen und eigene Aktionen ausführen. […]
Mozilla sucht nach Strategien, um Firefox neue Nutzer zuzuführen. In Firefox 149 wird dazu ein kostenloser Browser-VPN mit 50 GB monatlichem Datenvolumen integriert sein.
Softwareentwicklung, Betrieb, Wartung – alles auf Open-Source-Basis: var-lab aus Nürnberg setzt auf Unabhängigkeit und offene Standards. Im Interview spricht das junge Unternehmen über Datenkontrolle, fairen Wettbewerb und die Rolle der OSBA in Europa.
Seit 2013 arbeitet Port Zero daran, Abhängigkeiten von großen Tech-Konzernen zu verringern – mit eigener Infrastruktur, Penetration Testing und Smart-City-Projekten.
Von Krankenhäusern über Hochschulen bis zur Verwaltung: Qualitus bringt E-Learning auf den Weg – seit 25 Jahren mit Open Source. Im Interview geht es um Freiheit, Selbstbestimmung und eine Diskussion, die endlich in Fahrt kommt.
Die Flensburger lambda9 GmbH entwickelt Software, die Kund:innen langfristig selbstständig nutzen können. Im OSBA-Mitgliederinterview erklärt das Team, warum offene Standards und nachvollziehbare Architekturen für sie nicht verhandelbar sind.
mundialis verarbeitet Satelliten- und Luftbilder mit freier Software und trägt aktiv zur Open-Source-Community bei. Im Interview spricht das Unternehmen über Copernicus, digitale Souveränität und den Wert starker Netzwerke.
Auf seiner Entwicklerkonferenz GTC in San Jose hat Nvidia-CEO Jensen Huang die Umsatzprognose von 500 Milliarden Dollar bis Ende 2026 um ein Jahr verlängert und auf eine Billion Dollar…
KDE hat knapp einen Monat nach Version 6.23 die neue Version der Frameworks veröffentlicht und liefert damit ein breites Paket an Aktualisierungen. Die Sammlung erweitert die Qt Bibliotheken und richtet sich an Entwickler auf vielen Plattformen. Baloo erhält eine überarbeitete Datenbankverwaltung. Fehlerhafte Einträge werden nun sauber entfernt und die Datenbank öffnet sich im passenden Modus. […]
Mozilla hat Solo 2.1 veröffentlicht. Es wurde die Möglichkeit hinzugefügt, die Website in einer von sechs zunächst unterstützten Sprachen zu erstellen, welche für die Generierung neuer Texte genutzt wird, darunter auch Deutsch. Es gibt einen neuen Abschnitt für Unternehmensdaten in den Einstellungen, um die Unternehmensbeschreibung und den Standort zu bearbeiten. Im Video-Abschnitt werden jetzt auch Google Drive und nicht aufgelistete Vimeo-Videos unterstützt. Bilder und Videos können jetzt auch in den Artikel-Abschnitt eingefügt werden. Links zu Twitch und weiteren sozialen Netzwerken werden nun im Header und Footer unterstützt. Das Zeichenlimit für Code wurde erhöht. Erhöht wurde auch die Anzahl von Videos im Video-Abschnitt auf acht und die Anzahl von Team-Mitgliedern im Team-Abschnitt von zwölf auf 30. In den Account-Einstellungen kann jetzt die E-Mail-Adresse geändert werden. Dazu kommen noch diverse Fehlerkorrekturen und Performance-Verbesserungen.
Solo Pro
Die Nutzung von Solo ist grundsätzlich kostenlos. Mit Solo Pro gibt es für 25 USD pro Monat respektive 240 USD pro Jahr (entspricht dann 20 USD pro Monat) einen kostenpflichtigen Plan.
Mit Solo Pro kann man bis zu fünf statt drei Websites veröffentlichen, bis zu 25 statt nur drei Entwürfe speichern und bis zu fünf statt nur eine benutzerdefinierte Domain verbinden. Eine benutzerdefinierte Domain bis zu einem Wert von 12 USD pro Jahr ist inklusive. Wem 25 Bilder-Uploads pro Website nicht ausreichen, kann bis zu 100 Bilder hochladen, und es können bis zu fünf Personen an einer Website arbeiten. Pro-Nutzer können Websites duplizieren und auch im <head>-Bereich der Website benutzerdefinierten Code hinzufügen. Außerdem berechtigt die Nutzung der Pro-Version zum Entfernen des Solo-Logos in der rechten unteren Ecke der erstellten Websites.
Für Solo Pro bringt Solo 2.1 eine Integration von Pexels, worüber Millionen von Bildern zur Verfügung stehen, die auf der eigenen Website verwendet werden können. Außerdem ist Solo Pro jetzt weltweit verfügbar.
Solo Grow
Mit Solo Grow hat Mozilla eine weitere Preisstufe gestartet. Für 120 USD pro Monat respektive 1.080 USD pro Jahr (das entspricht dann 90 USD pro Monat) bekommt man alle Vorteile von Solo Pro, aber es können bis zu 30 Websites veröffentlicht und bis zu 40 Entwürfe gespeichert werden. Außerdem können bis zu 30 benutzerdefinierte Domains verbunden werden.
Unsere Website hat den Font gewechselt. Statt Microsofts Segoe, verwenden wir jetzt Noto. Das war längst überfällig. Wie gefällt euch das neue Schriftbild?
Debian hat ein neues Update für die stabile Trixie Version veröffentlicht. Die Ausgabe 13.4 bündelt viele Korrekturen und sorgt für ein zuverlässigeres System. Nutzer mit aktuellen Sicherheitsupdates bemerken kaum Änderungen. Insgesamt kommen 111 Fehlerkorrekturen und 67 gestopfte Sicherheitslöcher. Die Aktualisierung behebt Fehler in wichtigen Paketen. Apache2 erhält eine Lösung für Probleme mit HTTP2 und Dovecot […]
In der Vergangenheit habe ich viele Dokumente, wie z.B. Hausarbeiten, Aufsätze, Briefe, Dokumentationen und Präsentationen mit LaTeX erstellt. In der Vorbereitungsphase für einen Vortrag haben Dirk und ich beschlossen, Typst zu lernen.
Ich habe kein Werkzeug zur automatischen Konvertierung genutzt, da ich zu faul war, ein solches erst zu finden und zu erlernen. Stattdessen habe ich Vim genutzt und die entsprechenden Umgebungen ersetzt. Das war in diesem Fall in Ordnung, kann aber bei komplexeren Dokumenten schnell in Arbeit ausarten. Allerdings werden Automaten bei zunehmend komplexen Projekten ebenfalls an ihre Grenzen kommen.
Im Folgenden findet ihr einen kurzen Vergleich der Syntax-Elemente.
Die Preamble (Vorspann)
Die Preamble ist der Teil des LaTeX-Dokuments, der vor dem eigentlichen Inhalt steht. Hier werden grundlegende Einstellungen und Pakete definiert, die während der Dokumenterstellung verwendet werden. Die Preamble beginnt immer mit dem Befehl \documentclass und endet mit dem Befehl \begin{document}.
Die Referenz ist ständig in einem Browser-Tab geöffnet, wenn ich mit typst arbeite. Dies wird so bleiben, bis ich die am häufigsten verwendeten Funktionen auswendig kenne.
Grundsätzlich halte ich mich an das KISS-Prinzip und den Grundsatz: Form follows function (Deutsch: die Form folgt der Funktion bzw. dem Inhalt). Ich möchte mich so viel wie möglich mit dem Inhalt beschäftigen und möglichst wenig Zeit mit dem Satz bzw. der Formatierung zubringen.
Abbildungen und Tabellen
Zu den häufigsten Umgebungen zählen vermutlich Abbildungen und Tabellen. In der LaTeX-Version habe ich diese wie folgt gesetzt:
\begin{tabular}{ll}
Vertragsnummer & 12345\\
Kundennummer & 98765432\\
Tarif & zuhause100\\
\end{tabular}
\begin{figure}
\centering
\includegraphics[scale=0.3]{bilder/bild.jpg}
\caption{Meine super Bildunterschrift}
\label{fig:bild}
\end{figure}
\begin{figure}
\begin{subfigure}[c]{0.5\textwidth}
\includegraphics[width=0.9\textwidth]{bilder/front.jpg}
\subcaption{Frontansicht}
\end{subfigure}
\begin{subfigure}[c]{0.5\textwidth}
\includegraphics[width=0.9\textwidth]{bilder/rear.jpg}
\subcaption{Rückansicht}
\end{subfigure}
\caption{Das sind zwei tolle Abbildungen.}
\label{fig:bild2}
\end{figure}
Für das LaTeX-Konstrukt subfigure habe ich keinen entsprechenden Ersatz in typst gefunden. Ich setze dies in einzelnen Abbildungen hintereinander um. Die Umgebungen sehen nun wie folgt aus:
Tabellen und Bilder werden beide in einer figure-Umgebung gesetzt. Dies macht in meinen Augen Sinn, da beide Umgebungen in der Regel mit einer Über- bzw. Unterschrift versehen werden, häufig zentriert gesetzt und mit einer Referenz versehen werden.
Ich habe mich noch nicht ganz an die Terminologie gewöhnt. Typst bezeichnet figure und table sowie die meisten anderen Elemente als Funktionen und nicht als Umgebungen.
Aufzählungen, Links und Listen
Für nummerierte und unsortierte Listen in LaTeX siehe Abschnitt 3.18. Listen im KOMA-Script Scrguide. Für typst siehe enum und list.
Für Links steht in LaTeX das mächtige Paket hyperref bereit. In typst gibt es das link-Element.
Fazit
Mir erscheint die typst-Syntax etwas einfacher, dafür weniger flexibel zu sein. Was mir besser gefällt, mag ich noch nicht sagen, da ich noch unentschlossen bin.
Das mit LaTeX erstellte PDF sieht in meinen Augen perfekt aus. Das mit typst erstellte PDF sieht ebenfalls gut aus und ist leserlich. Es reicht in meinen Augen jedoch nicht an die LaTeX-Ausgabe heran.
In typst ist meine Preambel kürzer, die Syntax etwas einfacher. Dafür war es mir nicht so einfach möglich, die Schriftart zu ändern. Diese hätte ich erst in meine typst-Binärdatei mit einkompilieren müssen. Ein Vorgang, der mir entschieden zu aufwendig ist.
Probiert es am besten aus und entscheidet selbst, welches Ergebnis euch besser gefällt. Ich vermag (noch) nicht zu sagen, ob mir LaTeX oder typst insgesamt besser gefallen. Werft ggf. zuerst einen Blick in den Guide for LaTeX Users.
KDE umgeht ein Problem mit AMD-GPUs, welches zum Einfrieren des Systems führen konnte. Ein neues Kernel-Modul gaukelt dem Nvidia-Treiber mehr verfügbaren VRAM vor und reserviert dafür Systemspeicher. EndeavourOS bringt ein Update seines Installationsabbilds und ältere Spiele mit DirectX 3 könnten bald über Vulkan laufen.
Die Neuerungen von Firefox Klar 148.2 für Apple iOS
Mozilla hat Firefox Klar 148.2 (internationaler Name: Firefox Focus 148.2) für Apple iOS veröffentlicht. Dabei handelt es sich um das erste Update seit Firefox Klar 143 im September 2025, da sich Firefox Klar für iOS seit dem in einem Wartungsmodus befindet. Firefox Klar besitzt konzeptionell nur einen sehr reduzierten Funktionsumfang und da praktisch alle Browser auf iOS unter der Haube auf die Engine von Safari setzen, sind auch zwecks Webkompatibilität, anders als auf Android, keine regelmäßigen Updates notwendig.
Mit dem nun veröffentlichten Firefox Klar 148.2 wird eine Sicherheitslücke behoben. Ein Update ist daher für alle Nutzer empfohlen.
Vor zwei Jahren half »Prompt Engineering« zu besseren Ergebnissen bei KI-Tools. Heute ist der Weg ein anderer:
Die Datei AGENTS.md (für die meisten KI-Tools) bzw. CLAUDE.md (für Claude Code) im Projektverzeichnis fasst wichtige Projektinformationen und Coding-Anweisungen zusammen. IDEs wie Cursor bzw. CLIs wie Claude Code oder Codex berücksichtigen diese Datei bei jedem Session-Start automatisch. Damit bietet diese Datei eine großartige Möglichkeit, das Default-Verhalten von KI-Tools den eigenen Ansprüchen anzupassen. (AGENTS.md können CLAUDE.md auf verschiedenen Ebenen gespeichert werden, um z.B. allgemeine Coding-Anweisungen mit spezifischen Projektinformationen zu kombinieren.)
Skills ermöglichen es, Anweisungen für bestimmte Bearbeitungsschritte im Markdown-Format zu formulieren. Während AGENTS.mdimmer berücksichtigt wird, werden Skills nur bei Bedarf ausgewertet. Skills können auch Anweisungen für den Aufruf externer Tools beinhalten und ersetzen dann in manchen Fällen die MCP-Server-Konfiguration. (Auch Skills können wahlweise projektspezifisch oder auf globaler Ebene eingerichtet werden.)
Dieser Beitrag zeigt die Anwendung von AGENTS.md und Skills speziell für die Programmiersprache Swift — losgelöst davon, ob Sie in Xcode arbeiten oder eine externe CLI verwenden. Der Artikel hat einen leichten Claude-Fokus, weil ich mich persönlich in der Anthropic-Welt wohler fühle als in der von OpenAI. Qualitativ gibt es keine großen Unterschiede zwischen beiden Systemen, beide funktionieren mittlerweile herausragend gut.
Ich setze hier voraus, dass Sie grundlegende Erfahrung mit KI-Tools haben und zumindest ein CLI-Tool (ich empfehle Claude Code, aber auch Codex CLI, Gemini CLI, Copilot CLI usw.) ausprobiert haben.
AGENTS.md bzw. CLAUDE.md auf Projekt-Ebene
Wenn Sie in Xcode mit Claude Agent oder Codex arbeiten, sollte Ihr erster Prompt in einem neuen Projekt /init lauten. Der Claude Agent bzw. Codex analysiert dann Ihren Code und erzeugt die Datei CLAUDE.md bzw. AGENTS.md. (AGENTS.md ist ein generischer Name. Die Datei wird von den meisten KI-Tools berücksichtigt, absurderweise aber nicht von Anthropic-Tools, die auf CLAUDE.md bestehen.)
Die Datei wird im Projektverzeichnis gespeichert; sie ist im Projektnavigator unsichtbar, weil dieser eine Verzeichnisebene tiefer ansetzt. Im Regelfall lohnt es sich, diese Datei in einem Editor nachzubearbeiten und dort bei Bedarf eigene Coding-Anweisungen hinzuzufügen.
Beachten Sie, dass die Datei bei jeder Session in den Kontext gelesen wird. Halten Sie sich daher kurz!
Die von Claude Code ohne meine Mithilfe generierte Datei CLAUDE.md für das Cart-Beispielprogramm (Kapitel 25 in meinem Swift-Buch) sieht beispielsweise so aus:
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Build & Run
This is an Xcode project (`family-cart.xcodeproj`). Build and run through Xcode or use the `BuildProject` MCP tool. There are no tests, no linter, and no package dependencies.
## Architecture
**Family Cart** is a SwiftUI shopping list app that syncs across family members via a REST API. The codebase follows a strict three-layer structure reflected in the folder naming:
### 1_model
- **ShoppingItem** — Immutable `struct` (Codable, Identifiable). All mutations produce new copies via the `with(...)` helper. Persisted locally as JSON in the Documents directory (`shoppingItems.json`). The `[ShoppingItem].save()` extension handles local persistence.
- **Category** — `@Observable class` with 10 predefined grocery categories. Each has a `shortcut` string (e.g. `"bread"`, `"veg"`, `"dairy"`) used as the foreign key in ShoppingItem. Categories are not persisted — they are recreated from `predefinedCategories()` on every launch. `Color(hex:)` extension lives here.
...
## Key Patterns
- **No Combine**: The app uses `@Observable` (Observation framework) and Swift concurrency (async/await). Avoid introducing Combine.
- **Immutable model pattern**: `ShoppingItem` is a struct. Always use `with(...)` to create modified copies, then `replaceItem(_:with:)` on the view model. Never mutate items in place.
- **Single ViewModel**: All state flows through `ShoppingViewModel`. Views receive it as a parameter (not via `@Environment`).
- **Categories as constants**: The 10 categories and their shortcuts are hardcoded. Category images use custom assets with `-fill` suffix variants for selected state.
- **Localization**: Strings are localized via `Localizable.xcstrings` (English + German). Category names use `LocalizedStringKey`.
- **Soft delete**: Items are never removed from the array — `deleteItem()` sets `isDeleted = true` and title to `"deleted"`.
## REST API
Backend at `cart.kofler.info:443`. Authentication via HMAC-SHA256 tokens that rotate every 5 minutes. Key endpoints:
- `GET /version` — connectivity test
- `GET/PUT /items/{family_id}` — pull/push shopping items
- `PUT /newfamily`, `PUT /newmember` — family setup
- `GET /family/{code}`, `GET /members/{family_id}` — family lookup
AGENTS.md bzw. CLAUDE.md auf Xcode-Ebene
Während AGENTS.md bzw. CLAUDE.md im Projektverzeichnis eben nur für dieses Projekt gilt, können Sie die gleichnamige Datei auch in speziellen Xcode-Verzeichnissen speichern. Die dort formulierten Regeln gelten dann für alle Projekte in Xcode, in denen Sie den jeweiligen Agenten zu Hilfe nehmen.
Die aktuelle KI-Integration sieht die folgenden beiden Verzeichnisse zur Konfiguration von Claude Agent bzw. Codex vor (Quelle):
Die dort gespeicherten Dateien werden — parallel zu eventuell ebenfalls vorhandenen gleichnamigen Dateien auf Projektebene — automatisch berücksichtigt, sobald Xcode Codex oder Claude Agent startet.
Vorsicht! Das ClaudeAgentConfig-Verzeichnis gilt nicht, wenn Sie in Xcode Claude verwenden. Es wird nur von Claude Agent berücksichtigt. Diese verwirrende Differenzierung zwischen zwei fast gleichnamigen KI-Features hat mir anfangs eine Menge Zeit gekostet.
Systemweite AGENTS.md-Dateien sind also der ideale Ort, um Swift- bzw. Xcode-spezifische Anweisungen zu speichern, die nichts mit einem konkreten Projekt zu tun haben. Es ist empfehlenswert, den Coding-Agenten dort Hinweise zu geben, dass diese ausschließlich moderne Swift-Sprachmerkmale (z.B. Concurrency) und SwiftUI-Features nutzen sollen.
Warum ist das so wichtig? Sprachmodelle werden mit im Internet verfügbaren Informationen trainiert. Dort überwiegen aber veraltete Informationen, die sich auf ältere Swift/SwiftUI-Versionen beziehen. Deswegen ist der von KI-Sprachmodellen generierte Code oft sub-optimal. (Dass Apple den Coding-Agenten via MCP Zugriff auf die aktuelle Dokumentation gibt, hilft nicht viel. Die KI erkennt gar nicht die Notwendigkeit, dort nachzusehen.)
Es gibt im Internet mehrere Vorlagen für AGENTS.md/CLAUDE.md. Die beste stammt meiner Ansicht nach von Paul Hudson (Hacking with Swift):
Die Dateien .claude/CLAUDE.md bzw. .codex/AGENTS.md erfüllen die gleiche Funktion, aber auf Systemebene und losgelöst von Xcode. Dort durchgeführte Einstellungen gelten allerdings für ALLE Programmiersprachen. Insofern ist es keine gute Idee, hier Swift- oder Xcode-spezifische Anweisungen zu speichern.
Wenn die Dateien CLAUDE.md bzw. AGENTS.md auf mehreren Ebenen (System, Xcode, Projekt) existieren, werden alle Dateien berücksichtigt und kombiniert. Umso wichtiger ist es, die Dateien nicht unnötig aufzublähen.
Swift-spezifische Skills
Skills verfolgen die gleiche Idee wie AGENTS-Dateien, formulieren also Regeln im Markdown-Format. Aber während die AGENTS-Dateien immer berücksichtigt werden, werden Skills nur bei Bedarf ausgewertet. Beispielsweise kann ein Skill-Dateiset Refactoring-Regeln enthalten. Erst wenn Sie in einem Prompt explizit Refactoring erwähnen (manchmal müssen Sie ganz explizit auf den Skill hinweisen), werden die dort gespeicherten Zusatzregeln berücksichtigt. Skills können auch Anweisungen für den Aufruf externer Tools beinhalten. Das ist an dieser Stelle aber kein Thema.
In den letzten Monaten haben einige Blogger Skill-Sets für Swift und SwiftUI zusammengestellt (siehe die Links am Ende dieses Beitrags). Ich greife an dieser Stelle den besonders nützlichen Skill SwiftUI Pro heraus:
Dieser Skill ist dazu gedacht, um in vorhandenen SwiftUI-Projekten einen Code Review durchzuführen — wahlweise via Claude Code, Codex CLI oder Xcode. Das KI-Sprachmodell durchsucht den Code dann nach veraltetem Code und macht Verbesserungsvorschläge. Das funktioniert großartig!!
Ein konkretes Anwendungsbeispiel im Zusammenspiel mit Claude Code folgt gleich. Vorerst geht es aber um die Installation, bei der es mehrere Varianten gibt, je nachdem ob Sie den Skill in einer CLI (Claude Code, Codex CLI) oder direkt in Xcode nutzen möchten.
Beginnen wir mit der Installation für CLI-Tools: Dazu öffnen Sie ein Terminalfenster und wechseln in das Projektverzeichnis. (Das Installationskommando setzt Node.js voraus. Führen Sie gegebenenfalls vorher brew install node aus.)
cd my-swiftui-project
npx skills add https://github.com/twostraws/swiftui-agent-skill --skill swiftui-pro
Während der Installation werden Sie gefragt, welche KI-Tools/Agenten Sie verwenden (z.B. Antigravity, Claude Code, Codex, Cursor usw.). Das hat Einfluss auf den Installationsort. Viele KI-Tools berücksichtigen das Verzeichnis .agents/skills, aber manche Tools wollen ihr eigenes Verzeichnis (z.B. .agent/skills oder .claude/skills). Dort werden standardmäßig Links auf die Dateien in .agents eingerichtet.
Außerdem müssen Sie sich entscheiden, ob die Skills universell für alle Projekte gelten sollen (Installation relativ zum Home-Verzeichnis) oder nur für ein Projekt (Installation im Projekt-Verzeichnis). Vor allem wenn Sie auf Ihrem Rechner Projekte in verschiedenen Programmiersprachen entwickeln, ist die projektspezifische Installation sicherer.
Die Xcode-Installation ist leider etwas umständlicher. Ich gehe davon aus, dass Sie vorher eine CLI-Installation in ein Projektverzeichnis durchgeführt haben. Von dort kopieren Sie nun das gewünschte Skills-Unterverzeichnis in das passende Xcode-Verzeichnis:
# für Claude Code
mkdir -p ~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/skills
cd my-swiftui-project
cp -a .claude/skills/swiftui-pro ~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/skills
# für Codex
mkdir -p ~/Library/Developer/Xcode/CodingAssistant/codex/skills
cd my-swiftui-project
cp -a .agents/skills/swiftui-pro ~/Library/Developer/Xcode/CodingAssistant/codex/skills
Jetzt sollten Sie sich noch vergewissern, dass der neue Skill wirklich im KI-Agenten Ihrer Wahl innerhalb von Xcode verfügbar ist (hier für Claude Code).
Kontrolle der Installation eines Skills in das Xcode-Claude-Agent-Verzeichnis
Der Aufruf des Skills variiert je nach Coding-Agent:
Claude Agent:/swiftui-pro funktioniert nicht. (Dieses Claude-Code-Kommando klappt nur in der CLI.) Vielmehr müssen Sie in Xcode einen Prompt formulieren, der so ähnlich wie diese Anweisung aussieht: »Use the SwiftUI Pro skill to look for problems in this project.«
Codex:$swiftui-pro
Anwendungsbeispiel mit Claude Code
Im Folgenden gehe ich davon aus, dass Sie mit Claude Code arbeiten. Nach dem Start vergewissern Sie sich mit dem Kommando /skills, dass Claude die Skill-Regeln swiftui-pro kennt. Den Code Audit starten Sie nun mit /swiftui-pro (bzw. in Codex mit $swiftui-pro).
cd my-swiftui-project
claude
> /skills
...
> /swiftui-pro
...
Summary
1. Accessibility (high): Multiple icon-only buttons throughout
(PlanTabView:66, SettingsTabView:159, CategoriesView:23/37) are invisible
to VoiceOver. The CategoryHeader uses onTapGesture instead of Button, also
problematic for VoiceOver.
2. Deprecated API (high): foregroundColor() used in 6+ locations should be
foregroundStyle(). cornerRadius() used in 3 locations should be
clipShape(.rect(cornerRadius:)). tabItem() should be the modern Tab
API. .autocapitalization() should be .textInputAutocapitalization(). Style
struct instances (PlainButtonStyle(), etc.) should use static member
syntax.
3. Code organization (medium): Multiple type definitions per file throughout
the view layer (PlanTabView has 3 types, SettingsTabView has 3,
EditItemView has 3, CategoriesView has 2). Each should be in its own
file. The itemsForEach method returning some View should be a dedicated
View struct.
4. Data flow (medium): Category class is @Observable but missing
@MainActor. @State var vm in ShoppingTabView, PlanTabView, and
CategoriesView is not marked private.
5. Modern Swift (low): Use Date.now over Date(), URL.documentsDirectory over
FileManager lookups, !items.isEmpty over items.count > 0, modern ISO 8601
date parsing, and the Tab enum pattern for tab selection.
The review is complete above. Would you like me to fix any of these issues?
Alle Probleme auf einmal zu beheben ist keine gute Idee. Besser gehen Sie schrittweise vor und erstellen nach jedem Fix und dem nachfolgenden Test Ihrer App Xcode einen Commit.
> fix foregroundColor()
Done. Replaced all .foregroundColor() with .foregroundStyle() across 3 files:
- ContentView.swift - 4 occurrences (debug overlay text colors)
- PlanTabView.swift - 2 occurrences (toggle button labels)
- SettingsTabView.swift - 3 occurrences (error text, warning text, sync time indicator)
> ! git commit -a -m 'fixed foregroundColor -> foregroundStyle'
Start des Code ReviewsZusammenfassung der gefundenen ProblemeBehebung eines der festgestellten Probleme
Lesetipps
AGENT-Dateien und Skills bestehen aus Markdown-Dateien. Selbst wenn Sie keine KI-Tools verwenden wollen, lohnt sich die Lektüre dieser Regeldateien. Sie werden nirgendwo sonst so kompakte Regeln zur richtigen Swift/SwiftUI-Programmierung finden! Lesen Sie beispielsweise die Anweisungen zur richtigen Verwendung von Actors aus dem Concurrency-Skill von Paul Hudson.
Das Fedora Projekt denkt über einen neuen Umgang mit experimentellen Technologien nach. Projektleiter Jef Spaleta stellte eine Idee “A Technology Innovation Lifecycle Process for Fedora” vor, die mehr Raum für frische Konzepte schaffen soll. Ziel ist ein klarer Prozess, der Innovation fördert und zugleich verhindert, dass unfertige Funktionen vorschnell im System landen. Der Vorschlag entstand […]
KDE erhält weiteren Rückenwind aus der Open Source Welt. Nach einem starken Jahr mit hohen Spenden meldet das Projekt nun einen neuen Förderer. Die Rocky Enterprise Software Foundation unterstützt ab sofort die Arbeit von KDE. Die Organisation betreut Rocky Linux und sieht die Förderung anderer Gemeinschaften als wichtigen Teil ihrer Mission. Laut Mitgründer Brian Clemens […]
Canonical bringt mit Ubuntu 26.04 LTS einen lange vorbereiteten Dienst in die offiziellen Paketquellen. Der neue Dienst heißt Authd und soll den Umgang mit externen Identitätsanbietern deutlich vereinfachen. Bisher mussten Administratoren auf ein PPA ausweichen oder den Code selbst bauen. Authd ermöglicht Ubuntu Systemen die Anmeldung über Cloud Identitätsdienste mit modernen Standards wie OpenID Connect. […]