The Problem
Developers using AI coding agents (Claude Code, Cursor, Codex, Windsurf, Amp) accumulate skills and agent definitions scattered across per-tool dotfile directories. Each tool has its own format, location, and discovery mechanism. There is no unified way to browse, edit, or organize these files without digging through hidden directories.
What This Does
Chops is a native macOS app (SwiftUI, macOS 15+) that discovers, organizes, and edits AI agent skills across multiple tools. It scans each tool's directories, parses skill files (YAML frontmatter for most tools, .mdc format for Cursor via MDCParser.swift), and presents them in a three-column navigation interface with a built-in editor, full-text search, and collection-based organization.
The app also supports remote servers running OpenClaw or Hermes layouts via SSHService.swift, and includes a compose panel for testing skills against installed CLIs. The site/ directory contains an Astro-based marketing page.
How It Is Wired
Execution starts at Chops/App/ChopsApp.swift (@main), which sets up SwiftData and Sparkle auto-update. ContentView.swift builds the NavigationSplitView and kicks off scanning via AppState.swift. SkillScanner.swift probes tool directories defined in ToolSource.swift, parses files, and upserts records into SwiftData.
The import graph is minimal: 61 code files, 1 internal module, 0 circular dependencies. The most connected module is site/astro.config with zero inbound/outbound edges — the app is effectively a flat Swift codebase. Key services:
SkillScanner.swift— filesystem probe, upserts into SwiftDataSkillParser.swift— dispatches toFrontmatterParserorMDCParserFileWatcher.swift— FSEvents listener triggering re-scans on disk changesSearchService.swift— in-memory full-text searchAgentFactory.swift— instantiates CLI agents (Claude, Codex) for the compose panel
The wiring has not been fully mapped for this repository — the analysis found only one internal module with no edges, so the actual inter-file call graph is not captured. The README's project structure is the best available map.
How To Use It
Setup — requires macOS 15, Xcode command-line tools, Homebrew, and xcodegen:
git clone https://github.com/Shpigford/chops.git
cd chops
brew install xcodegen # skip if already installed
xcodegen generate # generates Chops.xcodeproj from project.yml
open Chops.xcodeproj # opens in Xcode
Configuration — .env.example exists but no runtime env vars are documented. Chops.entitlements disables the sandbox intentionally (needed for file watching and CLI execution). The Xcode project is generated from project.yml; edit that, not the .xcodeproj directly.
Running — hit Cmd+R in Xcode, or build via CLI:
xcodebuild -scheme Chops -configuration Debug build
Real-World Use
A developer with skills scattered across Claude Code (~/.claude/skills/), Cursor (.cursor/rules/), and Codex can launch Chops, see all skills in a unified list, edit frontmatter in the built-in editor (Cmd+S saves), organize them into collections without touching source files, and test a skill against the installed Claude CLI via the compose panel. File changes on disk trigger an FSEvents re-scan, so the UI stays current.
Code Health & Issues
Static analysis of 61 code files found 8 high and 23 medium findings, 4 distinct kinds:
- High — deep nesting (21 instances):
MarkdownSyntaxHighlighter.swift,SettingsView.swift,ComposePanel.swifthit indentation depth 8. Fix: early returns, guard clauses, extract inner blocks. - High — duplicated code blocks: 100 repeated 6-line blocks across 5 files including
ClaudeCLIAgent.swift,CodexCLIAgent.swift,SkillDetailView.swift,SkillListView.swift. Fix: extract shared helpers. - Medium — oversized file:
ComposePanel.swiftat 1,023 lines. Fix: split by responsibility. - Medium — high branching density (8 instances):
AgentConfiguration.swift,ToolSource.swift,AgentLogger.swiftaverage 20 branch points over 70 lines. Fix: table/strategy dispatch.
SDLC observations: no test files, no CI configuration, no Dependabot config. A regression ships undetected. Add a test suite and a build/test workflow on push and pull_request.
The Bottom Line
A well-structured macOS app solving a real problem for multi-tool AI agent users. The Swift codebase is cleanly separated by responsibility, but the lack of tests and CI is a genuine risk for a project at this scale. Worth using if you juggle multiple agent CLIs; worth contributing to if you want a reliable skill management layer.