Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Chops Ai Skills Manager

CSecurity

> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection. Chops is a native macOS app (SwiftUI + SwiftData) that discovers, organizes, and edits AI coding agent skill files across Claude Code, Cursor, Codex, Windsurf, Copilot, Aider, and Amp — all in one place, with real-time file watching, full-text search, and a built-in markdown editor.

81 stars
0 votes
0 copies
0 views
Added 9/19/2026
ai-agentsgoswiftbashgitsecurity

Works with

claude codecursorterminalcli

Security Analysis

C69/100
mediumUses curl or wget to download content
highPerforms destructive filesystem operations
mediumInstalls packages at runtime which could introduce malicious dependencies

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add reason-machines/trending-skills --skill chops-ai-skills-manager --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Chops Ai Skills Manager?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Chops Ai Skills Manager
[![Security: C — Skills Directory](https://www.skillsdirectory.com/api/skills/reason-machines-chops-ai-skills-manager/badge)](https://www.skillsdirectory.com/skills/reason-machines-chops-ai-skills-manager)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
```markdown
---
name: chops-ai-skills-manager
description: macOS app to browse, edit, and manage AI agent skills across Claude Code, Cursor, Codex, Windsurf, and Amp
triggers:
  - manage my AI agent skills
  - organize claude code skills
  - add a new skill to cursor
  - browse skills across AI tools
  - edit my agent skills files
  - set up chops on my mac
  - create a new skill file
  - sync skills between AI coding tools
---

# Chops — AI Agent Skills Manager

> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.

Chops is a native macOS app (SwiftUI + SwiftData) that discovers, organizes, and edits AI coding agent skill files across Claude Code, Cursor, Codex, Windsurf, Copilot, Aider, and Amp — all in one place, with real-time file watching, full-text search, and a built-in markdown editor.

## Installation

### Download the App

```bash
# Direct download
curl -L https://github.com/Shpigford/chops/releases/latest/download/Chops.dmg -o Chops.dmg
open Chops.dmg
```

Or visit [chops.md](https://chops.md) and click Download.

### Build from Source

**Prerequisites:**
- macOS 15 (Sequoia) or later
- Xcode with command-line tools
- Homebrew

```bash
# Install dependencies
xcode-select --install
brew install xcodegen

# Clone and build
git clone https://github.com/Shpigford/chops.git
cd chops
xcodegen generate        # generates Chops.xcodeproj from project.yml
open Chops.xcodeproj     # then press Cmd+R to build and run
```

### CLI Build (Headless)

```bash
xcodebuild -scheme Chops -configuration Debug build
```

> **Note:** The `.xcodeproj` is generated from `project.yml`. Always edit `project.yml` and re-run `xcodegen generate` — never edit `.xcodeproj` directly.

## Where Skills Live

Chops scans these directories automatically:

| Tool | Scanned Paths |
|------|--------------|
| Claude Code | `~/.claude/skills/`, `~/.agents/skills` |
| Cursor | `~/.cursor/skills/`, `~/.cursor/rules` |
| Windsurf | `~/.codeium/windsurf/memories/`, `~/.windsurf/rules` |
| Codex | `~/.codex` |
| Amp | `~/.config/amp` |

Copilot and Aider only detect project-level skills (no global paths). Custom paths can be added per tool in Settings.

## Skill File Format

Skills are Markdown files with YAML frontmatter:

```markdown
---
name: my-skill-name
description: One-line description of what this skill does
triggers:
  - phrase users might say
  - another trigger phrase
  - add 6-8 total triggers
---

# Skill Title

Main skill content in Markdown...
```

Cursor uses `.mdc` files with the same frontmatter format. Chops handles both automatically.

## Key Features

### Multi-Tool Support
Chops reads and writes skills for all major AI coding agents. Skills are deduplicated by resolved symlink path — symlinked files appear once with multiple tool badges.

### Built-in Editor
- Monospaced `NSTextView`-based editor
- **Cmd+S** to save
- Frontmatter is parsed and displayed as structured metadata
- Changes are written directly to the source `.md` or `.mdc` file

### Collections
Group skills logically without moving or modifying source files. Collections are stored in SwiftData, not on disk.

### Real-Time File Watching
FSEvents-based watcher detects disk changes instantly and triggers a re-scan. No manual refresh needed.

### Full-Text Search
Search across skill name, description, and full content simultaneously.

### Remote Skill Servers
Connect to remote servers (e.g., [OpenClaw](https://openclaw.ai)) to discover, browse, and install community skills.

## Project Structure

```
Chops/
├── App/
│   ├── ChopsApp.swift         # @main — SwiftData ModelContainer + Sparkle updater
│   ├── AppState.swift          # @Observable singleton — all UI state
│   └── ContentView.swift       # Three-column NavigationSplitView
├── Models/
│   ├── Skill.swift             # @Model — a discovered skill file
│   ├── Collection.swift        # @Model — user-created groupings
│   └── ToolSource.swift        # Enum of tools, their paths and icons
├── Services/
│   ├── SkillScanner.swift      # Probes directories, upserts skills into SwiftData
│   ├── SkillParser.swift       # Routes to FrontmatterParser or MDCParser
│   ├── FileWatcher.swift       # FSEvents listener → triggers re-scan
│   └── SearchService.swift     # In-memory full-text search
├── Utilities/
│   ├── FrontmatterParser.swift # Extracts YAML frontmatter from .md files
│   └── MDCParser.swift         # Parses Cursor .mdc files
└── Views/
    ├── Sidebar/                # Tool filters, collection list
    ├── Detail/                 # Skill editor, metadata display
    ├── Settings/               # Preferences & Sparkle update UI
    └── Shared/                 # ToolBadge, NewSkillSheet, etc.
```

## Development: Common Tasks

### Add a New Tool

Edit `Chops/Models/ToolSource.swift`:

```swift
enum ToolSource: String, CaseIterable, Codable {
    // ... existing cases ...
    case myNewTool

    var displayName: String {
        switch self {
        case .myNewTool: return "My New Tool"
        // ...
        }
    }

    var globalPaths: [String] {
        switch self {
        case .myNewTool: return ["~/.mynewtools/skills"]
        // ...
        }
    }

    var color: Color {
        switch self {
        case .myNewTool: return .purple
        // ...
        }
    }

    var iconName: String {
        switch self {
        case .myNewTool: return "wand.and.stars"
        // ...
        }
    }

    // Optional: return asset name if you add a logo to the asset catalog
    var logoAssetName: String? {
        switch self {
        case .myNewTool: return "MyNewToolLogo"
        default: return nil
        }
    }
}
```

If the tool uses a non-standard file layout, also update `Chops/Services/SkillScanner.swift`.

### Add Custom Frontmatter Parsing

Edit `Chops/Utilities/FrontmatterParser.swift`:

```swift
struct FrontmatterParser {
    static func parse(_ content: String) -> (metadata: [String: Any], body: String) {
        // Frontmatter is delimited by --- on its own line
        // Returns structured metadata dict + remaining markdown body
        guard content.hasPrefix("---") else {
            return ([:], content)
        }
        // ... parsing logic
    }
}
```

### Support a New File Extension

Edit `Chops/Services/SkillParser.swift` to add dispatch logic:

```swift
static func parse(fileURL: URL) -> SkillMetadata {
    switch fileURL.pathExtension {
    case "mdc":
        return MDCParser.parse(fileURL: fileURL)
    case "md", "markdown":
        return FrontmatterParser.parse(fileURL: fileURL)
    case "txt":
        // Add handling for plain text skills
        return PlainTextParser.parse(fileURL: fileURL)
    default:
        return SkillMetadata(name: fileURL.lastPathComponent)
    }
}
```

### Modify the UI Layout

The main layout is a three-column `NavigationSplitView` in `Chops/App/ContentView.swift`:

```swift
NavigationSplitView {
    SidebarView()           // Column 1: tool filters + collections
} content: {
    SkillListView()         // Column 2: filtered/searched skill list
} detail: {
    SkillDetailView()       // Column 3: editor + metadata
}
```

### State Management

`AppState` is the single source of truth for all UI state:

```swift
@Observable
class AppState {
    var selectedTool: ToolSource?     // current sidebar filter
    var selectedSkill: Skill?         // currently open skill
    var searchText: String = ""       // full-text search query
    var sidebarMode: SidebarMode      // .tools or .collections
}
```

Access it in any view via `@Environment`:

```swift
struct MyView: View {
    @Environment(AppState.self) var appState

    var body: some View {
        Text("Searching: \(appState.searchText)")
    }
}
```

## Creating a Skill for Your Own Project

If your project is used with Chops-supported AI tools, create a skill file so agents have instant context:

```bash
# For Claude Code
mkdir -p .claude/skills
cat > .claude/skills/setup.md << 'EOF'
---
name: my-project-setup
description: Architecture and key patterns for MyProject
triggers:
  - how does myproject work
  - set up myproject
  - myproject architecture
---

# MyProject

[Describe your project here for AI agents]
EOF
```

Chops will automatically discover and display this skill.

## Troubleshooting

### App Can't Find My Skills
- Verify the skill files exist at the expected paths (see table above)
- Check that file extensions are `.md` or `.mdc`
- Use **File → Rescan** or restart the app to force a fresh scan
- Chops disables the macOS sandbox intentionally for unrestricted `~/` access — if you built from source, confirm `Chops.entitlements` has `com.apple.security.app-sandbox` set to `false`

### Skills Not Updating After Edit
- The FSEvents watcher should catch changes automatically
- If it doesn't, save the file again or trigger a rescan
- Ensure the file is in a directory Chops watches (custom paths can be added in Settings)

### Frontmatter Not Parsed
- Ensure the file starts with `---` on the very first line (no leading whitespace or BOM)
- YAML must be valid — test with a YAML linter
- Cursor `.mdc` files use the same frontmatter format but a different parser — ensure the extension is correct

### Build Fails After Pulling Changes
```bash
# Regenerate the Xcode project after any project.yml changes
xcodegen generate
```

### Sparkle Update Issues
Sparkle is pulled automatically via Swift Package Manager. If SPM resolution fails:
```bash
# In Xcode: File → Packages → Reset Package Caches
# Or from terminal:
rm -rf ~/Library/Caches/org.swift.swiftpm
xcodebuild -resolvePackageDependencies
```

## Website (Marketing Site)

```bash
cd site
npm install       # first time only
npm run dev       # local dev server at localhost:4321
npm run build     # production build → site/dist/
```

Built with [Astro 6](https://astro.build/).

## Architecture Notes

- **No sandbox** — Required for reading dotfiles across `~/`. Intentional and documented in `Chops.entitlements`.
- **Dedup via symlinks** — Skills identified by resolved symlink path; same file in multiple tool dirs = one skill, multiple tool badges.
- **No automated tests** — Validate manually: build → trigger feature → observe result → test edge cases.
- **SwiftData persistence** — `Skill` and `SkillCollection` models are persisted; scanning upserts (never duplicates) discovered skills.
```

Attribution

reason-machinesreason-machines
View sourceMore from reason-machines →
SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Related Skills

Caveman

Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.

1023331 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

686011 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3331 votes

catchup

Recovers prior coding-agent session context by running `catchup <agent> --since-compact`, which extracts a clean summary of a previous Codex, Claude Code, Antigravity, OpenCode, or Pi Agent session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", or asks to recover/summarize a previous session before continuing. Do NOT use for the current conversation, git history, or any non-agent log.

611 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →