@googlarz/agents-sync 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +366 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +237 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/loader.d.ts +9 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +55 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +69 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +33 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/derivers/aider.d.ts +19 -0
- package/dist/derivers/aider.d.ts.map +1 -0
- package/dist/derivers/aider.js +117 -0
- package/dist/derivers/aider.js.map +1 -0
- package/dist/derivers/claude.d.ts +19 -0
- package/dist/derivers/claude.d.ts.map +1 -0
- package/dist/derivers/claude.js +41 -0
- package/dist/derivers/claude.js.map +1 -0
- package/dist/derivers/cline.d.ts +17 -0
- package/dist/derivers/cline.d.ts.map +1 -0
- package/dist/derivers/cline.js +92 -0
- package/dist/derivers/cline.js.map +1 -0
- package/dist/derivers/copilot.d.ts +16 -0
- package/dist/derivers/copilot.d.ts.map +1 -0
- package/dist/derivers/copilot.js +162 -0
- package/dist/derivers/copilot.js.map +1 -0
- package/dist/derivers/cursor.d.ts +16 -0
- package/dist/derivers/cursor.d.ts.map +1 -0
- package/dist/derivers/cursor.js +121 -0
- package/dist/derivers/cursor.js.map +1 -0
- package/dist/derivers/gemini.d.ts +19 -0
- package/dist/derivers/gemini.d.ts.map +1 -0
- package/dist/derivers/gemini.js +33 -0
- package/dist/derivers/gemini.js.map +1 -0
- package/dist/derivers/index.d.ts +33 -0
- package/dist/derivers/index.d.ts.map +1 -0
- package/dist/derivers/index.js +124 -0
- package/dist/derivers/index.js.map +1 -0
- package/dist/derivers/merger.d.ts +36 -0
- package/dist/derivers/merger.d.ts.map +1 -0
- package/dist/derivers/merger.js +83 -0
- package/dist/derivers/merger.js.map +1 -0
- package/dist/derivers/roo.d.ts +18 -0
- package/dist/derivers/roo.d.ts.map +1 -0
- package/dist/derivers/roo.js +92 -0
- package/dist/derivers/roo.js.map +1 -0
- package/dist/derivers/windsurf.d.ts +16 -0
- package/dist/derivers/windsurf.d.ts.map +1 -0
- package/dist/derivers/windsurf.js +91 -0
- package/dist/derivers/windsurf.js.map +1 -0
- package/dist/extractor/extractor.d.ts +4 -0
- package/dist/extractor/extractor.d.ts.map +1 -0
- package/dist/extractor/extractor.js +117 -0
- package/dist/extractor/extractor.js.map +1 -0
- package/dist/extractor/schema.d.ts +187 -0
- package/dist/extractor/schema.d.ts.map +1 -0
- package/dist/extractor/schema.js +44 -0
- package/dist/extractor/schema.js.map +1 -0
- package/dist/generator/agents-md.d.ts +3 -0
- package/dist/generator/agents-md.d.ts.map +1 -0
- package/dist/generator/agents-md.js +127 -0
- package/dist/generator/agents-md.js.map +1 -0
- package/dist/generator/validator.d.ts +7 -0
- package/dist/generator/validator.d.ts.map +1 -0
- package/dist/generator/validator.js +67 -0
- package/dist/generator/validator.js.map +1 -0
- package/dist/lib/claude-client.d.ts +11 -0
- package/dist/lib/claude-client.d.ts.map +1 -0
- package/dist/lib/claude-client.js +74 -0
- package/dist/lib/claude-client.js.map +1 -0
- package/dist/lib/errors.d.ts +10 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +27 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/file-utils.d.ts +7 -0
- package/dist/lib/file-utils.d.ts.map +1 -0
- package/dist/lib/file-utils.js +56 -0
- package/dist/lib/file-utils.js.map +1 -0
- package/dist/lib/token-estimate.d.ts +7 -0
- package/dist/lib/token-estimate.d.ts.map +1 -0
- package/dist/lib/token-estimate.js +15 -0
- package/dist/lib/token-estimate.js.map +1 -0
- package/dist/scanner/codegraph.d.ts +13 -0
- package/dist/scanner/codegraph.d.ts.map +1 -0
- package/dist/scanner/codegraph.js +65 -0
- package/dist/scanner/codegraph.js.map +1 -0
- package/dist/scanner/docs.d.ts +13 -0
- package/dist/scanner/docs.d.ts.map +1 -0
- package/dist/scanner/docs.js +63 -0
- package/dist/scanner/docs.js.map +1 -0
- package/dist/scanner/gotchas.d.ts +8 -0
- package/dist/scanner/gotchas.d.ts.map +1 -0
- package/dist/scanner/gotchas.js +107 -0
- package/dist/scanner/gotchas.js.map +1 -0
- package/dist/scanner/index.d.ts +21 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/index.js +87 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/scanner/manifest.d.ts +13 -0
- package/dist/scanner/manifest.d.ts.map +1 -0
- package/dist/scanner/manifest.js +285 -0
- package/dist/scanner/manifest.js.map +1 -0
- package/dist/scanner/mcp.d.ts +12 -0
- package/dist/scanner/mcp.d.ts.map +1 -0
- package/dist/scanner/mcp.js +96 -0
- package/dist/scanner/mcp.js.map +1 -0
- package/dist/scanner/repomix.d.ts +11 -0
- package/dist/scanner/repomix.d.ts.map +1 -0
- package/dist/scanner/repomix.js +87 -0
- package/dist/scanner/repomix.js.map +1 -0
- package/dist/scanner/skills.d.ts +18 -0
- package/dist/scanner/skills.d.ts.map +1 -0
- package/dist/scanner/skills.js +100 -0
- package/dist/scanner/skills.js.map +1 -0
- package/dist/scanner/source.d.ts +13 -0
- package/dist/scanner/source.d.ts.map +1 -0
- package/dist/scanner/source.js +157 -0
- package/dist/scanner/source.js.map +1 -0
- package/dist/scanner/structure.d.ts +10 -0
- package/dist/scanner/structure.d.ts.map +1 -0
- package/dist/scanner/structure.js +168 -0
- package/dist/scanner/structure.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +212 -0
- package/dist/server.js.map +1 -0
- package/dist/snapshot/drift.d.ts +22 -0
- package/dist/snapshot/drift.d.ts.map +1 -0
- package/dist/snapshot/drift.js +105 -0
- package/dist/snapshot/drift.js.map +1 -0
- package/dist/snapshot/schema.d.ts +94 -0
- package/dist/snapshot/schema.d.ts.map +1 -0
- package/dist/snapshot/schema.js +24 -0
- package/dist/snapshot/schema.js.map +1 -0
- package/dist/snapshot/writer.d.ts +17 -0
- package/dist/snapshot/writer.d.ts.map +1 -0
- package/dist/snapshot/writer.js +44 -0
- package/dist/snapshot/writer.js.map +1 -0
- package/dist/tools/drift.d.ts +15 -0
- package/dist/tools/drift.d.ts.map +1 -0
- package/dist/tools/drift.js +31 -0
- package/dist/tools/drift.js.map +1 -0
- package/dist/tools/export.d.ts +14 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/export.js +53 -0
- package/dist/tools/export.js.map +1 -0
- package/dist/tools/init.d.ts +28 -0
- package/dist/tools/init.d.ts.map +1 -0
- package/dist/tools/init.js +103 -0
- package/dist/tools/init.js.map +1 -0
- package/dist/tools/install-hook.d.ts +15 -0
- package/dist/tools/install-hook.d.ts.map +1 -0
- package/dist/tools/install-hook.js +169 -0
- package/dist/tools/install-hook.js.map +1 -0
- package/dist/tools/lint.d.ts +24 -0
- package/dist/tools/lint.d.ts.map +1 -0
- package/dist/tools/lint.js +213 -0
- package/dist/tools/lint.js.map +1 -0
- package/dist/tools/scan-report.d.ts +14 -0
- package/dist/tools/scan-report.d.ts.map +1 -0
- package/dist/tools/scan-report.js +136 -0
- package/dist/tools/scan-report.js.map +1 -0
- package/dist/tools/status.d.ts +18 -0
- package/dist/tools/status.d.ts.map +1 -0
- package/dist/tools/status.js +38 -0
- package/dist/tools/status.js.map +1 -0
- package/dist/tools/sync.d.ts +22 -0
- package/dist/tools/sync.d.ts.map +1 -0
- package/dist/tools/sync.js +123 -0
- package/dist/tools/sync.js.map +1 -0
- package/dist/tools/validate.d.ts +22 -0
- package/dist/tools/validate.d.ts.map +1 -0
- package/dist/tools/validate.js +97 -0
- package/dist/tools/validate.js.map +1 -0
- package/docs/examples/.clinerules +29 -0
- package/docs/examples/.cursorrules +19 -0
- package/docs/examples/.windsurfrules +14 -0
- package/docs/examples/AGENTS.md +97 -0
- package/docs/examples/CLAUDE.md +88 -0
- package/docs/examples/GEMINI.md +61 -0
- package/docs/examples/copilot-instructions.md +24 -0
- package/docs/github-action.yml +89 -0
- package/package.json +63 -0
- package/scripts/demo.sh +138 -0
- package/skill/SKILL.md +158 -0
package/scripts/demo.sh
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# agents-sync demo script
|
|
3
|
+
#
|
|
4
|
+
# Shows the full agents-sync workflow using a temporary Next.js fixture.
|
|
5
|
+
# Records cleanly with: asciinema rec demo.cast --command ./scripts/demo.sh
|
|
6
|
+
#
|
|
7
|
+
# Prerequisites:
|
|
8
|
+
# export ANTHROPIC_API_KEY=sk-ant-...
|
|
9
|
+
# npm run build (or: npx @googlarz/agents-sync)
|
|
10
|
+
|
|
11
|
+
set -euo pipefail
|
|
12
|
+
|
|
13
|
+
AGENTS_SYNC="${AGENTS_SYNC_BIN:-node dist/cli.js}"
|
|
14
|
+
DEMO_DIR="$(mktemp -d)"
|
|
15
|
+
trap 'rm -rf "$DEMO_DIR"' EXIT
|
|
16
|
+
|
|
17
|
+
# ─── helpers ─────────────────────────────────────────────────────────────────
|
|
18
|
+
|
|
19
|
+
say() { printf '\n\033[1;36m%s\033[0m\n' "$*"; }
|
|
20
|
+
run() { printf '\033[0;33m$ %s\033[0m\n' "$*"; sleep 0.4; eval "$*"; }
|
|
21
|
+
pause(){ sleep "${1:-1.2}"; }
|
|
22
|
+
|
|
23
|
+
# ─── scaffold a minimal Next.js project ──────────────────────────────────────
|
|
24
|
+
|
|
25
|
+
say "Setting up a minimal Next.js project..."
|
|
26
|
+
|
|
27
|
+
mkdir -p "$DEMO_DIR/src/app" "$DEMO_DIR/src/lib" "$DEMO_DIR/src/components"
|
|
28
|
+
|
|
29
|
+
cat > "$DEMO_DIR/package.json" <<'EOF'
|
|
30
|
+
{
|
|
31
|
+
"name": "acme-dashboard",
|
|
32
|
+
"version": "0.1.0",
|
|
33
|
+
"description": "Internal analytics dashboard for the sales team",
|
|
34
|
+
"scripts": { "dev": "next dev", "build": "next build", "test": "vitest" },
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"next": "14.2.3",
|
|
37
|
+
"react": "^18.3.1",
|
|
38
|
+
"@prisma/client": "^5.15.0",
|
|
39
|
+
"next-auth": "^4.24.7",
|
|
40
|
+
"zod": "^3.23.8",
|
|
41
|
+
"tailwindcss": "^3.4.4"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"typescript": "^5.4.5",
|
|
45
|
+
"prisma": "^5.15.0",
|
|
46
|
+
"vitest": "^1.6.0"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
EOF
|
|
50
|
+
|
|
51
|
+
cat > "$DEMO_DIR/src/lib/db.ts" <<'EOF'
|
|
52
|
+
// IMPORTANT: Never import PrismaClient directly — use this singleton.
|
|
53
|
+
// Direct imports exhaust the connection pool in Vercel's serverless runtime.
|
|
54
|
+
import { PrismaClient } from "@prisma/client";
|
|
55
|
+
|
|
56
|
+
const globalForPrisma = globalThis as unknown as { prisma: PrismaClient };
|
|
57
|
+
export const db = globalForPrisma.prisma ?? new PrismaClient();
|
|
58
|
+
if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = db;
|
|
59
|
+
EOF
|
|
60
|
+
|
|
61
|
+
cat > "$DEMO_DIR/src/app/page.tsx" <<'EOF'
|
|
62
|
+
import { db } from "../lib/db";
|
|
63
|
+
|
|
64
|
+
export default async function DashboardPage() {
|
|
65
|
+
const stats = await db.report.count();
|
|
66
|
+
return <main><h1>Dashboard</h1><p>Total reports: {stats}</p></main>;
|
|
67
|
+
}
|
|
68
|
+
EOF
|
|
69
|
+
|
|
70
|
+
cat > "$DEMO_DIR/README.md" <<'EOF'
|
|
71
|
+
# Acme Dashboard
|
|
72
|
+
|
|
73
|
+
Internal analytics and reporting platform for the sales team.
|
|
74
|
+
|
|
75
|
+
Built with Next.js 14, Prisma, and NextAuth.
|
|
76
|
+
EOF
|
|
77
|
+
|
|
78
|
+
pause
|
|
79
|
+
|
|
80
|
+
# ─── 1. agents-sync init ─────────────────────────────────────────────────────
|
|
81
|
+
|
|
82
|
+
say "Step 1: Initialize agents-sync (scans codebase → Claude API → generates all files)"
|
|
83
|
+
run "$AGENTS_SYNC init $DEMO_DIR"
|
|
84
|
+
|
|
85
|
+
pause 2
|
|
86
|
+
|
|
87
|
+
# ─── 2. show generated files ─────────────────────────────────────────────────
|
|
88
|
+
|
|
89
|
+
say "Step 2: View the generated files"
|
|
90
|
+
run "ls -1 $DEMO_DIR/*.md $DEMO_DIR/.cursor* $DEMO_DIR/.github/copilot-instructions.md $DEMO_DIR/GEMINI.md $DEMO_DIR/.windsurfrules $DEMO_DIR/.clinerules 2>/dev/null || ls $DEMO_DIR"
|
|
91
|
+
|
|
92
|
+
pause 1.5
|
|
93
|
+
|
|
94
|
+
say "The canonical AGENTS.md:"
|
|
95
|
+
run "head -40 $DEMO_DIR/AGENTS.md"
|
|
96
|
+
|
|
97
|
+
pause 1.5
|
|
98
|
+
|
|
99
|
+
say "The derived .cursorrules (directive-style, <400 words):"
|
|
100
|
+
run "cat $DEMO_DIR/.cursorrules"
|
|
101
|
+
|
|
102
|
+
pause
|
|
103
|
+
|
|
104
|
+
# ─── 3. simulate a codebase change ───────────────────────────────────────────
|
|
105
|
+
|
|
106
|
+
say "Step 3: Simulate a dependency change (add drizzle-orm)"
|
|
107
|
+
run "node -e \"const p=require('$DEMO_DIR/package.json'); p.dependencies['drizzle-orm']='^0.31.0'; require('fs').writeFileSync('$DEMO_DIR/package.json', JSON.stringify(p, null, 2));\""
|
|
108
|
+
|
|
109
|
+
# also add a new directory
|
|
110
|
+
run "mkdir -p $DEMO_DIR/src/workers && touch $DEMO_DIR/src/workers/report-worker.ts"
|
|
111
|
+
|
|
112
|
+
pause
|
|
113
|
+
|
|
114
|
+
# ─── 4. drift check ──────────────────────────────────────────────────────────
|
|
115
|
+
|
|
116
|
+
say "Step 4: Check what drifted"
|
|
117
|
+
run "$AGENTS_SYNC drift $DEMO_DIR"
|
|
118
|
+
|
|
119
|
+
pause 1.5
|
|
120
|
+
|
|
121
|
+
# ─── 5. re-sync ──────────────────────────────────────────────────────────────
|
|
122
|
+
|
|
123
|
+
say "Step 5: Re-sync to update all files"
|
|
124
|
+
run "$AGENTS_SYNC sync $DEMO_DIR"
|
|
125
|
+
|
|
126
|
+
pause
|
|
127
|
+
|
|
128
|
+
# ─── 6. validate ─────────────────────────────────────────────────────────────
|
|
129
|
+
|
|
130
|
+
say "Step 6: Validate all files are in sync"
|
|
131
|
+
run "$AGENTS_SYNC validate $DEMO_DIR"
|
|
132
|
+
|
|
133
|
+
pause
|
|
134
|
+
|
|
135
|
+
# ─── done ────────────────────────────────────────────────────────────────────
|
|
136
|
+
|
|
137
|
+
say "Done! One AGENTS.md, six tool files, always in sync."
|
|
138
|
+
printf '\n\033[0;32m%s\033[0m\n\n' "npx @googlarz/agents-sync — try it on your project"
|
package/skill/SKILL.md
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agents-sync
|
|
3
|
+
description: Generate and sync AI context files (AGENTS.md, CLAUDE.md, .cursorrules, copilot-instructions.md, GEMINI.md, .windsurfrules, .clinerules) from your codebase. One canonical source, every tool stays current.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# agents-sync
|
|
8
|
+
|
|
9
|
+
Generate and sync AI context files across every coding tool you use.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
Add to your Claude Code MCP config (`.claude/settings.json` or `~/.claude/claude_desktop_config.json`):
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"mcpServers": {
|
|
18
|
+
"agents-sync": {
|
|
19
|
+
"command": "npx",
|
|
20
|
+
"args": ["@googlarz/agents-sync"],
|
|
21
|
+
"env": { "ANTHROPIC_API_KEY": "sk-ant-..." }
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Then restart Claude Code to connect.
|
|
28
|
+
|
|
29
|
+
## Commands
|
|
30
|
+
|
|
31
|
+
### `/agents-sync init`
|
|
32
|
+
|
|
33
|
+
First-time setup. Reads your codebase and generates all context files.
|
|
34
|
+
|
|
35
|
+
**When to use:** New project, or starting from scratch.
|
|
36
|
+
|
|
37
|
+
**What it does:**
|
|
38
|
+
1. Scans your codebase (manifests, structure, source samples, docs, TODO/FIXME comments)
|
|
39
|
+
2. Extracts project metadata via Claude API
|
|
40
|
+
3. Generates canonical `AGENTS.md`
|
|
41
|
+
4. Derives `CLAUDE.md`, `.cursorrules`, `.github/copilot-instructions.md`, `GEMINI.md`, `.windsurfrules`, `.clinerules`
|
|
42
|
+
5. Saves a snapshot for drift detection
|
|
43
|
+
|
|
44
|
+
**Usage:**
|
|
45
|
+
> Run `/agents-sync init` on this project
|
|
46
|
+
|
|
47
|
+
Claude will call `agents_sync_init` with the current project path.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
### `/agents-sync sync`
|
|
52
|
+
|
|
53
|
+
Re-sync after your codebase has changed. Preserves any manual customizations.
|
|
54
|
+
|
|
55
|
+
**When to use:** After major refactors, new dependencies, architecture changes.
|
|
56
|
+
|
|
57
|
+
**Options:**
|
|
58
|
+
- Add `--fast` to skip Claude API call when drift is minor (re-derives from existing AGENTS.md)
|
|
59
|
+
- Add `--dry-run` to preview changes without writing
|
|
60
|
+
|
|
61
|
+
**Usage:**
|
|
62
|
+
> Sync my AI context files
|
|
63
|
+
> `/agents-sync sync --fast`
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
### `/agents-sync drift`
|
|
68
|
+
|
|
69
|
+
Check what changed in your codebase since the last sync. Read-only.
|
|
70
|
+
|
|
71
|
+
**Usage:**
|
|
72
|
+
> What's drifted in my AI context files?
|
|
73
|
+
> `/agents-sync drift`
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### `/agents-sync export [tool]`
|
|
78
|
+
|
|
79
|
+
Re-derive a single tool file without re-running analysis.
|
|
80
|
+
|
|
81
|
+
**Tools:** `claude`, `cursor`, `copilot`, `gemini`, `windsurf`, `cline`
|
|
82
|
+
|
|
83
|
+
**Usage:**
|
|
84
|
+
> `/agents-sync export cursor`
|
|
85
|
+
> Regenerate just my .cursorrules
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### `/agents-sync validate`
|
|
90
|
+
|
|
91
|
+
Check whether all managed files are in sync with AGENTS.md.
|
|
92
|
+
|
|
93
|
+
**Usage:**
|
|
94
|
+
> `/agents-sync validate`
|
|
95
|
+
> Are my AI context files in sync?
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### `/agents-sync status`
|
|
100
|
+
|
|
101
|
+
Show sync status: last sync time, managed files, drift score.
|
|
102
|
+
|
|
103
|
+
**Usage:**
|
|
104
|
+
> `/agents-sync status`
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## How Claude Should Handle These Commands
|
|
109
|
+
|
|
110
|
+
When the user types `/agents-sync <command>`, call the corresponding MCP tool:
|
|
111
|
+
|
|
112
|
+
| Command | MCP Tool | Required params |
|
|
113
|
+
|---|---|---|
|
|
114
|
+
| `init` | `agents_sync_init` | `projectPath` = cwd |
|
|
115
|
+
| `sync` | `agents_sync_sync` | `projectPath` = cwd |
|
|
116
|
+
| `drift` | `agents_sync_drift` | `projectPath` = cwd |
|
|
117
|
+
| `export <tool>` | `agents_sync_export` | `projectPath` = cwd, `tool` = argument |
|
|
118
|
+
| `validate` | `agents_sync_validate` | `projectPath` = cwd |
|
|
119
|
+
| `status` | `agents_sync_status` | `projectPath` = cwd |
|
|
120
|
+
|
|
121
|
+
**Determine `projectPath`:** Use the current working directory. If ambiguous, ask the user which project to target.
|
|
122
|
+
|
|
123
|
+
**If MCP not connected:** Respond with:
|
|
124
|
+
> agents-sync MCP server is not connected. Add this to your Claude Code settings and restart:
|
|
125
|
+
> ```json
|
|
126
|
+
> {
|
|
127
|
+
> "mcpServers": {
|
|
128
|
+
> "agents-sync": {
|
|
129
|
+
> "command": "npx",
|
|
130
|
+
> "args": ["@googlarz/agents-sync"],
|
|
131
|
+
> "env": { "ANTHROPIC_API_KEY": "sk-ant-..." }
|
|
132
|
+
> }
|
|
133
|
+
> }
|
|
134
|
+
> }
|
|
135
|
+
> ```
|
|
136
|
+
|
|
137
|
+
**After init:** Remind the user to:
|
|
138
|
+
1. Add `AGENTS.md` to git
|
|
139
|
+
2. Add `.agents-sync/` to `.gitignore`
|
|
140
|
+
|
|
141
|
+
**After sync:** Show the list of files updated.
|
|
142
|
+
|
|
143
|
+
**Flags parsing:**
|
|
144
|
+
- `--fast` → set `fast: true` in `agents_sync_sync`
|
|
145
|
+
- `--dry-run` → set `dryRun: true`
|
|
146
|
+
|
|
147
|
+
## Custom Sections
|
|
148
|
+
|
|
149
|
+
Users can add permanent customizations to any managed file that survive re-syncs:
|
|
150
|
+
|
|
151
|
+
```markdown
|
|
152
|
+
<!-- AGENTS-SYNC:CUSTOM:START -->
|
|
153
|
+
When working on the payments module, always check with @alice first.
|
|
154
|
+
Use staging Stripe keys (in .env.staging) for all local testing.
|
|
155
|
+
<!-- AGENTS-SYNC:CUSTOM:END -->
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Add this anywhere in `AGENTS.md`, `CLAUDE.md`, `.cursorrules`, `GEMINI.md`, `.windsurfrules`, or `.clinerules`. Re-sync preserves it.
|