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:
- Detects your installed agents automatically
- Shows all discovered files with their agent ownership
- Installs only files for detected agents + universal files (like
AGENTS.md) - 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:
-
Add configs to your project:
agentfish add yourorg/shared-agent-configs
-
Commit the
.agentfish.jsonmanifest to your project repo. -
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=1and deleted after installation - Conflict prompts: existing files are never silently overwritten (unless
--yesis 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcb30a7aa2d87a94db6dd3f1fb331dde8eba89a31711e54baabba23185eafe9c
|
|
| MD5 |
819cb73b9ea4d53f386dc8f4a3840455
|
|
| BLAKE2b-256 |
f24db09d4ec1bbe19b918e083fb5ce25d200aac16d16e7158c473db62d2d8a90
|
Provenance
The following attestation bundles were made for agentfish-0.4.0.tar.gz:
Publisher:
publish.yml on pimentelleo/agentfish
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentfish-0.4.0.tar.gz -
Subject digest:
fcb30a7aa2d87a94db6dd3f1fb331dde8eba89a31711e54baabba23185eafe9c - Sigstore transparency entry: 1646007300
- Sigstore integration time:
-
Permalink:
pimentelleo/agentfish@3985af83d7fe046c8950132cb10f6fb36a8acc82 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/pimentelleo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3985af83d7fe046c8950132cb10f6fb36a8acc82 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
560096465f14584fb8fcecaef9281353988b5c574fd7bbf2ff317d45da7cd381
|
|
| MD5 |
99e01a2ffc54004777bcdc5dafe7dec8
|
|
| BLAKE2b-256 |
df56fe1616ad4fbf0bf5abc2c4bd942b41b71a1afb6f94f99d38fb9462d0ebf8
|
Provenance
The following attestation bundles were made for agentfish-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on pimentelleo/agentfish
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentfish-0.4.0-py3-none-any.whl -
Subject digest:
560096465f14584fb8fcecaef9281353988b5c574fd7bbf2ff317d45da7cd381 - Sigstore transparency entry: 1646007437
- Sigstore integration time:
-
Permalink:
pimentelleo/agentfish@3985af83d7fe046c8950132cb10f6fb36a8acc82 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/pimentelleo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3985af83d7fe046c8950132cb10f6fb36a8acc82 -
Trigger Event:
release
-
Statement type: