@kaydash9999/banker-plugins 0.17.1 → 0.19.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.
Files changed (38) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +72 -0
  4. package/README.md +26 -8
  5. package/codex/manifest.json +3 -1
  6. package/codex/transform-matrix.md +5 -2
  7. package/commands/front-qa.md +3 -3
  8. package/hooks/graceful-pause.mjs +4 -2
  9. package/hooks/obsidize-hook.mjs +38 -28
  10. package/hooks/progress-plan.mjs +14 -8
  11. package/hooks/progress.mjs +174 -47
  12. package/hooks/register.mjs +14 -7
  13. package/hooks/update-checkin.mjs +29 -27
  14. package/package.json +1 -1
  15. package/skills/3d-intro-build/SKILL.md +1 -1
  16. package/skills/3d-intro-build/references/assemble.mjs +3 -3
  17. package/skills/3d-intro-setup/SKILL.md +3 -3
  18. package/skills/anti-drm/SKILL.md +254 -0
  19. package/skills/anti-drm/scripts/anti-drm.mjs +643 -0
  20. package/skills/anti-drm/scripts/instruction-toggle.mjs +733 -0
  21. package/skills/lineage/SKILL.md +3 -3
  22. package/skills/lineage/lineage.py +43 -7
  23. package/skills/omc-patch/SKILL.md +18 -6
  24. package/skills/omc-patch/scripts/omc-patch.mjs +400 -87
  25. package/skills/omc-reference/SKILL.md +1 -1
  26. package/skills/ralph-qa/SKILL.md +19 -19
  27. package/skills/theme-selection/SKILL.md +165 -0
  28. package/skills/theme-selection/assets/LICENSE +21 -0
  29. package/skills/theme-selection/assets/NOTICE.md +30 -0
  30. package/skills/theme-selection/assets/palettes.json +81 -0
  31. package/skills/theme-selection/references/contrast.md +138 -0
  32. package/skills/theme-selection/references/integrate.md +161 -0
  33. package/skills/theme-selection/scripts/themes.mjs +1067 -0
  34. package/skills/tone-compact/SKILL.md +8 -4
  35. package/skills/tone-compact/scripts/instruction-toggle.mjs +733 -0
  36. package/skills/tone-compact/scripts/tone-compact.mjs +48 -397
  37. package/skills/ultra-chain/SKILL.md +7 -6
  38. package/skills/update-banker/SKILL.md +1 -1
