sync-ecosystem · git:20260409.d9e2af0 · 2026-04-09 · sha256 5ce99913ad39af45

sync-ecosystem git:20260409.d9e2af0A

Immutable. This exact content never changes and is served at /api/v1/blob/5ce99913ad39af45.

---
name: sync-ecosystem
description: >
  Audit a repository for ecosystem consistency: AGENTS.md coverage, llms.txt presence,
  skill exposure, semver discipline, and cross-repo naming coherence. Sync findings back
  to chezmoi skills in the dotfiles repo. Use when onboarding a new repo, after a naming
  refactor, when terminology has drifted, or to ensure chezmoi skills stay current with
  a project's capabilities. Accepts a repo path as argument.
allowed-tools: Read Grep Glob Bash Edit Write Agent
user-invocable: true
license: Apache-2.0
metadata:
  title: Ecosystem Sync
  category: maintenance
  order: 30
---

# Ecosystem Sync

Audit a single repository for ecosystem consistency and synchronize findings into chezmoi skills.

**Usage:** `/sync-ecosystem <repo-path>`

If no path is given, ask the user which repo to audit before proceeding.

## Ecosystem Conventions

These rules apply to every repo in the ecosystem:

| Convention | Standard |
|------------|----------|
| AGENTS.md | Required for any repo that exposes tools, skills, or a public API |
| llms.txt | Required for every published package or CLI tool |
| Semver | Go and Python CLI tools must have git tags (`v0.x.x`); Rust uses Cargo.toml version |
| Terminology | "provider" = LLM/embedding backend; "adapter" = tool integration layer; "skill" = agentskills.io portable capability; "tool" = MCP executable function |
| Skills dir | Repos with AGENTS.md and user-facing skills should have a `skills/` directory |

## Audit Workflow

### Step 1 — Establish repo context

Read the following files if they exist:
- `README.md` — name, description, type (library / CLI / website / framework)
- `AGENTS.md` — current commands, architecture, skill links
- `llms.txt` — links and descriptions
- `Cargo.toml` / `go.mod` / `pyproject.toml` / `package.json` — package name, version, declared deps

Determine the repo type. Libraries (`gymnasia`, `streamsafe`, protocol specs) do not need a `skills/` directory but still need `llms.txt`.

### Step 2 — Required file checklist

| File | Required for | Check |
|------|-------------|-------|
| `AGENTS.md` | All repos with tools, APIs, or skills | Present and current |
| `llms.txt` | Published packages and CLI tools | Present; links valid |
| `skills/` | Repos with user-facing agent capabilities | Present if applicable |

### Step 3 — Terminology scan

Check for naming violations:

```sh
# "adapter" vs "provider" — flag if integration layer is called "provider"
grep -rn "provider" <repo>/src/ --include="*.rs" --include="*.go" --include="*.ts"
```

Flag any usage where:
- "provider" is used to describe a tool/host integration (should be "adapter")
- "skill", "tool", "agent", or "memory" is used in a non-standard way

### Step 4 — Semver / version discipline

```sh
# Check latest git tag
git -C <repo> describe --tags --abbrev=0 2>/dev/null || echo "no tags"

# Check declared version in manifest
grep -m1 '"version"\|^version' <repo>/package.json <repo>/Cargo.toml <repo>/pyproject.toml 2>/dev/null
```

Flag if: no tags exist for a CLI/library, or tag doesn't match manifest version.

### Step 5 — Chezmoi skills coverage

Find the chezmoi dotfiles repo:

```sh
chezmoi source-path
```

Compare what the repo exposes in `skills/` against what exists under `<chezmoi-source>/dot_agents/skills/`.

For each skill in `<repo>/skills/`:
- Does a counterpart exist in chezmoi?
- If yes, is it up to date with the repo's skill content?

### Step 6 — Validate existing chezmoi skill (if present)

Read `<chezmoi-source>/dot_agents/skills/<skill-name>/SKILL.md` and verify:

1. `name` matches directory name exactly (lowercase, hyphens only)
2. `description` is imperative, includes trigger keywords, under 1024 chars
3. `allowed-tools` lists only tools the skill actually uses
4. Body is under 500 lines
5. Any commands referenced still exist in the codebase

## Report Format

```
## Ecosystem Audit — <repo-name>

### Required Files
- AGENTS.md: ✓ / ✗ (reason)
- llms.txt: ✓ / ✗ (reason)
- skills/: ✓ / ✗ / N/A

### Terminology Issues
- <file>:<line> — description of violation

### Version Discipline
- Latest tag: <tag or "none">
- Manifest version: <version>
- Status: ✓ aligned / ✗ mismatch

### Chezmoi Skill Coverage
- <skill-name>: in repo ✓, in chezmoi ✓/✗, up to date ✓/✗

### Summary
X checks run. Y issues found.
```

## Fix Strategy

| Issue | Action |
|-------|--------|
| Missing AGENTS.md | Run `create-agentsmd` skill on the repo |
| Missing llms.txt | Run `create-llms-txt` skill on the repo |
| Terminology drift | Edit offending files; update dependents |
| Skill in repo but not chezmoi | Copy skill dir into `<chezmoi-source>/dot_agents/skills/` |
| Stale chezmoi skill | Fix frontmatter or body in chezmoi source |

After editing any chezmoi skill:

```sh
chezmoi apply
agentspec sync --fast
```

## Gotchas

- Edit skills in the chezmoi **source** directory, not the deployed `~/.agents/skills/`. Changes to the deployed copy will be overwritten on next `chezmoi apply`.
- Pure libraries and protocol specs don't need a `skills/` dir — only repos with user-facing agent capabilities do.
- Don't auto-execute consolidation plans found in planning docs — flag them for user decision.
- Version tags and manifest versions must match. If they differ, report the mismatch but don't bump versions automatically.