Skip to main content

CLI tool to install complete AI agent configuration bundles from any git repository

Project description

agentfish ๐Ÿ 

Install complete AI agent configuration bundles from any git repository.

Like skillfish but for full agent configs โ€” not just skills.

What it does

agentfish discovers and installs AI coding agent configuration files from any git repository into your project. It automatically detects which AI coding agents you have installed (globally and per-project) and only installs config files for those agents.

While skillfish manages individual skills (SKILL.md files), agentfish manages complete agent configuration bundles โ€” the full set of instruction files, rules, and agent definitions that make AI coding assistants work well in a project.

Quick Start

# Install with uvx (no install needed)
uvx agentfish add owner/repo

# Or install globally
pip install agentfish
agentfish add owner/repo

One command discovers all agent config files in the source repo, detects which agents you use, and installs only the relevant files.

Agent Detection

agentfish automatically detects 20+ AI coding agents by checking for their configuration directories and files โ€” both globally (~/) and in the current project:

# See which agents are detected
agentfish detect
       Detected AI coding agents
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Agent          โ”ƒ  Global  โ”ƒ Project  โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ Claude Code    โ”‚    โœ“     โ”‚    โœ“     โ”‚
โ”‚ GitHub Copilot โ”‚    โœ“     โ”‚    โ€“     โ”‚
โ”‚ Cursor         โ”‚    โ€“     โ”‚    โœ“     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

When you run add, update, or install, agentfish:

  1. Detects your installed agents automatically
  2. Shows all discovered files with their agent ownership
  3. Installs only files for detected agents + universal files (like AGENTS.md)
  4. Skips files for agents you don't use

Use --all-agents / -a to bypass detection and install everything:

agentfish add owner/repo --all-agents

No Agents? Initialize One

When no agents are detected, agentfish offers to initialize one for you:

No AI coding agents detected.
Would you like to initialize an agent for this project? [Y/n]: y

       Available agents
โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ #   โ”ƒ Agent          โ”ƒ Config Dir   โ”ƒ
โ”กโ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1   โ”‚ Claude Code    โ”‚ .claude      โ”‚
โ”‚ 2   โ”‚ Cursor         โ”‚ .cursor      โ”‚
โ”‚ 3   โ”‚ GitHub Copilot โ”‚ .github      โ”‚
โ”‚ ... โ”‚ ...            โ”‚ ...          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Enter agent numbers to initialize (comma-separated, e.g. 1,3,5): 1,3
  โœ“ Created .claude/CLAUDE.md
  โœ“ Created .github/copilot-instructions.md

This creates starter config files for the selected agents, making them detectable for future installs.

Detected Agents

