@slats/agents-assets-sync
패키지의 에이전트 문서(skills, rules, commands)를 Claude Code 와 Codex 의 자산 위치에 주입하는 CLI 엔진.
yarn add @slats/agents-assets-sync패키지 작성자는 에셋 트리를 한 벌만 작성하고 그 위치만 선언합니다. 최종 사용자는 주입할 에이전트를 고르고, 엔진이 각 자산을 그 에이전트가 실제로 읽는 자리에 씁니다.
모든 선택이 플래그로 도달 가능하므로, 코딩 에이전트가 프롬프트 없이 전체 실행을 끝까지 진행할 수 있습니다.
설치
엔진은 컨슈머의 런타임 의존성이 아니므로 최종 사용자는 npx 로 호출합니다:
npx @slats/agents-assets-sync \
--package=@canard/schema-form \
--agent=claude,codex \
--scope=project
CLI 표면
<bin> --package <name...> [--agent <type...>] [--scope=user|project] [--asset <kind...>]
[--dry-run] [--force] [--yes] [--no-interactive] [--root=<cwd>] [--json]
| 플래그 | 의미 |
|---|---|
--package <name> | 필수. @scope/pkg, pkg, 또는 agents.assetPath 를 선언한 설치 패키지 전체로 확장되는 scope alias @scope. |
--agent <type> | claude | codex | agents. 생략 시 대화형 터미널은 선택 UI, 그 외에는 exit 2. |
--scope | user(홈) 또는 project(.claude, AGENTS.md, .agents, .codex, .git 중 하나를 가진 최근접 조상). |
--asset <kind> | skills | rules | commands. 기본값 전체. 제외된 kind 는 플랜에 아예 없으므로 보고도 삭제도 되지 않습니다. |
--dry-run | 플랜만 출력하고 아무것도 쓰지 않음. |
--force | diverged 내용 덮어쓰기 및 orphan 삭제. |
--yes | 확인 대화를 띄우지 않고 승인. |
--no-interactive | 터미널이어도 절대 묻지 않음. |
에이전트별 목적지
모든 에이전트가 하나의 프로젝트 루트에서 목적지를 도출하므로, 한 번의 실행이 서로 다른 프로젝트에 걸칠 수 없습니다.
| Kind | claude | codex | agents |
|---|---|---|---|
skills (user) | ~/.claude/skills/** | ~/.codex/skills/** | ~/.agents/skills/** |
skills (project) | <root>/.claude/skills/** | <root>/.agents/skills/** | <root>/.agents/skills/** |
rules (user) | ~/.claude/rules/** | ~/.codex/AGENTS.md | ~/.agents/AGENTS.md |
rules (project) | <root>/.claude/rules/** | <root>/AGENTS.md | <root>/AGENTS.md |
commands | <root>/.claude/commands/** | 미지원 — 사유와 함께 스킵 | 미지원 |
agents 는 제품이 아니라 벤더 중립 .agents 규약입니다 — 자체 홈 대신 이 규약을
읽는 도구를 위한 선택지입니다. codex 와는 user scope 에서만 다릅니다.
rule 파일 1개가 마커 블록 1개가 되므로, 블록 본문 해시가 그 파일의 매니페스트 해시와 같고 copy/skip/diverged 판정이 복사되는 파일과 동일한 입자도를 갖습니다:
<!-- AGENTS-ASSETS-SYNC:START:@canard/schema-form:rules/schema-form-rule.md -->
…원본 바이트 그대로…
<!-- AGENTS-ASSETS-SYNC:END:@canard/schema-form:rules/schema-form-rule.md -->
이 도구의 블록 밖 내용 — 타 도구의 블록, 사람이 쓴 본문 — 은 바이트 단위로 보존됩니다.
패키지에서 에셋 배포하기
{
"scripts": {
"build": "… && yarn build:hashes",
"build:hashes": "agents-build-hashes",
},
"devDependencies": {
"@slats/agents-assets-sync": "^0.1.0",
},
"files": ["dist", "docs", "README.md"],
"agents": {
"assetPath": "docs/agents",
},
}
docs/agents/
├── skills/<skill-name>/SKILL.md
├── rules/*.md
└── commands/*.md
agents-build-hashes 가 빌드 시점에 트리를 해싱해 dist/agents-hashes.json 을
생성하고, 엔진은 매 주입마다 이 매니페스트와 비교합니다.
@slats/claude-assets-sync 와의 관계
@slats/claude-assets-sync 는 이 엔진이 마이그레이션해 온 단일 에이전트 시절의
이름입니다. 이미 배포된 릴리스는 npm 에 그대로 남아 claude.assetPath 규약으로
릴리스된 패키지는 계속 설치되고 동작하지만, 그 이름으로 새로 배포되는 것은 없습니다.
agents.assetPath 를 선언하고 이 엔진을 사용하세요.