Coding & DevelopmentπŸ€–claude⌨️cursor🌐universal

glooit 🧴

🧴glooit keeps your AI agent rules, MCP, Skills & Commands configurations in perfect sync across Claude Code, Cursor, Roo Code, and other AI development tools.

Quick Start

Install this Skill

npx skills add nikuscs/glooit
# glooit 🧴

Sync AI coding assistant configurations across Claude Code, Cursor, Codex, OpenCode, and Roo Code/Cline.

- **Rules** - Agent instructions and guidelines
- **Commands** - Custom slash commands
- **Skills** - Reusable agent capabilities
- **Agents** - Custom agent definitions
- **MCP Servers** - Model Context Protocol configurations
- **Agent Hooks** - Lifecycle hooks for Claude Code and Cursor

## Why glooit?

Teams today use different AI coding assistants - some prefer Claude Code, others use Cursor, OpenCode, and CI/CD might run on Codex. Each tool has its own config format and location:

- Claude Code reads `CLAUDE.md`, commands in `.claude/commands/`, skills in `.claude/skills/`
- Cursor uses `.cursor/rules/*.mdc` with frontmatter, commands in `.cursor/commands/`
- OpenCode expects `AGENTS.md`, commands in `.opencode/command/`, agents in `.opencode/agent/`
- Codex expects `AGENTS.md`
- Roo Code/Cline looks in `.roo/rules/`

**glooit** lets you write your rules once and sync them everywhere. Perfect for:

- **Multi-agent teams** - Everyone uses their preferred AI assistant with consistent rules
- **Monorepos** - Different rules for different packages, all managed centrally
- **CI/CD pipelines** - Same rules in development and automation
- **Evolving tooling** - Switch or add AI assistants without rewriting configs

## Install

```bash
# Homebrew (macOS/Linux)
brew tap nikuscs/glooit https://github.com/nikuscs/glooit
brew install glooit

# npm
npm install -g glooit

# bun
bun install -g glooit

# pnpm
pnpm install -g glooit
```

## Quick Start

```bash
glooit init              # Create config
glooit sync              # Sync rules to all agents
```

## Configuration

Create `.agents/main.md` with your rules, then configure `glooit.config.ts`:

> Legacy support: `.glooit` is still supported. If `configDir` is not set, glooit will use `.agents` when present, otherwise it falls back to `.glooit`.

```typescript
import { defineRules } from 'glooit';

export default defineRules({
  rules: [
    {
      file: '.agents/main.md',
      to: './',
      targets: ['claude', 'cursor', 'codex']
    }
  ]
});
```

Run `glooit sync` (or `bunx glooit sync` / `npx glooit sync`) and it creates:

- `CLAUDE.md` for Claude Code
- `.cursor/rules/main.mdc` for Cursor
- `AGENTS.md` for Codex

## Supported Agents

| Agent | Output Path | Format |
|-------|-------------|--------|
| `claude` | `CLAUDE.md` | Markdown |
| `cursor` | `.cursor/rules/{name}.mdc` | Frontmatter |
| `codex` | `AGENTS.md` | Markdown |
| `opencode` | `AGENTS.md` | Markdown |
| `factory` | `AGENTS.md` | Markdown |
| `roocode` | `.roo/rules/{name}.md` | Markdown |
| `generic` | `{name}.md` | Markdown |

### Feature Support Matrix

| Feature     | Claude | Cursor | OpenCode | Codex | Factory | Roo Code/Cline | Generic |
|-------------|--------|--------|----------|-------|---------|----------------|---------|
| Rules       | βœ“      | βœ“      | βœ“        | βœ“     | βœ“       | βœ“              | βœ“       |
| Commands    | βœ“      | βœ“      | βœ“        | βœ“*    | -       | -              | -       |
| Skills      | βœ“      | βœ“      | βœ“**      | βœ“     | βœ“       | -              | -       |
| Agents      | βœ“      | βœ“      | βœ“        | -     | βœ“***    | -              | -       |
| MCP Servers | βœ“      | βœ“      | βœ“        | βœ“     | βœ“       | βœ“              | βœ“       |
| Hooks       | βœ“      | βœ“      | -        | -     | βœ“       | -              | -       |

*Codex uses `.codex/prompts` for commands
**OpenCode uses Claude-compatible skills path (`.claude/skills/`)
***Factory uses "droids" (`.factory/droids/`) for agents

## Features

### Custom Paths

Override output locations per-agent:

```typescript
{
  file: '.agents/backend.md',
  to: './',
  targets: [
    'claude',
    { name: 'cursor', to: './backend/.cursor/rules/api.mdc' }
  ]
}
```

### Directory Sync

Sync commands, skills, and agents directories at the top level:

```typescript
export default defineRules({
  rules: [...],

  // Simple string path (defaults to claude, cursor, opencode)
  commands: '.agents/commands',

  // Or with explicit targets
  skills: {
    path: '.agents/skills',
    targets: ['claude']
  },

  agents: {
    path: '.agents/agents',
    targets: ['claude', 'cursor']
  }
});
```

Output mappings:

- `commands` β†’ `.claude/commands`, `.cursor/commands`, `.opencode/command`, `.codex/prompts`
- `skills` β†’ `.claude/skills`, `.cursor/skills`, `.codex/skills`, `.factory/skills` (OpenCode uses `.claude/skills`)
- `agents` β†’ `.claude/agents`, `.cursor/agents`, `.opencode/agent`, `.factory/droids`

### Symlink Mode

Use symlinks instead of copying. This keeps your source of truth in `.agents` and updates targets instantly.

```typescript
export default defineRules({
  mode: 'symlink', // or 'copy'
  rules: [
    {
      file: '.agents/main.md',
      to: './',
      targets: ['claude', 'cursor']
    },
    {
      file: '.agents/codex.md',
      to: './',
      mode: 'copy', // per-rule override

... (truncated)
Repository
16stars
0forks
View on GitHub
Details
DiscoveredJan 19, 2026
Last UpdatedJan 19, 2026
Author@nikuscs
Quality Score
45/100