Agent Config Files Global Detection Project Detection
Claude Code CLAUDE.md, .claude/settings.json, .claude/rules/, .claude/agents/ ~/.claude/ .claude/, CLAUDE.md
Cursor .cursor/rules/*.mdc (MDC format with YAML frontmatter) ~/.cursor/ .cursor/, .cursorrules
GitHub Copilot .github/copilot-instructions.md, .github/agents/*.agent.md, .github/instructions/*.instructions.md ~/.copilot/ .github/copilot-instructions.md, .github/agents/
Windsurf .windsurf/rules/*.md, .windsurf/workflows/*.md, .windsurfrules ~/.codeium/windsurf/ .windsurf/, .windsurfrules
Continue.dev .continue/config.yaml, .continue/rules/*.md ~/.continue/ .continue/
Codex .codex/config.toml (TOML), AGENTS.md (instructions) ~/.codex/ .codex/
Gemini CLI GEMINI.md, .gemini/settings.json, .geminiignore ~/.gemini/ .gemini/, GEMINI.md
OpenCode opencode.json, .opencode/agents/, .opencode/commands/ ~/.config/opencode/ .opencode/, opencode.json
Goose .goosehints (supports @file imports) ~/.config/goose/ .goosehints
Cline .clinerules/*.md (optional YAML frontmatter with paths:) ~/Documents/Cline/Rules/ .clinerules/
Roo Code .roo/rules/, .roo/rules-{mode}/ (code, architect, debug) ~/.roo/ .roo/, .roorules
Kilo Code kilo.jsonc, .kilo/rules/*.md, .kilo/agents/ ~/.config/kilo/ .kilo/, kilo.jsonc
Kiro .kiro/steering/*.md, .kiro/specs/, .kiro/hooks/ ~/.kiro/ .kiro/
Aider .aider.conf.yml (YAML), .aiderignore ~/.aider.conf.yml .aider.conf.yml
Junie .junie/guidelines.md โ€” .junie/
Amp AGENTS.md (hierarchical, cwd + parents) ~/.config/amp/ AGENTS.md
Trae .trae/rules/*.md ~/.trae/ .trae/
Augment .augment/rules/*.md (YAML frontmatter: type, description) ~/.augment/ .augment/

Creating an Agent Config Bundle

Any git repository can be an agentfish-compatible bundle. There's no special marker file needed โ€” agentfish auto-discovers standard agent configuration files.

Step 1: Create your repo

Create a new git repository (GitHub, Azure DevOps, GitLab, or any git host):

mkdir my-agent-configs
cd my-agent-configs
git init

Step 2: Add agent config files

Add any combination of the supported files. You don't need all of them โ€” add only what you need:

my-agent-configs/
โ”œโ”€โ”€ CLAUDE.md                        # Claude Code instructions (project root)
โ”œโ”€โ”€ GEMINI.md                        # Gemini CLI instructions (project root)
โ”œโ”€โ”€ AGENTS.md                        # Universal instructions (any agent)
โ”œโ”€โ”€ .claude/
โ”‚   โ”œโ”€โ”€ settings.json                # Claude Code settings
โ”‚   โ””โ”€โ”€ rules/                       # Claude Code scoped rules
โ”‚       โ””โ”€โ”€ security.md
โ”œโ”€โ”€ .cursor/
โ”‚   โ””โ”€โ”€ rules/                       # Cursor rules (MDC format)
โ”‚       โ””โ”€โ”€ project.mdc
โ”œโ”€โ”€ .github/
โ”‚   โ”œโ”€โ”€ copilot-instructions.md      # GitHub Copilot instructions
โ”‚   โ”œโ”€โ”€ agents/                      # Copilot agent definitions
โ”‚   โ”‚   โ””โ”€โ”€ CodeReview.agent.md
โ”‚   โ””โ”€โ”€ instructions/                # Copilot scoped instructions
โ”‚       โ””โ”€โ”€ python.instructions.md
โ”œโ”€โ”€ .windsurf/
โ”‚   โ””โ”€โ”€ rules/                       # Windsurf Cascade rules
โ”‚       โ””โ”€โ”€ project.md
โ”œโ”€โ”€ .continue/
โ”‚   โ””โ”€โ”€ rules/                       # Continue.dev rules
โ”‚       โ””โ”€โ”€ project.md
โ”œโ”€โ”€ .clinerules/                     # Cline rules
โ”‚   โ””โ”€โ”€ project.md
โ”œโ”€โ”€ .roo/
โ”‚   โ””โ”€โ”€ rules/                       # Roo Code rules (all modes)
โ”‚       โ””โ”€โ”€ project.md
โ”œโ”€โ”€ .aider.conf.yml                  # Aider configuration
โ”œโ”€โ”€ .goosehints                      # Goose context hints
โ””โ”€โ”€ .junie/
    โ””โ”€โ”€ guidelines.md                # Junie guidelines

Step 3: Write your instructions

Each file contains instructions specific to its agent. A common pattern is to write the main instructions in one file (e.g. .claude/CLAUDE.md) and have other agent files reference it:

CLAUDE.md (project root) โ€” your main, detailed instructions:

# Project Guidelines

## Build & Test Commands

- Install: `npm install`
- Test: `npm test`
- Lint: `npm run lint`
- Build: `npm run build`

## Architecture

- Use repository pattern for data access
- Keep controllers thin
- Business logic goes in services

## Coding Standards

- TypeScript strict mode
- Follow ESLint rules
- Write tests for all new code

.github/copilot-instructions.md โ€” always loaded by Copilot:

# Copilot Instructions

For comprehensive guidelines, refer to [CLAUDE.md](../CLAUDE.md).

## Quick Reference
- TypeScript strict mode
- ESLint compliance required
- Jest for unit tests, Cypress for E2E

.cursor/rules/project.mdc โ€” MDC format with YAML frontmatter:

---
description: Project-wide coding standards
globs:
alwaysApply: true
---

# Project Rules

Refer to CLAUDE.md for full guidelines.
- TypeScript strict mode
- Repository pattern for data access
- Tests required for all new code

Step 4: Add Copilot Agents (optional)

If you use GitHub Copilot coding agent, you can include reusable agent definitions in .github/agents/:

.github/agents/CodeReview.agent.md (requires .agent.md suffix):

---
description: Reviews pull requests for quality and security
tools:
  - github
---

## Code Review Agent

You review pull requests for quality, security, and adherence to project standards.

### Checklist
- [ ] Code follows project style guide
- [ ] Tests are included
- [ ] No security vulnerabilities introduced
- [ ] Documentation updated if needed

Step 5: Push and share

git add -A
git commit -m "Add agent config bundle"
git remote add origin https://github.com/yourname/my-agent-configs.git
git push -u origin main

Now anyone can install your configs:

uvx agentfish add yourname/my-agent-configs

Using a branch

You can keep agent configs on a specific branch. This is useful for maintaining different configs for different purposes in the same repo:

uvx agentfish add yourname/my-repo#my-branch

Supported Agent Config Files

agentfish auto-discovers these files in source repositories:

Path Agent
CLAUDE.md, CLAUDE.local.md Claude Code
.claude/**/* Claude Code (settings, rules, agents, commands, skills)
.cursorrules Cursor (legacy)
.cursor/rules/**/*.mdc Cursor rules (MDC format)
.github/copilot-instructions.md GitHub Copilot
.github/copilot-setup-steps.yml GitHub Copilot setup
.github/agents/*.md, *.agent.md GitHub Copilot Agents
.github/instructions/*.instructions.md GitHub Copilot scoped instructions
.github/prompts/*.prompt.md GitHub Copilot prompts
.windsurf/rules/**/* Windsurf rules
.windsurf/workflows/**/* Windsurf workflows
.windsurfrules Windsurf (legacy flat file)
.continue/config.yaml, .continue/config.json Continue.dev config
.continue/rules/**/* Continue.dev rules
.codex/config.toml Codex configuration
GEMINI.md Gemini CLI
.gemini/settings.json Gemini CLI settings
.geminiignore Gemini CLI ignore file
opencode.json OpenCode config
.opencode/**/* OpenCode (agents, commands)
.goosehints Goose
.clinerules/**/* Cline rules
.roo/**/* Roo Code rules
.roorules Roo Code (legacy flat file)
kilo.jsonc Kilo Code manifest
.kilo/**/* Kilo Code (rules, agents)
.kiro/**/* Kiro (steering, specs, hooks)
.aider.conf.yml Aider config
.aiderignore Aider ignore file
.junie/**/* Junie guidelines
.trae/rules/**/* Trae rules
.augment/rules/**/* Augment rules
augment-guidelines.md Augment (legacy)
.amprules Amp rules
AGENTS.md Universal (any agent)

