@rch4com/agent-setup 1.25.1 → 1.27.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/lib/gitmessage.mjs +32 -0
- package/lib/i18n/catalog/en.mjs +13 -4
- package/lib/i18n/catalog/ko.mjs +13 -4
- package/lib/items/plugin.cli-anything.mjs +23 -0
- package/lib/items/plugin.hyperframes.mjs +23 -0
- package/lib/items/plugin.impeccable.mjs +12 -16
- package/lib/items/skill.impeccable.mjs +16 -0
- package/lib/items/skill.remotion.mjs +15 -0
- package/package.json +1 -1
package/lib/gitmessage.mjs
CHANGED
|
@@ -10,9 +10,11 @@
|
|
|
10
10
|
// 통째로 실패한다.
|
|
11
11
|
import { execFileSync } from 'node:child_process'
|
|
12
12
|
import { readFileSync, rmSync, writeFileSync } from 'node:fs'
|
|
13
|
+
import { isDeepStrictEqual } from 'node:util'
|
|
13
14
|
import { normalizeBody } from './bootstrap/text.mjs'
|
|
14
15
|
import { repoPath, repoPathStrict } from './context.mjs'
|
|
15
16
|
import { LocalizedError, msg } from './i18n/index.mjs'
|
|
17
|
+
import { readJson, removeKey, setKey } from './jsonfile.mjs'
|
|
16
18
|
|
|
17
19
|
export const GITMESSAGE_REL = '.gitmessage.txt'
|
|
18
20
|
// 한 파일을 두고 다투는 항목들의 묶음 이름.
|
|
@@ -20,6 +22,19 @@ export const GITMESSAGE_EXCLUSIVE = 'gitmessage'
|
|
|
20
22
|
|
|
21
23
|
const CONFIG_KEY = 'commit.template'
|
|
22
24
|
|
|
25
|
+
// VS Code가 이 템플릿을 쓰게 하는 설정. 커밋 입력을 COMMIT_EDITMSG 에디터로
|
|
26
|
+
// 열어야 git이 commit.template을 그대로 채운다(SCM 입력창은 주석(#)뿐인
|
|
27
|
+
// 템플릿을 표시하지 못한다). instructions는 Copilot 커밋 메시지 생성에 같은
|
|
28
|
+
// 템플릿을 적용한다 — 비어 있지 않으면 생성이 조용히 실패하던 상류 버그
|
|
29
|
+
// microsoft/vscode#315997은 2026-05-23에 닫혔다.
|
|
30
|
+
// 키가 이미 있으면 값이 달라도 손대지 않고, 제거는 우리가 넣은 값과 정확히
|
|
31
|
+
// 같을 때만 지운다 — 사용자가 다른 값으로 바꿨다면 그것은 사용자의 설정이다.
|
|
32
|
+
const VSCODE_SETTINGS = '.vscode/settings.json'
|
|
33
|
+
const VSCODE_KEYS = {
|
|
34
|
+
'git.useEditorAsCommitInput': true,
|
|
35
|
+
'github.copilot.chat.commitMessageGeneration.instructions': [{ file: GITMESSAGE_REL }],
|
|
36
|
+
}
|
|
37
|
+
|
|
23
38
|
// 이 저장소 루트의 .gitmessage.txt와 같은 내용이다 —
|
|
24
39
|
// test/items.gitmessage.test.mjs가 두 값이 갈리지 않게 고정한다.
|
|
25
40
|
export const GITMESSAGE_KO = `# Commit message template ( * 주석 처리(#)된 부분들은 커밋 메시지에 포함되지 않으니 참고해서 작성)
|
|
@@ -212,6 +227,15 @@ export function defineGitmessage({ id, label, body, note }) {
|
|
|
212
227
|
|
|
213
228
|
const r = await exec('git', ['config', '--local', CONFIG_KEY, GITMESSAGE_REL], { cwd: root })
|
|
214
229
|
if (!r.ok) throw new LocalizedError('error.gitmessageConfig', { output: r.output })
|
|
230
|
+
|
|
231
|
+
// 깨진 settings.json은 readJson이 파일 이름과 줄을 말하며 던진다.
|
|
232
|
+
const file = repoPathStrict(root, VSCODE_SETTINGS)
|
|
233
|
+
const data = readJson(file) ?? {}
|
|
234
|
+
for (const [key, value] of Object.entries(VSCODE_KEYS)) {
|
|
235
|
+
if (data[key] !== undefined) log(t('log.gitmessage.settingsKeep', { path: VSCODE_SETTINGS, key }))
|
|
236
|
+
else if (dryRun) log(t('log.gitmessage.settingsAdd', { path: VSCODE_SETTINGS, key }))
|
|
237
|
+
else setKey(file, [key], value)
|
|
238
|
+
}
|
|
215
239
|
},
|
|
216
240
|
|
|
217
241
|
async uninstall({ root, dryRun, exec, log = () => {}, t }) {
|
|
@@ -225,6 +249,14 @@ export function defineGitmessage({ id, label, body, note }) {
|
|
|
225
249
|
|
|
226
250
|
// 남의 값이나 빈 값에 --unset을 걸면 git이 실패를 돌려준다.
|
|
227
251
|
if (pointsHere(root)) await exec('git', ['config', '--local', '--unset', CONFIG_KEY], { cwd: root })
|
|
252
|
+
|
|
253
|
+
const file = repoPathStrict(root, VSCODE_SETTINGS)
|
|
254
|
+
const data = readJson(file) ?? {}
|
|
255
|
+
for (const [key, value] of Object.entries(VSCODE_KEYS)) {
|
|
256
|
+
if (!isDeepStrictEqual(data[key], value)) continue
|
|
257
|
+
if (dryRun) log(t('log.gitmessage.settingsRemove', { path: VSCODE_SETTINGS, key }))
|
|
258
|
+
else removeKey(file, [key])
|
|
259
|
+
}
|
|
228
260
|
},
|
|
229
261
|
}
|
|
230
262
|
}
|
package/lib/i18n/catalog/en.mjs
CHANGED
|
@@ -237,6 +237,8 @@ export default {
|
|
|
237
237
|
'item.unsupported.eccCodexHome': 'upstream ships a native Codex plugin, but it installs into the single active CODEX_HOME — there is no project scope',
|
|
238
238
|
'item.unsupported.eccScale': 'upstream also supports OpenCode, Gemini and Kimi project-locally, but its skills/ holds 284 entries that would swamp the shared directory — only the plugin route is wired',
|
|
239
239
|
'item.unsupported.uaUser': 'upstream install.sh clones into ~/.understand-anything and links from the home directory (user scope); the copilot plugin install offers no scope choice either',
|
|
240
|
+
'item.unsupported.cliAnythingCodex': 'upstream codex-skill installer writes to $CODEX_HOME/skills (or ~/.codex/skills) — user scope',
|
|
241
|
+
'item.unsupported.cliAnythingManual': 'upstream gives OpenCode no installer, only a manual copy of the commands files',
|
|
240
242
|
'item.unsupported.mattpocockRegistry': 'upstream also documents npx skills add (the shared .agents/skills), but this item wires the Claude Code plugin only',
|
|
241
243
|
'item.unsupported.unmeasuredUpstream': 'upstream has an install command, but the detect/remove path has not been verified, so it is not wired yet — you can install it by hand with the command in the upstream README',
|
|
242
244
|
'item.unsupported.noProjectMcp': 'no project-scoped MCP file — MCP is configured only in the home global (~/.gemini/config/mcp_config.json), so register it there by hand if needed',
|
|
@@ -245,7 +247,7 @@ export default {
|
|
|
245
247
|
'item.unsupported.superpowersGlobalClaude': 'covered by the repo-scope item superpowers (repo)',
|
|
246
248
|
'item.unsupported.superpowersGlobalKimi': 'upstream installs only via the interactive /plugins command — no headless path',
|
|
247
249
|
'item.unsupported.globalProjectItem': 'covered by the repo-scope item {item}',
|
|
248
|
-
'item.unsupported.
|
|
250
|
+
'item.unsupported.impeccableSkill': 'upstream supports it — the shared-skill edition skill.impeccable covers this CLI, and this plugin item wires Claude Code only',
|
|
249
251
|
'item.unsupported.gstackHost': 'upstream supports it via ./setup --host — this item installs for Claude Code only',
|
|
250
252
|
'item.unsupported.gstackShared': 'the upstream --host route is user-scoped, so it is not used. In a bootstrapped repository the shared .agents/skills junction reaches this CLI instead, and it scans recursively, so it sees the individual skills too (measured 2026-08-15)',
|
|
251
253
|
'item.unsupported.gstackSharedShallow': 'in a bootstrapped repository the shared .agents/skills junction reaches this CLI, but it scans only one level, so just the router skill shows up (measured 2026-08-15)',
|
|
@@ -276,7 +278,10 @@ export default {
|
|
|
276
278
|
'item.plugin.mattpocock-skills.note': '35 engineering and productivity skills (code-review, diagnosing-bugs, domain-modeling, …)',
|
|
277
279
|
'item.plugin.ponytail.note': 'lean-code ruleset. Wires the Claude Code plugin and the OpenCode plugin entry, both repo-scoped',
|
|
278
280
|
'item.plugin.ecc.note': 'skills, instincts, memory and security for agent harnesses. Installed as a plugin — its skills/ holds 284 entries, too many to copy into the shared skills directory',
|
|
279
|
-
'item.plugin.impeccable.note': 'design language for AI harnesses.
|
|
281
|
+
'item.plugin.impeccable.note': 'design language for AI harnesses. This is the Claude Code plugin edition — pick the shared-skill edition skill.impeccable to reach the other CLIs too (only one of the two can be chosen)',
|
|
282
|
+
'item.skill.impeccable.note': 'design language for AI harnesses, copied into the shared .agents/skills so all 11 CLIs see it (62 files, 2.3MB). Only one of this and the plugin edition can be chosen. The engine binary is not included — on first run the bundled scripts/impeccable downloads it and caches it in ~/.impeccable, which writes outside the repository',
|
|
283
|
+
'item.plugin.cli-anything.note': 'harness plugin that turns GUI/desktop software into a Python CLI agents can drive. Generate with /cli-anything <source path or repo>, followed by the refine, test, validate and list commands. Fetching already-built CLIs from the hub is a separate thing, the cli-hub-meta-skill',
|
|
284
|
+
'item.plugin.hyperframes.note': 'HyperFrames (HeyGen) bundle of 21 skills for writing video in HTML/CSS and rendering deterministic MP4. The /hyperframes router loads the promo, explainer, caption and motion-graphics workflows on demand. Rendering needs Node.js 22+ and FFmpeg. Other CLIs install it separately upstream, so only the plugin is wired',
|
|
280
285
|
'item.plugin.understand-anything.note': 'turns the codebase into an explorable knowledge graph. The script for other CLIs clones into ~/.understand-anything (user scope), so only the plugin is wired',
|
|
281
286
|
'item.skill.eli5.note': 'eli5 from the Anthropic community marketplace — turns /eli5 <topic> into an HTML picture explainer with big visuals and few words. Upstream ships it as a Claude plugin, but it is a single skill with no hooks or commands, so it is installed as the shared skill all 11 CLIs see',
|
|
282
287
|
'item.skill.i-have-adhd.note': 'output shaping for an ADHD reader — next action first, numbered steps, no tangents, restated progress, no preamble or closers. Turn on with /i-have-adhd, off with "stop adhd mode". Always-on is what the upstream Claude plugin edition adds through its hook; this item instead installs the shared skill that all 11 CLIs see',
|
|
@@ -284,6 +289,7 @@ export default {
|
|
|
284
289
|
'item.skill.taste.note': 'anti-slop frontend skill for landing pages, portfolios and redesigns (skill name: design-taste-frontend)',
|
|
285
290
|
'item.skill.hallmark.note': 'anti-AI-slop design skill with four verbs (build, audit, redesign, study). 21 themes and 57 slop-test gates. Upstream also documents Cursor and Codex paths; the shared skills directory covers all 11 CLIs at once',
|
|
286
291
|
'item.skill.archify.note': 'architecture, workflow, sequence, data-flow and lifecycle diagrams as validated standalone HTML with inline SVG, dark/light themes and PNG/SVG/WebM export; also redraws pasted Mermaid. Needs Node 18+ to run its bundled validator (no npm install). After the first diagram it checks the upstream release manifest once — set ARCHIFY_UPDATE_CHECK_DISABLED=1 to turn that off',
|
|
292
|
+
'item.skill.remotion.note': 'official skills for Remotion, which makes video with React. remotion-best-practices alone holds the other 11 (create, markup, studio, render, captions, maps…), so only it is copied (141 files, 1.1MB). The individual /remotion-* slash commands do not appear. License note: free for individuals, for-profit organizations up to 3 employees, and non-profits; larger for-profit organizations need a Remotion company license',
|
|
287
293
|
'item.skill.diagram-design.note': 'draws 27 diagram types in HTML/SVG using your brand colors and fonts; also redraws Mermaid and draw.io sources. The default fonts (Instrument Serif, Geist) carry no CJK glyphs — swap them in style-guide.md — and PNG export needs Playwright and Chromium separately. The three upstream slash commands are left out, but the references/ they delegate to come along',
|
|
288
294
|
'item.skill.superpowers.note': 'copies 14 skills into the shared .agents/skills so all 11 CLIs see them. Only one of this and the plugin edition can be chosen — this route has no session-start hook, so nothing is injected at the start of a conversation and skills are invoked on demand',
|
|
289
295
|
'item.skill.agent-browser.note': 'a skill that drives the browser-automation CLI. Requires the agent-browser binary on PATH — npm i -g agent-browser, then agent-browser install once (downloads Chrome for Testing). The SKILL.md is a discovery stub; the real workflow guidance is served by the installed CLI. The body is harness-neutral, so all 11 CLIs share it (only the allowed-tools line is Claude syntax)',
|
|
@@ -298,11 +304,14 @@ export default {
|
|
|
298
304
|
'item.skill.gsd.note': 'npx @opengsd/gsd-core, installed per project — wires five runtimes in one run: claude, codex, opencode, copilot, kilo (.claude/commands, .codex/skills, .opencode/skills, .github/skills, .kilo/skills). Each runtime writes roughly 700 files. gemini was dropped upstream and kimi still blocks project installs',
|
|
299
305
|
// 커밋 템플릿은 CLI 배선이 아니라 저장소 규약이다 — note가 "무엇이 놓이고
|
|
300
306
|
// 무엇이 설정되는가"를 대신 말한다(상세 패널에 배선표가 없다).
|
|
301
|
-
'item.config.gitmessage.en.note': 'commit messages in English. Writes the template and points git commit.template at it, so it opens in every editor and every tool in this repository',
|
|
302
|
-
'item.config.gitmessage.ko.note': 'commit messages in Korean. Writes the template and points git commit.template at it, so it opens in every editor and every tool in this repository',
|
|
307
|
+
'item.config.gitmessage.en.note': 'commit messages in English. Writes the template and points git commit.template at it, so it opens in every editor and every tool in this repository. Also sets VS Code to open the commit editor and to apply the template to Copilot message generation (.vscode/settings.json, only keys not already set)',
|
|
308
|
+
'item.config.gitmessage.ko.note': 'commit messages in Korean. Writes the template and points git commit.template at it, so it opens in every editor and every tool in this repository. Also sets VS Code to open the commit editor and to apply the template to Copilot message generation (.vscode/settings.json, only keys not already set)',
|
|
303
309
|
'item.gitmessage.unregistered': 'file is in place, but commit.template does not point at it yet',
|
|
304
310
|
'log.gitmessage.write': ' [dry-run] write {path}',
|
|
305
311
|
'log.gitmessage.remove': ' [dry-run] remove {path}',
|
|
312
|
+
'log.gitmessage.settingsAdd': ' [dry-run] add {path} — {key}',
|
|
313
|
+
'log.gitmessage.settingsKeep': ' settings key kept (already set): {path} — {key}',
|
|
314
|
+
'log.gitmessage.settingsRemove': ' [dry-run] remove {path} — {key}',
|
|
306
315
|
'error.gitmessageForeign': '{path} already exists and was not written by this tool. A hand-written template is never overwritten — move or delete it first.',
|
|
307
316
|
'error.gitmessageConfig': 'git config commit.template failed: {output}',
|
|
308
317
|
'error.exclusiveItems': 'These items compete for the same slot, so only one can be chosen: {ids}',
|
package/lib/i18n/catalog/ko.mjs
CHANGED
|
@@ -230,6 +230,8 @@ export default {
|
|
|
230
230
|
'item.unsupported.eccCodexHome': '상류가 Codex 네이티브 플러그인을 지원하지만 활성 CODEX_HOME 하나에만 설치됩니다 — 프로젝트 스코프가 없습니다',
|
|
231
231
|
'item.unsupported.eccScale': '상류는 OpenCode·Gemini·Kimi 등을 프로젝트 로컬로도 지원하지만 skills/에 284개가 들어 있어 공유 디렉터리를 덮습니다 — 플러그인 경로만 배선합니다',
|
|
232
232
|
'item.unsupported.uaUser': '상류 install.sh가 ~/.understand-anything에 클론하고 홈에 링크를 겁니다(사용자 스코프). copilot 플러그인 설치도 스코프 선택이 없습니다',
|
|
233
|
+
'item.unsupported.cliAnythingCodex': '상류 codex-skill 설치기가 $CODEX_HOME/skills(없으면 ~/.codex/skills)에 설치합니다 — 사용자 스코프입니다',
|
|
234
|
+
'item.unsupported.cliAnythingManual': '상류가 OpenCode에는 설치기 없이 commands 파일을 직접 복사하라고만 안내합니다',
|
|
233
235
|
'item.unsupported.mattpocockRegistry': '상류가 npx skills add(공유 .agents/skills)도 안내하지만 이 항목은 Claude Code 플러그인만 배선합니다',
|
|
234
236
|
'item.unsupported.upstreamNone': '상류에 공식 설치 경로가 없습니다',
|
|
235
237
|
'item.unsupported.unmeasuredUpstream': '상류에 설치 명령이 있지만 감지·제거 경로를 실측하지 못해 아직 배선하지 않습니다 — 상류 README의 명령으로 직접 설치할 수 있습니다',
|
|
@@ -238,7 +240,7 @@ export default {
|
|
|
238
240
|
'item.unsupported.superpowersGlobalClaude': '저장소 범위 항목 superpowers (저장소)가 담당합니다',
|
|
239
241
|
'item.unsupported.superpowersGlobalKimi': '상류 설치가 대화형 /plugins 명령뿐이라 헤드리스 경로가 없습니다',
|
|
240
242
|
'item.unsupported.globalProjectItem': '저장소 범위 항목 {item}이 담당합니다',
|
|
241
|
-
'item.unsupported.
|
|
243
|
+
'item.unsupported.impeccableSkill': '상류는 지원합니다 — 공유 스킬 판 skill.impeccable이 이 CLI를 맡고, 이 플러그인 항목은 Claude Code만 배선합니다',
|
|
242
244
|
'item.unsupported.gstackHost': '상류는 ./setup --host로 지원합니다 — 이 항목은 Claude Code에만 설치합니다',
|
|
243
245
|
'item.unsupported.gstackShared': '상류 --host 경로는 사용자 스코프라 쓰지 않습니다. 대신 부트스트랩 저장소에서는 공유 .agents/skills Junction으로 닿고, 이 CLI는 재귀 스캔이라 개별 스킬까지 봅니다(2026-08-15 실측)',
|
|
244
246
|
'item.unsupported.gstackSharedShallow': '부트스트랩 저장소에서는 공유 .agents/skills Junction으로 닿지만, 이 CLI는 1단계만 훑어 라우터 스킬 하나만 보입니다(2026-08-15 실측)',
|
|
@@ -269,7 +271,10 @@ export default {
|
|
|
269
271
|
'item.plugin.mattpocock-skills.note': '엔지니어링·생산성 스킬 35종 (code-review, diagnosing-bugs, domain-modeling 등)',
|
|
270
272
|
'item.plugin.ponytail.note': '군더더기 없는 코드 규칙 묶음. Claude Code 플러그인과 OpenCode plugin 항목을 저장소 범위로 배선합니다',
|
|
271
273
|
'item.plugin.ecc.note': '에이전트 하네스용 스킬·본능·메모리·보안 묶음. skills/에 284개가 들어 있어 공유 스킬 디렉터리에 복사하지 않고 플러그인으로 설치합니다',
|
|
272
|
-
'item.plugin.impeccable.note': 'AI 하네스용 디자인 언어.
|
|
274
|
+
'item.plugin.impeccable.note': 'AI 하네스용 디자인 언어. Claude Code 플러그인 판입니다 — 다른 CLI까지 함께 보려면 공유 스킬 판 skill.impeccable을 고르세요(둘 중 하나만 고를 수 있습니다)',
|
|
275
|
+
'item.skill.impeccable.note': 'AI 하네스용 디자인 언어를 공유 .agents/skills에 복사해 11개 CLI가 함께 봅니다(62개 파일, 2.3MB). 플러그인 판과 하나만 고를 수 있습니다. 엔진 바이너리는 포함되지 않아 첫 실행 때 스킬의 scripts/impeccable이 네트워크로 받아 홈의 ~/.impeccable에 캐시합니다 — 저장소 밖에 쓰는 동작입니다',
|
|
276
|
+
'item.plugin.cli-anything.note': 'GUI·데스크톱 소프트웨어를 에이전트가 쓸 수 있는 Python CLI로 만들어 주는 하네스 플러그인입니다. /cli-anything <소스 경로 또는 저장소> 로 생성하고 refine·test·validate·list 명령이 따릅니다. 이미 만들어진 CLI를 허브에서 받는 것은 별개의 cli-hub-meta-skill입니다',
|
|
277
|
+
'item.plugin.hyperframes.note': 'HTML·CSS로 영상을 쓰고 결정적 MP4로 렌더하는 HyperFrames(HeyGen) 스킬 21종 번들입니다. /hyperframes 라우터가 홍보·설명·자막·모션 그래픽 워크플로를 필요할 때 불러옵니다. 렌더에는 Node.js 22+와 FFmpeg가 필요합니다. 다른 CLI는 상류가 CLI별 별도 설치로 안내해 플러그인만 배선합니다',
|
|
273
278
|
'item.plugin.understand-anything.note': '코드베이스를 탐색 가능한 지식 그래프로 만듭니다. 다른 CLI용 스크립트는 ~/.understand-anything에 클론하는 사용자 스코프라 플러그인만 배선합니다',
|
|
274
279
|
'item.skill.eli5.note': 'Anthropic 커뮤니티 마켓플레이스의 eli5 — /eli5 <주제>를 큰 그림과 짧은 글의 HTML 설명서로 만듭니다. 상류는 Claude 플러그인이지만 훅·명령 없이 스킬 하나라, 11개 CLI가 함께 보는 공유 스킬로 넣습니다',
|
|
275
280
|
'item.skill.i-have-adhd.note': 'ADHD 독자를 위한 출력 형식 — 다음 행동부터, 단계는 번호로, 곁길 억제, 진행 상태 재진술, 서두·맺음말 없음. /i-have-adhd로 켜고 "stop adhd mode"로 끕니다. 상시 적용은 상류 Claude 플러그인 판의 훅이 담당하는데, 이 항목은 그 대신 11개 CLI가 함께 보는 공유 스킬로 넣습니다',
|
|
@@ -277,6 +282,7 @@ export default {
|
|
|
277
282
|
'item.skill.taste.note': '랜딩 페이지·포트폴리오·리디자인용 안티슬롭 프런트엔드 스킬 (스킬 이름: design-taste-frontend)',
|
|
278
283
|
'item.skill.hallmark.note': '네 가지 동사(신규 제작·audit·redesign·study)를 갖춘 안티 AI슬롭 디자인 스킬. 테마 21종과 슬롭 테스트 57종. 상류는 Cursor·Codex 경로도 안내하지만 공유 스킬 디렉터리 하나로 11개 CLI가 함께 봅니다',
|
|
279
284
|
'item.skill.archify.note': '아키텍처·워크플로·시퀀스·데이터 흐름·라이프사이클 다이어그램을 검증을 거친 단독 HTML(인라인 SVG, 다크/라이트, PNG·SVG·WebM 내보내기)로 만듭니다. 붙여 넣은 Mermaid도 다시 그립니다. 동봉된 검증기를 돌리려면 Node 18+가 필요합니다(npm install 불필요). 첫 다이어그램 뒤 상류 릴리스 매니페스트를 한 번 확인하며, ARCHIFY_UPDATE_CHECK_DISABLED=1로 끕니다',
|
|
285
|
+
'item.skill.remotion.note': 'React로 영상을 만드는 Remotion의 공식 스킬입니다. remotion-best-practices 하나가 create·markup·studio·render·captions·maps 등 나머지 11개를 품고 있어 이것만 복사합니다(141개 파일, 1.1MB). 개별 /remotion-* 슬래시 명령은 생기지 않습니다. 라이선스 주의: 개인·직원 3명 이하 영리 조직·비영리는 무료지만 그보다 큰 영리 조직은 Remotion 회사 라이선스가 필요합니다',
|
|
280
286
|
'item.skill.diagram-design.note': '브랜드 색·폰트로 다이어그램 27종을 그리는 HTML/SVG 스킬. Mermaid·draw.io 원본도 다시 그립니다. 기본 폰트(Instrument Serif·Geist)에 한글 글리프가 없어 style-guide.md에서 바꿔야 하고, PNG 내보내기는 Playwright·Chromium이 따로 필요합니다. 상류 플러그인의 명령 3개는 빠지지만 그 본문인 references/는 그대로 옵니다',
|
|
281
287
|
'item.skill.superpowers.note': '공유 .agents/skills에 스킬 14종을 복사해 11개 CLI가 함께 봅니다. 플러그인 판과 하나만 고를 수 있습니다 — 이쪽은 session-start 훅이 없어 대화 시작 시 자동 주입이 되지 않고, 스킬을 불러서 씁니다',
|
|
282
288
|
'item.skill.agent-browser.note': '브라우저 자동화 CLI를 쓰게 하는 스킬. PATH에 agent-browser 바이너리 필요 — npm i -g agent-browser 후 최초 1회 agent-browser install(Chrome for Testing 다운로드). SKILL.md는 안내 스텁이라 실제 지침은 설치된 CLI가 제공합니다. 본문이 하네스 중립이라 11개 CLI가 함께 씁니다(allowed-tools 줄만 Claude 문법)',
|
|
@@ -290,11 +296,14 @@ export default {
|
|
|
290
296
|
'item.skill.gstack.note': '저장소 로컬 clone + setup (bash 필요, Windows는 Git Bash). 런타임 상태(~/.gstack)는 전역에 생길 수 있음. 부트스트랩 저장소에서는 .claude/skills가 Junction이라 실물이 공유 .agents/skills에 앉습니다 — codex·opencode는 재귀 스캔이라 개별 스킬까지 함께 봅니다',
|
|
291
297
|
'item.skill.gsd.note': 'npx @opengsd/gsd-core 프로젝트 로컬 설치 — claude·codex·opencode·copilot·kilo 다섯 런타임을 한 번에 배선합니다(.claude/commands, .codex/skills, .opencode/skills, .github/skills, .kilo/skills). 런타임마다 700개 안팎의 파일이 생깁니다. gemini는 상류가 제거했고 kimi는 프로젝트 설치를 아직 막습니다',
|
|
292
298
|
// 커밋 템플릿은 CLI 배선이 아니라 저장소 규약이다 — en.mjs 쪽 주석 참고.
|
|
293
|
-
'item.config.gitmessage.en.note': '커밋 메시지를 영어로 씁니다. 템플릿을 놓고 git commit.template이 그것을 가리키게 하므로, 저장소의 모든 편집기와 도구에서 함께
|
|
294
|
-
'item.config.gitmessage.ko.note': '커밋 메시지를 한국어로 씁니다. 템플릿을 놓고 git commit.template이 그것을 가리키게 하므로, 저장소의 모든 편집기와 도구에서 함께
|
|
299
|
+
'item.config.gitmessage.en.note': '커밋 메시지를 영어로 씁니다. 템플릿을 놓고 git commit.template이 그것을 가리키게 하므로, 저장소의 모든 편집기와 도구에서 함께 열립니다. VS Code가 커밋 에디터를 열고 Copilot 생성에도 템플릿을 쓰도록 .vscode/settings.json에 키도 더합니다(이미 있는 키는 그대로)',
|
|
300
|
+
'item.config.gitmessage.ko.note': '커밋 메시지를 한국어로 씁니다. 템플릿을 놓고 git commit.template이 그것을 가리키게 하므로, 저장소의 모든 편집기와 도구에서 함께 열립니다. VS Code가 커밋 에디터를 열고 Copilot 생성에도 템플릿을 쓰도록 .vscode/settings.json에 키도 더합니다(이미 있는 키는 그대로)',
|
|
295
301
|
'item.gitmessage.unregistered': '파일은 놓였지만 commit.template이 아직 가리키지 않습니다',
|
|
296
302
|
'log.gitmessage.write': ' [dry-run] {path} 생성',
|
|
297
303
|
'log.gitmessage.remove': ' [dry-run] {path} 제거',
|
|
304
|
+
'log.gitmessage.settingsAdd': ' [dry-run] {path} — {key} 추가',
|
|
305
|
+
'log.gitmessage.settingsKeep': ' 설정 키 유지(이미 있음): {path} — {key}',
|
|
306
|
+
'log.gitmessage.settingsRemove': ' [dry-run] {path} — {key} 제거',
|
|
298
307
|
'error.gitmessageForeign': '{path}가 이미 있고 이 도구가 쓴 내용이 아닙니다. 손으로 쓴 템플릿은 덮어쓰지 않습니다 — 먼저 옮기거나 지우세요.',
|
|
299
308
|
'error.gitmessageConfig': 'git config commit.template 실패: {output}',
|
|
300
309
|
'error.exclusiveItems': '한 자리를 두고 다투는 항목이라 하나만 고를 수 있습니다: {ids}',
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { definePlugin } from '../catalog.mjs'
|
|
2
|
+
import { CLI_IDS } from '../clis.mjs'
|
|
3
|
+
import { msg } from '../i18n/index.mjs'
|
|
4
|
+
// HKUDS/CLI-Anything(Apache-2.0)의 마켓플레이스는 .claude-plugin/marketplace.json
|
|
5
|
+
// 하나에 플러그인 cli-anything(./cli-anything-plugin)만 싣는다. 명령은
|
|
6
|
+
// /cli-anything·list·refine·test·validate 다섯 개다(2026-10-06 확인).
|
|
7
|
+
// 다른 CLI는 상류 README 기준: Codex는 설치기가 $CODEX_HOME/skills(사용자
|
|
8
|
+
// 스코프), OpenCode는 설치기 없이 commands 파일 수동 복사, 나머지는 없다.
|
|
9
|
+
// (Cursor·Pi·Hermes·Qoder 설치기는 이 저장소의 CLI 목록 밖이다.)
|
|
10
|
+
// 같은 리포의 skills/cli-hub-meta-skill은 별개 항목이다 — 이미 만들어진 CLI를
|
|
11
|
+
// 허브에서 찾아 설치하게 하는 스킬이고, 이 항목은 CLI를 새로 만드는 쪽이다.
|
|
12
|
+
const WHY = { codex: 'item.unsupported.cliAnythingCodex', opencode: 'item.unsupported.cliAnythingManual' }
|
|
13
|
+
export default definePlugin({
|
|
14
|
+
id: 'plugin.cli-anything', label: 'CLI-Anything', group: '__service',
|
|
15
|
+
installId: 'cli-anything@cli-anything',
|
|
16
|
+
detectIds: ['cli-anything@cli-anything'],
|
|
17
|
+
marketplace: { name: 'cli-anything', repo: 'HKUDS/CLI-Anything' },
|
|
18
|
+
note: 'item.plugin.cli-anything.note',
|
|
19
|
+
verified: '2026-10-06',
|
|
20
|
+
unsupported: Object.fromEntries(
|
|
21
|
+
CLI_IDS.filter((c) => c !== 'claude').map((c) => [c, msg(WHY[c] ?? 'item.unsupported.upstreamNone')]),
|
|
22
|
+
),
|
|
23
|
+
})
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { definePlugin } from '../catalog.mjs'
|
|
2
|
+
import { CLI_IDS } from '../clis.mjs'
|
|
3
|
+
import { msg } from '../i18n/index.mjs'
|
|
4
|
+
// heygen-com/hyperframes(Apache-2.0)의 마켓플레이스는 플러그인 둘을 싣는다:
|
|
5
|
+
// hyperframes(전체 스킬 번들, 상류 권장)와 core-skills(구판 코어만 — 상류가
|
|
6
|
+
// 전자로 옮기라고 안내한다). 여기서는 전자를 쓴다. 번들은 스킬 21종과 CLI
|
|
7
|
+
// 버전을 한 스냅숏으로 묶고, /hyperframes 라우터가 제작 워크플로를 그때그때
|
|
8
|
+
// 불러온다(2026-10-06 확인).
|
|
9
|
+
// 다른 CLI는 모두 상류가 CLI별 별도 설치로 안내한다 — Copilot·Gemini·Codex·
|
|
10
|
+
// VS Code·Cursor는 각자 플러그인/확장, 나머지는 `npx skills add`의 단독 스킬.
|
|
11
|
+
// 같은 상류를 스킬로 넣지 않는 것은 코어만 고르려면 대화형 선택기가 필요해서다
|
|
12
|
+
// (비대화형 실행은 21종 전부를 설치한다).
|
|
13
|
+
export default definePlugin({
|
|
14
|
+
id: 'plugin.hyperframes', label: 'HyperFrames', group: '__service',
|
|
15
|
+
installId: 'hyperframes@hyperframes',
|
|
16
|
+
detectIds: ['hyperframes@hyperframes'],
|
|
17
|
+
marketplace: { name: 'hyperframes', repo: 'heygen-com/hyperframes' },
|
|
18
|
+
note: 'item.plugin.hyperframes.note',
|
|
19
|
+
verified: '2026-10-06',
|
|
20
|
+
unsupported: Object.fromEntries(
|
|
21
|
+
CLI_IDS.filter((c) => c !== 'claude').map((c) => [c, msg('item.unsupported.superpowersSeparate')]),
|
|
22
|
+
),
|
|
23
|
+
})
|
|
@@ -1,32 +1,28 @@
|
|
|
1
1
|
import { definePlugin } from '../catalog.mjs'
|
|
2
2
|
import { CLI_IDS } from '../clis.mjs'
|
|
3
3
|
import { msg } from '../i18n/index.mjs'
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
// 또 그 명령은 `--providers`와 `--scope`를 함께 주지 않으면 대화형으로 물으며,
|
|
14
|
-
// 비TTY에서는 조용히 global을 골라 홈에 설치한다.
|
|
15
|
-
// 상류 공식 프로바이더는 3.6.0 기준 16개(.agent=antigravity·.hermes가 새로
|
|
16
|
-
// 들어옴 — README는 아직 수동 복사만 안내해 코드가 앞선다). 이 저장소의 CLI와
|
|
17
|
-
// 겹치는 것은 아래 UPSTREAM 그대로다.
|
|
4
|
+
// 같은 상류를 공유 스킬(skill.impeccable)로도 넣을 수 있다. 플러그인은 Claude
|
|
5
|
+
// 하나에만 닿고 스킬 판은 11개 CLI가 함께 본다. 둘을 함께 켜면 같은 스킬이 두
|
|
6
|
+
// 경로에서 잡혀 중복 등록되므로 배타로 묶는다.
|
|
7
|
+
// 예전에는 `npx impeccable install`이 `.claude/skills` Junction을 실제
|
|
8
|
+
// 디렉터리로 갈아치운다는 이유(3.6.0 측정)로 스킬 경로를 막았지만, 4.1.0을
|
|
9
|
+
// 2026-10-06에 다시 재 보니 claude·kiro(Junction)와 codex·antigravity·gemini
|
|
10
|
+
// ·opencode·grok·copilot(symlink)에서 링크가 그대로 남았다. 그 사유는 폐기한다.
|
|
11
|
+
// 다만 그 명령은 provider마다 엔진 바이너리(약 19MB)를 따로 복사하고 비TTY에서
|
|
12
|
+
// 범위를 묻지 않으므로, 이 저장소는 레지스트리 스킬 경로를 쓴다.
|
|
18
13
|
const UPSTREAM = ['codex', 'gemini', 'opencode', 'kiro', 'grok', 'copilot', 'antigravity']
|
|
19
14
|
export default definePlugin({
|
|
20
15
|
id: 'plugin.impeccable', label: 'impeccable', group: '__style',
|
|
21
16
|
installId: 'impeccable@impeccable',
|
|
22
17
|
detectIds: ['impeccable@impeccable'],
|
|
23
18
|
marketplace: { name: 'impeccable', repo: 'pbakaus/impeccable' },
|
|
19
|
+
exclusive: 'impeccable',
|
|
24
20
|
note: 'item.plugin.impeccable.note',
|
|
25
|
-
verified: '2026-
|
|
21
|
+
verified: '2026-10-06',
|
|
26
22
|
unsupported: Object.fromEntries(
|
|
27
23
|
CLI_IDS.filter((c) => c !== 'claude').map((c) => [
|
|
28
24
|
c,
|
|
29
|
-
UPSTREAM.includes(c) ? msg('item.unsupported.
|
|
25
|
+
UPSTREAM.includes(c) ? msg('item.unsupported.impeccableSkill') : msg('item.unsupported.upstreamNone'),
|
|
30
26
|
]),
|
|
31
27
|
),
|
|
32
28
|
})
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defineRegistrySkill } from '../catalog.mjs'
|
|
2
|
+
// 같은 상류를 플러그인(plugin.impeccable)으로도 넣을 수 있다. 플러그인은 Claude
|
|
3
|
+
// 하나에만 닿고, 이쪽은 공유 .agents/skills라 11개 CLI가 함께 본다. 둘을 함께
|
|
4
|
+
// 켜면 같은 스킬이 플러그인 캐시와 공유 디렉터리 양쪽에서 잡혀 중복 등록되므로
|
|
5
|
+
// 배타로 묶는다.
|
|
6
|
+
// 레지스트리가 pbakaus/impeccable에서 읽는 스킬은 impeccable 하나다
|
|
7
|
+
// (`skills add --list`, 2026-10-06 확인). 엔진 바이너리는 포함되지 않는다 —
|
|
8
|
+
// `npx impeccable install`만 플랫폼별 실행 파일을 함께 내려 준다.
|
|
9
|
+
export default defineRegistrySkill({
|
|
10
|
+
id: 'skill.impeccable', label: 'impeccable (skill)', group: '__style',
|
|
11
|
+
source: 'https://github.com/pbakaus/impeccable',
|
|
12
|
+
skill: 'impeccable',
|
|
13
|
+
exclusive: 'impeccable',
|
|
14
|
+
note: 'item.skill.impeccable.note',
|
|
15
|
+
verified: '2026-10-06',
|
|
16
|
+
})
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { defineRegistrySkill } from '../catalog.mjs'
|
|
2
|
+
// remotion-dev/skills에는 최상위 스킬이 12개 있는데, remotion-best-practices가
|
|
3
|
+
// 나머지 11개(create·markup·studio·render·captions·maps…)를 하위 폴더로 모두
|
|
4
|
+
// 품는 상위 스킬이다(141개 파일, 1.1MB — 2026-10-06 실측). 하나만 받으면
|
|
5
|
+
// 되므로 --skill '*'(12개 중복 복사) 대신 이것만 고른다. 대신 /remotion-create
|
|
6
|
+
// 같은 개별 슬래시 명령은 생기지 않는다.
|
|
7
|
+
// 상류 라이선스는 SPDX가 아닌 Remotion License다 — 개인·직원 3명 이하 영리
|
|
8
|
+
// 조직·비영리는 무료, 그보다 큰 영리 조직은 회사 라이선스가 필요하다.
|
|
9
|
+
export default defineRegistrySkill({
|
|
10
|
+
id: 'skill.remotion', label: 'Remotion', group: '__service',
|
|
11
|
+
source: 'https://github.com/remotion-dev/skills',
|
|
12
|
+
skill: 'remotion-best-practices',
|
|
13
|
+
note: 'item.skill.remotion.note',
|
|
14
|
+
verified: '2026-10-06',
|
|
15
|
+
})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rch4com/agent-setup",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.27.0",
|
|
4
4
|
"description": "Repository-scoped bootstrap and optional-item installer for using multiple coding-agent CLIs in one repository | 여러 코딩 에이전트 CLI를 한 저장소에서 함께 쓰기 위한 저장소 범위 부트스트랩과 선택 항목 설치기",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agents-md",
|