본문으로 건너뛰기

@slats/agents-assets-sync

패키지의 에이전트 문서(skills, rules, commands)를 Claude Code 와 Codex 의 자산 위치에 주입하는 CLI 엔진.

@slats/agents-assets-sync npm versionlicense
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.
--scopeuser(홈) 또는 project(.claude, AGENTS.md, .agents, .codex, .git 중 하나를 가진 최근접 조상).
--asset <kind>skills | rules | commands. 기본값 전체. 제외된 kind 는 플랜에 아예 없으므로 보고도 삭제도 되지 않습니다.
--dry-run플랜만 출력하고 아무것도 쓰지 않음.
--forcediverged 내용 덮어쓰기 및 orphan 삭제.
--yes확인 대화를 띄우지 않고 승인.
--no-interactive터미널이어도 절대 묻지 않음.

에이전트별 목적지

모든 에이전트가 하나의 프로젝트 루트에서 목적지를 도출하므로, 한 번의 실행이 서로 다른 프로젝트에 걸칠 수 없습니다.

Kindclaudecodexagents
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 를 선언하고 이 엔진을 사용하세요.