Commands

add

Install agent configs from a git repository. Auto-detects agents first and only installs relevant files.

agentfish add owner/repo                    # GitHub shorthand
agentfish add owner/repo#branch             # Specific branch
agentfish add https://github.com/owner/repo # Full URL
agentfish add https://dev.azure.com/org/project/_git/repo  # Azure DevOps
agentfish add https://gitlab.com/owner/repo # GitLab
agentfish add owner/repo --name my-configs  # Custom name
agentfish add owner/repo --yes              # Skip prompts
agentfish add owner/repo --all-agents       # Install for all agents

detect

Show which AI coding agents are detected on your system and in the current project. If none are found, offers to initialize one.

agentfish detect

list

View installed agent config bundles.

agentfish list

remove

Remove an installed bundle.

agentfish remove my-configs                 # Remove from manifest only
agentfish remove my-configs --delete-files   # Also delete the files
agentfish remove my-configs --yes            # Skip confirmation

update

Update installed configs from their source repos.

agentfish update                             # Update all
agentfish update my-configs                  # Update specific bundle
agentfish update --yes                       # Skip prompts
agentfish update --all-agents                # Update for all agents

init

Create an empty .agentfish.json manifest.

agentfish init

bundle

Scan current project for agent config files and create a manifest.

agentfish bundle