@@ -0,0 +1,254 @@
1
+ ---
2
+ name: anti-drm
3
+ description: "망분리 DRM 이 암호화하는 확장자(.txt, .csv 등) 대신 .md, .html, .tsv 로 파일을 만들게 하는 규칙을 켜고 끔. 처음 켤 때 금지 확장자와 대체 확장자를 물음. 인자가 없으면 `on`. `off` 할 때까지 모든 세션에 유지. 'anti-drm'/'DRM 확장자 피해'/'망분리 DRM' 시 사용."
4
+ argument-hint: "on | off | status | config"
5
+ ---
6
+
7
+ # anti-drm: DRM 이 암호화하는 확장자 피하기
8
+
9
+ - 망분리 PC 의 DRM 은 정해진 확장자의 파일을 암호화함
10
+ - 암호화된 파일은 에이전트와 개발 도구가 읽지 못함
11
+ - 이 스킬은 그 확장자 대신 대체 확장자로 파일을 만들게 하는 규칙을 켜고 끔
12
+ - 이미 DRM 이 걸린 파일을 풀거나 변환하지 않음. 에이전트가 새로 만드는 파일의 확장자만 정함
13
+ - 조직의 보안 규정이 이 스킬의 규칙보다 우선함
14
+
15
+ 인자: `$ARGUMENTS`
16
+ - `on`, `off`, `status`, `config` 중 하나. 비어 있으면 `on`
17
+ - Codex: 사용자 메시지에서 읽음
18
+
19
+ ## 실행
20
+
21
+ 1. 인자 확인
22
+ - 네 값 밖: 실행하지 않고 사용법 안내
23
+ - 사용자 입력을 셸 명령에 그대로 붙이지 않음
24
+ 2. 스크립트
25
+
26
+ ```bash
27
+ node "<이 스킬 디렉터리 절대경로>/scripts/anti-drm.mjs" <명령> [옵션]
28
+ ```
29
+
30
+ | 런타임 | `--runtime` | 스킬 디렉터리 |
31
+ |---|---|---|
32
+ | Claude Code | `claude` | 스킬 맨 위 "Base directory for this skill:" 경로 |
33
+ | Codex | `codex` | `~/.codex/skills/banker-anti-drm/` 의 절대경로. 프로젝트 범위 설치면 `./.codex/skills/banker-anti-drm/` |
34
+
35
+ 3. 아래 인자별 절차를 따름
36
+
37
+ ## 인자별 절차
38
+
39
+ ### `on`
40
+
41
+ 1. `status` 를 실행해 `- 설정:` 줄을 봄
42
+ 2. 그 줄에 따라 실행
43
+
44
+ | `- 설정:` 줄 | 다음 |
45
+ |---|---|
46
+ | `없음` | 아래 "질문" 을 한 뒤 "설정 넘기기" 대로 `on --runtime <런타임> --stdin` 실행 |
47
+ | 파일 경로 | `on --runtime <런타임>` |
48
+ | `올바르지 않음` | 이유를 전하고 "질문" 으로 설정을 다시 정한 뒤 `없음` 행과 같은 명령 실행 |
49
+
50
+ 3. 성공하면 출력의 `적용할 규칙:` 아래 규칙을 이 세션에 바로 적용. 다음 세션부터는 자동 적용
51
+
52
+ ### `off`
53
+
54
+ 1. `off --runtime <런타임>` 실행
55
+ 2. 성공하면 이 세션에서 규칙 적용을 멈춤
56
+ 3. 설정 파일은 남음. 다시 켤 때 묻지 않음
57
+
58
+ ### `status`
59
+
60
+ - `status` 를 실행하고 출력을 그대로 전달
61
+
62
+ ### `config`
63
+
64
+ 1. `status` 로 지금 설정을 봄
65
+ 2. 지금 값을 함께 보이며 아래 "질문" 을 함
66
+ 3. "설정 넘기기" 대로 `config --stdin` 실행
67
+ 4. 이 런타임이 켜져 있으면 출력의 `적용할 규칙:` 아래 규칙을 이 세션에 바로 적용
68
+
69
+ ## 질문
70
+
71
+ - Claude Code: `AskUserQuestion` 한 번에 세 질문
72
+ - Codex: 같은 세 질문을 한 메시지로 묻고 답을 기다림
73
+ - `config` 에서는 질문 문구에 지금 값을 넣음 (예: `지금: .txt .pdf`)
74
+
75
+ ### 질문 1. 금지 확장자 (여러 개 선택)
76
+
77
+ - 문서: `.txt` `.doc` `.docx` `.hwp` `.hwpx`
78
+ - PDF와 발표: `.pdf` `.ppt` `.pptx`
79
+ - 표: `.xls` `.xlsx` `.csv`
80
+ - 직접 입력: 더할 확장자 또는 전체 목록
81
+ - 권고: 세 묶음 모두
82
+
83
+ ### 질문 2. 대체 확장자 (여러 개 선택)
84
+
85
+ - `.md`: 글과 메모
86
+ - `.html`: 서식 문서와 발표 자료
87
+ - `.tsv`: 표 데이터
88
+ - 직접 입력
89
+ - 권고: 셋 모두
90
+
91
+ ### 질문 3. TSV 구분자 (하나 선택)
92
+
93
+ - 질문 2 에서 `.tsv` 를 고른 경우에만 적용
94
+ - 탭(권고): 표준 TSV
95
+ - 쉼표: CSV 내용을 그대로 쓰고 확장자만 `.tsv`. 읽고 쓰는 코드에 구분자 쉼표를 명시해야 함
96
+
97
+ ### 답 처리
98
+
99
+ 1. 고른 묶음의 확장자와 직접 입력한 값을 합침
100
+ 2. 직접 입력은 쉼표나 공백으로 나눔
101
+ 3. 낱말마다 `^\.?[A-Za-z0-9]+$` 를 만족해야 함. 아니면 그 값을 보이고 다시 물음
102
+ 4. 금지와 대체에 같은 확장자가 있으면 다시 물음
103
+ 5. 정규화한 확장자만 넘김
104
+ - 소문자로 바꿈
105
+ - 앞에 점이 없으면 붙임
106
+ - 쉼표로 이어 "설정 넘기기" 의 `deny=`, `alt=` 줄에 씀
107
+ 6. 스크립트가 거부하면 그 메시지를 전하고 다시 물음
108
+
109
+ ### 설정 넘기기
110
+
111
+ - 설정 값은 명령줄 인자가 아니라 표준 입력으로 넘김. 따옴표 친 heredoc 안의 글은 셸이 해석하지 않음
112
+
113
+ ```bash
114
+ node "<이 스킬 디렉터리 절대경로>/scripts/anti-drm.mjs" config --stdin <<'ANTI_DRM_SETTINGS'
115
+ deny=.txt,.pdf
116
+ alt=.md,.html,.tsv
117
+ tsv=tab
118
+ ANTI_DRM_SETTINGS
119
+ ```
120
+
121
+ - `on` 은 `config` 자리에 `on --runtime <런타임>` 을 씀
122
+ - PowerShell 은 `@'` 와 `'@` 사이에 같은 세 줄을 두고 `| node "<경로>/scripts/anti-drm.mjs" config --stdin` 으로 넘김
123
+ - 넘기기 전에 heredoc 안의 줄마다 `^(deny|alt|tsv)=[a-z0-9., ]*$` 에 맞는지 확인. 하나라도 맞지 않으면 실행하지 않고 "질문" 으로 돌아감
124
+ - "답 처리" 의 단어 검사와 겹치는 두 번째 방벽. 끝 표시(`ANTI_DRM_SETTINGS`, PowerShell 의 `'@`)는 이 꼴에 맞을 수 없어 값이 heredoc 을 일찍 닫지 못함
125
+ - 줄은 `deny=`, `alt=`, `tsv=` 를 하나씩. `tsv=` 는 대체 확장자에 `.tsv` 가 있을 때만 씀
126
+ - `--stdin` 은 입력이 끝날 때까지 기다림. 늘 heredoc 이나 파이프로 넘김
127
+
128
+ ## 종료 코드
129
+
130
+ | 코드 | 뜻 | 처리 |
131
+ |---|---|---|
132
+ | 0 | 완료. 이미 그 상태였던 경우 포함 | 결과 전달 |
133
+ | 1 | 거부 또는 사용법 오류. 설정 값을 준 `on` 과 `config` 는 설정을 저장한 뒤 갱신하지 못한 런타임이 있어도 1 | 메시지 그대로 전달 |
134
+ | 2 | 예기치 못한 오류 | 메시지 전달 후 `status` 로 확인 |
135
+
136
+ - 출력이 비어 있으면 실행 실패. 성공으로 보고하지 않음
137
+
138
+ ## 규칙 틀
139
+
140
+ - 아래 구간은 스크립트가 설정으로 채우는 틀
141
+ - `{{map}}` 은 금지 확장자마다 대신 쓸 확장자를 적은 표가 됨
142
+ - `{{alts}}` 는 대체 확장자마다 쓰는 곳을 적은 표가 됨
143
+ - 이 세션에는 스크립트가 출력한 `적용할 규칙:` 아래 규칙을 적용함
144
+
145
+ <!-- anti-drm:rules:start -->
146
+ # 파일 확장자 규칙 (banker anti-drm)
147
+
148
+ - anti-drm 이 켜져 있는 동안 적용
149
+ - anti-drm 에 `off` 를 실행한 뒤에는 이 규칙이 맥락에 남아 있어도 적용하지 않음
150
+ - 이 PC 의 DRM 은 아래 금지 확장자 파일을 암호화함. 암호화된 파일은 에이전트와 개발 도구가 읽지 못함
151
+
152
+ ## 확장자 대응
153
+
154
+ - 확장자는 대소문자를 구분하지 않음
155
+
156
+ {{map}}
157
+
158
+ ## 대체 확장자
159
+
160
+ {{alts}}
161
+
162
+ ## 새 파일
163
+
164
+ - 새로 만드는 파일에 금지 확장자를 쓰지 않음. 위 표의 대체 확장자로 만듦
165
+ - 다음 파일도 같음
166
+ - 작업 파일과 임시 파일
167
+ - 로그와 시험 데이터
168
+ - 셸 리다이렉션과 스크립트가 만드는 파일
169
+ - 다른 스킬의 절차에 적힌 파일. 그 파일을 읽는 명령의 이름도 함께 바꿈
170
+
171
+ ## 금지 확장자 산출물
172
+
173
+ - 대상
174
+ - 사용자가 금지 확장자 파일을 명시해 요청함
175
+ - 다른 스킬의 산출물이 금지 확장자임
176
+ - 처리 순서
177
+ 1. 두 가지를 알림
178
+ - DRM 이 암호화하면 에이전트가 다시 읽지 못함
179
+ - 함께 둘 대체 확장자 원본은 DRM 이 보호하지 않음
180
+ 2. 사용자 확인 뒤 만듦
181
+ 3. 확인받았으면 내용 원본도 대체 확장자 파일로 함께 둠. 고칠 때는 원본을 고친 뒤 다시 만듦
182
+ 4. 만든 금지 확장자 파일은 다시 읽지 않음. 검증은 원본으로 함
183
+
184
+ ## 이미 있는 파일
185
+
186
+ - 금지 확장자 파일의 이름을 바꾸지 않음
187
+ - 읽은 내용이 깨진 바이너리면 DRM 이 암호화한 파일로 봄
188
+ - 풀거나 다른 형식으로 바꾸려 하지 않음
189
+ - 읽을 수 없다고 사용자에게 알림. 평문 사본을 요청하거나 권하지 않음
190
+ - 금지 확장자 파일을 고치기 전에 사용자에게 알림. 저장하면 암호화될 수 있음
191
+ - 도구가 이름을 정한 파일은 이름을 유지함 (예: `requirements.txt`)
192
+ - 새로 만들어야 하면 먼저 알림
193
+ - 대체 수단이 있으면 제안함 (예: `pyproject.toml`)
194
+ - 사용자가 요청한 프로그램의 출력 형식은 요청대로 둠. 금지 확장자를 만드는 코드면 알리기만 함
195
+
196
+ ## 범위
197
+
198
+ - 이 규칙은 에이전트가 새로 만드는 파일의 확장자만 정함
199
+ - 이미 DRM 이 걸린 파일을 풀거나 다른 형식으로 바꾸지 않음
200
+ - 조직의 보안 규정이 이 규칙보다 우선함
201
+ <!-- anti-drm:rules:end -->
202
+
203
+ ## 동작
204
+
205
+ | 런타임 | `on` | `off` |
206
+ |---|---|---|
207
+ | Claude Code | `<설정 폴더>/rules/banker-anti-drm.md` 생성. 세션 시작과 compaction 뒤에 자동 로드 | 파일 삭제 |
208
+ | Codex | Codex 가 읽는 전역 지침 파일 끝에 블록 1개 추가 | 그 블록만 제거. 켜기 전 내용으로 복원 |
209
+
210
+ - 설정 파일
211
+ - 위치: `~/.config/banker/anti-drm.json`. `BANKER_ANTI_DRM_CONFIG` 로 바꿈
212
+ - 두 런타임이 함께 씀
213
+ - `off` 는 지우지 않음
214
+ - `.md` 와 `.json` 은 금지할 수 없음. 규칙 파일과 설정 파일의 형식
215
+ - 목록은 각각 64개까지
216
+ - 읽는 파일: 64KiB 이하의 일반 파일만. 소유자는 이 계정, 또는 root 만 쓸 수 있는 root
217
+ - 폴더, FIFO, 64KiB 를 넘는 파일, 읽을 수 없는 파일은 덮어쓰지 않음
218
+ - anti-drm 이 쓰지 않은 파일이 그 자리에 있으면 `anti-drm.json.bak` 에 한 번 남김 (이 계정만 읽기 가능)
219
+ - 설정 폴더
220
+ - Claude Code: `$CLAUDE_CONFIG_DIR`, 없으면 `~/.claude`
221
+ - Codex: `$CODEX_HOME`, 없으면 `~/.codex`
222
+ - Codex 지침 파일
223
+ - `AGENTS.override.md` 에 banker 블록 말고도 내용이 있으면 그 파일
224
+ - 그 밖에는 `AGENTS.md`
225
+ - Codex 블록은 `USER:OMX:POLICY` 표시로 감쌈
226
+ - 블록이 남음: `omx setup --merge-agents`, 기본 `omx setup`(team 모드 켜짐)
227
+ - 블록이 사라짐: `omx setup --force`, 덮어쓰기 확인, team 모드를 끈 `omx setup`. 그 뒤 `on` 다시 실행
228
+ - Codex 파일 변경 전 내용: `<파일>.anti-drm.bak` (이 계정만 읽기 가능). `off` 결과에 그 경로를 알림
229
+ - `tone-compact` 블록과 같은 파일에 있어도 서로 건드리지 않음
230
+ - `on`, `off` 는 그 런타임만 바꿈
231
+ - 설정 값을 준 `on` 과 `config` 는 규칙이 들어 있는 다른 런타임도 새 규칙으로 바꿈
232
+ - UTF-8 이 아닌 지침 파일(CP949, UTF-16): 손대지 않고 거부
233
+
234
+ ## 문제 해결
235
+
236
+ | 메시지 | 조치 |
237
+ |---|---|
238
+ | 설정이 없습니다 | "질문" 으로 설정을 정해 `on` 에 넘김 |
239
+ | 표준 입력에 설정 줄이 없습니다 | heredoc 이 비었음. "설정 넘기기" 대로 줄을 넣어 다시 실행 |
240
+ | 표준 입력이 64KiB 보다 큽니다 | "답 처리" 대로 정규화한 값만 넘김 |
241
+ | 설정 파일이 올바르지 않습니다 | 이유를 전하고 `config` 로 다시 만들지 물은 뒤 진행. 다른 사용자 소유 파일은 지우거나 옮기지 않음. 무엇인지 보이고 사용자가 정하게 함 |
242
+ | 일반 파일이 아니라 설정을 저장하지 않았습니다 | 설정 경로의 폴더나 특수 파일은 지우지 않음. 무엇인지 보이고, 옮길지 다른 경로(`BANKER_ANTI_DRM_CONFIG`)를 쓸지 물은 뒤 다시 실행 |
243
+ | 64KiB 보다 큰 파일이라, 읽을 수 없는 파일이라 설정을 저장하지 않았습니다 | 그 파일이 무엇인지 보이고, 권한을 고칠지 옮길지 물은 뒤 다시 실행 |
244
+ | anti-drm 이 쓰는 형식이라 금지할 수 없습니다 | 금지 목록에서 `.md`, `.json` 을 뺌 |
245
+ | 같은 이름의 다른 파일이 있음 | `rules/banker-anti-drm.md` 가 banker 파일이 아님. 지우거나 이름을 바꾸지 않음. 내용을 보이고 어떻게 할지 물은 뒤 다시 실행 |
246
+ | 표시의 짝이 맞지 않음 | 지침 파일에 anti-drm 표시 줄이 한쪽만 있거나 문장 속에 있음. 또는 블록 안에 다른 표시 줄이 있음. 짝을 새로 맞추지 않음. 남은 표시 줄을 보이고 지울지 물은 뒤 다시 실행 |
247
+ | 다른 banker 블록만 있어 Codex 가 AGENTS.md 를 읽지 않음 | 메시지가 말한 스킬에서 `on` 실행 |
248
+ | 설정 폴더가 없음 | 해당 런타임 미설치. 또는 설정 폴더 환경 변수 값 확인 |
249
+ | 규칙이 지금 설정이나 이 버전과 다름 | `on` 한 번 실행 |
250
+ | UTF-8 이 아닌 파일 | 지침 파일을 바꾸지 않음. 인코딩을 보이고, 백업을 만든 뒤 UTF-8 로 바꿀지 물은 뒤 다시 실행 |
251
+ | 끊어진 링크라 그대로 두었습니다 | AGENTS.md 가 가리키는 파일이 없음. 링크를 지우거나 바꾸지 않음. 링크와 대상을 보이고 어떻게 할지 물은 뒤 다시 실행 |
252
+ | 일반 파일이 아님 | 지침 파일 자리(AGENTS.md, AGENTS.override.md)의 폴더나 특수 파일은 지우지 않음. 무엇인지 사용자에게 보이고, 옮기거나 이름을 바꿀지 물은 뒤 다시 실행 |
253
+ | 다른 banker 지침 작업이 끝나지 않아 그대로 두었습니다 | 다른 banker 스킬의 `on`, `off` 가 도는 중. 잠시 뒤 다시 실행. 끝나지 않은 작업이 남긴 잠금은 1분 뒤 저절로 넘어감. 1분이 지나도 같거나 잠금 자리가 폴더면 잠금 경로를 보이고 어떻게 할지 물은 뒤 다시 실행. 잠금을 임의로 지우지 않음 |
254
+ | 쓸 권한이 없음 | 해당 파일과 폴더 권한 확인 |