install

Install all things listed in .agentfish.json manifest.

agentfish install                            # Install from manifest
agentfish install --yes                      # Skip prompts
agentfish install --all-agents               # Install for all agents

Team Sync

Share agent configs across your team using the manifest:

  1. Add configs to your project:

    agentfish add yourorg/shared-agent-configs
    
  2. Commit the .agentfish.json manifest to your project repo.

  3. Team members run:

    agentfish install
    

This keeps everyone's agent configs in sync, similar to how package.json + npm install works.


Repo Reference Formats

agentfish works with any git-cloneable repository:

# GitHub (shorthand)
agentfish add owner/repo
agentfish add owner/repo#branch

# GitHub (full URL)
agentfish add https://github.com/owner/repo

# Azure DevOps
agentfish add https://dev.azure.com/org/project/_git/repo
agentfish add https://user@dev.azure.com/org/project/_git/repo#branch

# GitLab
agentfish add https://gitlab.com/owner/repo

# Any git host
agentfish add https://git.example.com/owner/repo.git

Manifest Format

.agentfish.json tracks what's installed:

{
  "version": "1.0",
  "things": [
    {
      "name": "my-agent-configs",
      "source": "https://github.com/owner/repo.git",
      "branch": "main",
      "sha": "abc123def456",
      "installed_at": "2025-06-01T10:30:00+00:00",
      "files": [
        ".claude/CLAUDE.md",
        ".cursor/rules",
        ".github/copilot-instructions.md",
        ".github/agents/CodeReview.md"
      ]
    }
  ]
}

Security

  • Path validation: agentfish rejects paths containing .. or symlinks that escape the project directory
  • Shallow clones: source repos are cloned with --depth=1 and deleted after installation
  • Conflict prompts: existing files are never silently overwritten (unless --yes is used)

Adding a New Agent

To add support for a new AI coding agent, append an AgentConfig to AGENT_CONFIGS in src/agentfish/agents.py:

AgentConfig(
    name="My New Agent",
    config_dir=".mynewagent",
    home_paths=(".mynewagent",),           # paths under ~/ for global detection
    cwd_paths=(".mynewagent",),            # paths under ./ for project detection
    file_patterns=(".mynewagent/",),       # patterns this agent owns (for filtering)
    init_files={                           # files created by `agentfish detect` init
        ".mynewagent/instructions.md": "# My New Agent\n\nInstructions here.\n",
    },
)

That's it โ€” the new agent will automatically work with detection, filtering, and initialization.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentfish-0.4.0.tar.gz (30.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentfish-0.4.0-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

Details for the file agentfish-0.4.0.tar.gz.

File metadata

  • Download URL: agentfish-0.4.0.tar.gz
  • Upload date:
  • Size: 30.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agentfish-0.4.0.tar.gz
Algorithm Hash digest
SHA256 fcb30a7aa2d87a94db6dd3f1fb331dde8eba89a31711e54baabba23185eafe9c
MD5 819cb73b9ea4d53f386dc8f4a3840455
BLAKE2b-256 f24db09d4ec1bbe19b918e083fb5ce25d200aac16d16e7158c473db62d2d8a90

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentfish-0.4.0.tar.gz:

Publisher: publish.yml on pimentelleo/agentfish

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agentfish-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: agentfish-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 21.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agentfish-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 560096465f14584fb8fcecaef9281353988b5c574fd7bbf2ff317d45da7cd381
MD5 99e01a2ffc54004777bcdc5dafe7dec8
BLAKE2b-256 df56fe1616ad4fbf0bf5abc2c4bd942b41b71a1afb6f94f99d38fb9462d0ebf8

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentfish-0.4.0-py3-none-any.whl:

Publisher: publish.yml on pimentelleo/agentfish

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page