@su-record/vibe 4.1.10 → 4.1.11

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 (35) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/README.md +5 -3
  5. package/agents/design-art-director.md +27 -0
  6. package/agents/design-markup-reviewer.md +28 -0
  7. package/agents/en-chief-editor.md +3 -0
  8. package/agents/en-copy-editor.md +3 -0
  9. package/agents/ko-chief-editor.md +6 -0
  10. package/agents/ko-copy-editor.md +7 -0
  11. package/dist/core/checks/packs.js +27 -0
  12. package/dist/core/checks/packs.js.map +1 -0
  13. package/dist/core/checks/review.js +50 -28
  14. package/dist/core/checks/review.js.map +1 -1
  15. package/dist/core/checks/source.js +51 -0
  16. package/dist/core/checks/source.js.map +1 -0
  17. package/dist/core/scenarios.js +3 -0
  18. package/dist/core/scenarios.js.map +1 -1
  19. package/dist/install/plugin.js +19 -13
  20. package/dist/install/plugin.js.map +1 -1
  21. package/package.json +1 -1
  22. package/reviewers/design/1-markup-reviewer.md +21 -0
  23. package/reviewers/design/2-art-director.md +20 -0
  24. package/reviewers/en/{copy-editor.md → 1-copy-editor.md} +3 -0
  25. package/reviewers/en/{chief-editor.md → 2-chief-editor.md} +3 -0
  26. package/reviewers/ko/{copy-editor.md → 1-copy-editor.md} +7 -0
  27. package/reviewers/ko/{chief-editor.md → 2-chief-editor.md} +6 -0
  28. package/skills/antislop-design/SKILL.md +231 -0
  29. package/skills/antislop-design/references/catalogue.md +42 -0
  30. package/skills/antislop-design/references/plan.md +131 -0
  31. package/skills/antislop-en/SKILL.md +50 -0
  32. package/skills/antislop-en/references/editorial-review.md +1 -1
  33. package/skills/antislop-ko/SKILL.md +88 -0
  34. package/skills/antislop-ko/references/editorial-review.md +1 -1
  35. package/skills/vibe-scope/SKILL.md +2 -1
@@ -235,6 +235,56 @@ no real logic or rhythm behind them, not as a list of forbidden words:
235
235
  - Manufactured significance with no named source: "This is a testament to," "This speaks volumes about," "game-changer," "a paradigm shift."
236
236
  - A rhetorical question used as an opener to manufacture urgency: "Have you ever wondered...?"
237
237
  - A stock transition into the body that adds nothing: "Let's dive in," "Without further ado."
238
+ - False range: "from X to Y" where X and Y sit on no real scale, as in "from innovation to cultural transformation." Name the actual items instead of stretching them into a spectrum with nothing in the middle.
239
+ - The "serves as" dodge: "serves as," "stands as," "marks," "represents" standing in for a plain "is." "The gallery serves as LAAA's exhibition space" becomes "The gallery is LAAA's exhibition space."
240
+ - The magic adverb: "quietly," "arguably," "fundamentally" lending an ordinary claim weight the evidence hasn't earned. Cut the adverb; if the claim needs it to be true, the claim itself is weak.
241
+ - "Not X. Not Y. Just Z.": a manufactured countdown that stages the real point instead of stating it. Delete the setup and say Z.
242
+ - The bold-first bullet: every list item opens with a bolded label and colon that only restate the item that follows. Write the list as prose, or drop the bold where the label adds nothing the sentence doesn't already say.
243
+ - The colon reveal: a flat clause, a colon, then a dramatic lowercase payoff, as in "The best part: it learns." State it as one sentence instead: "It learns, which is the part that matters."
244
+ - Engineering metaphor nouns used as scaffolding rather than description: "substrate," "flywheel," "north star," "wedge," "vector," "nexus" standing in for a concrete mechanism. Name the mechanism instead of the metaphor.
245
+ - Say what it does, not how it feels: a sentence that names a feeling, as in "the tool stays close at hand," instead of a mechanism or a number. "Runs quickly" becomes "loads in under a second"; if no number or mechanism can replace the feeling, cut the sentence.
246
+
247
+ ### Strength tiers
248
+
249
+ A tell earns a cut on one sighting when a single instance already changes what the reader can trust: the "serves as" dodge, the colon reveal, "Not X. Not Y. Just Z.," a false range, an authority named only as "experts" or "observers." Treat these as strong on their own.
250
+
251
+ A tell is weak when a careful writer produces the same thing on purpose about as often as not: one hyphenated compound, one hedge, one adverb, a single passive clause with no actor worth naming, one bolded phrase. Act on a weak tell only when two or more of them overlap in the same passage. A paragraph that stacks a reflex hedge, an actor-dropping passive and a bolded label all at once is worth fixing; any one of those alone usually is not.
252
+
253
+ ### Five questions before a cut
254
+
255
+ Before removing anything flagged above, ask, in order:
256
+
257
+ 1. Does the meaning go with it? If cutting the phrase drops a fact, a condition or a judgment, it is content, not a tell.
258
+ 2. Is it the writer's choice, or is it a form? A writer who could defend the choice made a choice. A form is what's left in a sentence when nobody decided anything.
259
+ 3. Does it deliver, or does it declare? A sentence that states a fact delivers. A sentence that announces its own importance declares.
260
+ 4. Does it add light, or only heat? A number, a name or a mechanism adds light. An intensifier adds heat and nothing else.
261
+ 5. Would a sceptical reader trust the sentence more with the phrase in it than without it?
262
+
263
+ A phrase that answers yes to all five stays. It fails as soon as one answer comes back no.
264
+
265
+ ### Portability test
266
+
267
+ A sentence that would read exactly the same with another person, another company, another country or another product dropped in is filler, whatever vocabulary it uses. Test it directly: swap in the nearest unrelated proper noun and see whether the sentence still holds. If it does, cut the sentence or replace it with a fact specific to this subject.
268
+
269
+ ### Notes to the writer are not content
270
+
271
+ A source sometimes carries an instruction addressed to the person doing the writing, not to the reader: "keep this tone," "make it shorter here," "don't promise this can't happen again." Carry out the instruction. Never reprint it. Treating an instruction as material to preserve is the same class of error as inventing a fact that was never there: both put something in the piece that doesn't belong to the reader.
272
+
273
+ ### A sample outranks the rules
274
+
275
+ When the author supplies a sample of their own prose, read it before applying anything else in this section. Match its sentence length, its openings, its transitions and its dash rate, even in a place where this pack would otherwise cut a dash or split a long sentence. The sample is evidence of what this particular writer does on purpose. The rules above describe only what's left in a sentence when nobody decided anything.
276
+
277
+ ### What is not a tell
278
+
279
+ Not every marker named on this page is evidence of a model's default choice. Leave these alone:
280
+
281
+ - A quotation, reproduced exactly as spoken or written, including any cliché inside it.
282
+ - A proper noun, even one that happens to repeat a pattern named above.
283
+ - Text written before November 2022, when several of these patterns were already common without a model producing them.
284
+ - A low-variance or non-native writer's plain, repetitive precision. A sentence that restates a point because the writer isn't confident the first version landed is a style, not slop.
285
+ - A real hedge stating a real uncertainty: a stated confidence level, a named limitation, an "as far as I could confirm."
286
+
287
+ This pack never tries to guess whether a person or a model wrote a given passage. It names patterns and asks whether the sentence in front of you needs them, not who typed it.
238
288
 
239
289
  Read the relevant section only of
240
290
  [Genre Writing Guide](references/genres.md) when a genre-specific judgment is
@@ -37,7 +37,7 @@ reviewers in sequence.
37
37
  ```
38
38
 
39
39
  - `path` is the full manuscript under review, `contract` is the editorial contract, and `evidence` is the evidence ledger. Both can be omitted, but a manuscript for outside submission should keep both as files. If `lang` is not set, the harness infers it from the manuscript's script.
40
- - The harness runs `reviewers/en/copy-editor.md` first, and only on a pass runs `reviewers/en/chief-editor.md`. A stage passes only when the entire response is exactly one line, `PASS`. Any response that differs from the `REJECT` list format counts as a failure, and the response is kept in evidence's `tail`.
40
+ - The harness runs `reviewers/en/1-copy-editor.md` first, and only on a pass runs `reviewers/en/2-chief-editor.md`. A stage passes only when the entire response is exactly one line, `PASS`. Any response that differs from the `REJECT` list format counts as a failure, and the response is kept in evidence's `tail`.
41
41
  - If the same failure repeats twice, the harness stops at STUCK and asks in the inbox. The writer fixes the `REJECT` items with the smallest possible change and reruns `vibe check`. If an item conflicts with the evidence or only enforces a preference and cannot be fixed, don't discard it — hand it to `vibe ask` along with the conflict.
42
42
 
43
43
  ## Reviewer input bundle
@@ -141,6 +141,20 @@ metadata:
141
141
  - 한 문장에는 중심 판단을 하나 둔다. 예외와 조건은 적용 대상을 알아볼 수 있게 붙인다.
142
142
  - 조사 하나로 관계가 선명해지면 쉼표나 문장 분할보다 조사를 고친다.
143
143
 
144
+ ### 조사·어미 생략
145
+
146
+ 토큰을 줄이려고 조사와 어미를 지우면 명사가 나열될 뿐 누가 누구에게 무엇을 했는지,
147
+ 언제 어떤 조건으로 일어났는지가 사라진다. 없어도 읽히는 문장이 아니라 다르게 읽히는
148
+ 문장이 문제다. 지운 자리에 조사와 어미를 되살려 주체, 시점, 조건, 책임을 다시 밝힌다.
149
+
150
+ - 예산 초과 시 팀장 보고 → 예산이 초과되면 담당자가 팀장에게 보고한다.
151
+ - 지난주 시스템 점검 완료, 결과 이상 없음 → 지난주에 시스템 점검을 마쳤고 결과에서 이상을
152
+ 찾지 못했다.
153
+ - 오류 발생 시 재시도 자동, 3회 초과 알림 → 오류가 발생하면 시스템이 자동으로 재시도하고,
154
+ 세 번을 넘기면 담당자에게 알린다.
155
+ - 참석자 부족으로 회의 연기, 다음 주 재소집 → 참석자가 부족해서 회의를 연기했으니 다음
156
+ 주에 다시 소집한다.
157
+
144
158
  ### 번역투와 명사 중심 표현
145
159
 
146
160
  다음 꼴을 발견하면 자동으로 지우지 말고, 누가 무엇을 하는지 흐리는지 확인한다.
@@ -182,6 +196,9 @@ metadata:
182
196
  - 쉼표는 호흡 표시가 아니라 문장 관계를 밝힐 때 쓴다. 쉼표로 긴 문장을 버티지 않는다.
183
197
  - 큰따옴표·작은따옴표·괄호·가운뎃점은 문서 안에서 한 방식으로 쓴다.
184
198
  - 높임말과 종결 어미는 독자와 상황에 맞춰 정한 뒤 한 글 안에서 까닭 없이 오가지 않는다.
199
+ - 줄표(—)는 두 구절의 관계를 밝히지 않고 뭉뚱그릴 때 쓰기 쉽다. 앞뒤가 원인과 결과, 예시,
200
+ 부연 가운데 무엇인지 스스로 답할 수 없는 줄표는 쌍점이나 접속 표현으로 바꾸거나 문장을
201
+ 둘로 나눈다. 필자가 실제로 즐겨 쓰는 리듬이면 [필자 샘플이 규칙보다 앞선다](#필자-샘플이-규칙보다-앞선다)를 따른다.
185
202
 
186
203
  ### 4. 문단과 구성
187
204
 
@@ -241,6 +258,77 @@ AI 상투문은 특정 낱말이 아니라 **근거 없이 어디에나 붙일
241
258
  - 모든 문단을 같은 길이와 같은 삼단 나열로 맞추는 습관
242
259
  - `또한·한편·결국·핵심은`으로 관계를 설명한 척하는 문장
243
260
  - 앞 내용을 표어로 한 번 더 말하는 결말과 억지 행동 촉구
261
+ - 실제 두 끝을 재지 않은 `A부터 B까지`: `사소한 오타부터 근본적인 설계 결함까지 다양하다`처럼
262
+ 범위감만 주고 실제 항목은 하나도 대지 않는 문장
263
+ - `이다`를 피해 `~로 자리매김한다`, `~역할을 한다`, `~로 기능한다`로 돌려 말하기: `이 문서는
264
+ 팀의 나침반 역할을 한다` 대신 `이 문서는 팀의 기준이다`
265
+ - 근거 없이 무게만 얹는 부사: `조용히 방향을 바꿨다`, `근본적으로 다른 접근이다`처럼 `조용히·
266
+ 분명히·근본적으로`가 판단의 이유 없이 붙는 경우
267
+ - `A도 아니다. B도 아니다. 오직 C다.` 식 셋으로 끊어 말하는 결말
268
+ - 모든 항목이 굵은 핵심어로 시작하는 목록: 정보가 굵은 글씨 자체가 아니라 뒤에 오는 설명에
269
+ 있을 때
270
+ - 쌍점 뒤에 극적으로 답을 얹는 문장: `가장 좋은 점: 배운다는 것이다`
271
+ - 공학 은유 명사의 남용: `플라이휠`, `북극성`, `기반`, `레버리지`를 실제 비유가 필요 없는
272
+ 자리에까지 붙이는 습관
273
+ - 느낌으로 뭉뚱그린 문장: `사용자가 편안함을 느낀다`, `만족스러운 경험을 제공한다` 대신
274
+ 무엇이 어떻게 바뀌었는지 동작과 숫자로 쓴다
275
+
276
+ ### 표지의 강도
277
+
278
+ 같은 표지라도 세기가 다르다. 강한 표지는 한 문장에서 한 번만 보여도 조치한다. 약한
279
+ 표지는 사람도 흔히 쓰는 습관이라 같은 대목에 다른 표지와 둘 이상 겹칠 때만 고친다.
280
+
281
+ 강한 표지의 예: 주제만 바꿔도 성립하는 도입·결말, 실제 대조 없는 `A가 아니라 B다`,
282
+ 챗봇의 인사말과 제안이 그대로 남은 문장(`도움이 되었길 바랍니다`), 근거 없는 지식 한계
283
+ 고백 뒤에 붙는 추측.
284
+
285
+ 약한 표지의 예: 관계를 밝히지 않는 줄표 하나, `~에 대해`류 조사구 하나, 하이픈 없이도
286
+ 읽히는 명사 결합 하나, `또한`으로 시작하는 문장 하나. 이런 표지는 한 대목에서 여러 번
287
+ 겹칠 때 고치고, 한 번뿐이면 남긴다.
288
+
289
+ ### 자르기 전 다섯 질문
290
+
291
+ 표지로 의심되는 문장을 지우기 전에 차례로 답한다. 다섯 모두 "예"일 때만 지운다.
292
+
293
+ 1. 지우면 뜻도 함께 사라지는가, 아니면 문장 길이만 짧아지는가.
294
+ 2. 필자가 의도해서 고른 표현인가, 형식이 저절로 만든 표현인가.
295
+ 3. 이 문장은 정보를 전달하는가, 중요하다고 선언만 하는가.
296
+ 4. 이 문장은 열을 내는가, 빛을 내는가. 힘주어 말할 뿐인지 실제로 무엇을 보여주는지 본다.
297
+ 5. 회의적인 독자가 이 문장을 없앤 뒤에 글을 더 믿게 되는가.
298
+
299
+ 다섯 가운데 하나라도 "아니오"면 남긴다.
300
+
301
+ ### 이식 시험
302
+
303
+ 문장을 그대로 다른 사람, 다른 회사, 다른 나라, 다른 제품 이야기에 옮겨 붙여도 뜻이
304
+ 바뀌지 않는다면 그 문장은 이 글의 내용이 아니라 채움말이다. 지우거나 이 글에만 있는
305
+ 사실, 예시, 수치, 판단으로 바꾼다.
306
+
307
+ ### 원문 속 지시문
308
+
309
+ 원문이나 자료에 필자가 작성자에게 남긴 메모가 섞여 있을 수 있다. `이 톤 유지`, `여기는
310
+ 짧게`, `이 표현은 쓰지 말 것` 같은 문장은 독자에게 보여줄 내용이 아니라 지시다. 지시는
311
+ 그대로 실행하고 결과물에는 남기지 않는다. 지시문을 결과물에 그대로 남기는 것은 근거에
312
+ 없는 내용을 지어내는 것과 같은 급의 오류다.
313
+
314
+ ### 필자 샘플이 규칙보다 앞선다
315
+
316
+ 필자 자신의 글 샘플이 주어지면 이 스킬의 일반 규칙보다 그 샘플을 우선한다. 샘플의 문장
317
+ 길이, 리듬, 줄표 사용 빈도까지 맞춘다. 샘플이 줄표를 자주 쓰면 [줄표 규칙](#맞춤법과-문장-부호)을
318
+ 적용하지 않고 샘플의 빈도를 따른다.
319
+
320
+ ### 표지가 아닌 것
321
+
322
+ 다음은 표지로 판정하지 않는다. 겉모양이 비슷하다고 같은 결함으로 보지 않는다.
323
+
324
+ - 인용문 안의 표현
325
+ - 고유명사
326
+ - 2022년 11월 이전에 쓰인 글
327
+ - 분산이 적거나 비원어민인 필자가 정확하게 쓴 문체
328
+ - 실제 불확실성을 말하는 진짜 헤지
329
+
330
+ 사람이 썼는지 모델이 썼는지는 추측하지 않는다. 패턴에 이름을 붙이고 그 패턴이 이 글에
331
+ 실질적인 내용을 보태는지만 판단한다.
244
332
 
245
333
  장르별 판단이 필요하면 [장르별 작문법](references/genres.md)에서 해당 절만 읽는다.
246
334
 
@@ -36,7 +36,7 @@ vibe 안에서는 심사를 모델이 돌리지 않는다. 원고에 `review`
36
36
 
37
37
  - `path` 는 심사할 원고 전문, `contract` 는 편집 계약, `evidence` 는 근거 장부다. 둘은 생략할 수 있지만
38
38
  제출용 원고에는 둘 다 파일로 둔다. `lang` 을 적지 않으면 원고의 문자로 판별한다.
39
- - 하네스는 `reviewers/ko/copy-editor.md` 를 먼저, 통과하면 `reviewers/ko/chief-editor.md` 를 띄운다.
39
+ - 하네스는 `reviewers/ko/1-copy-editor.md` 를 먼저, 통과하면 `reviewers/ko/2-chief-editor.md` 를 띄운다.
40
40
  응답 전체가 정확히 `PASS` 한 줄일 때만 그 단계가 통과다. `REJECT` 목록과 형식이 다른 응답은 모두
41
41
  실패이고, 응답은 evidence 의 `tail` 에 남는다.
42
42
  - 같은 실패가 두 번 이어지면 하네스가 STUCK 으로 멈추고 인박스에 묻는다. 작성자는 `REJECT` 항목을
@@ -9,8 +9,9 @@ user-invocable: false
9
9
  ## Procedure
10
10
 
11
11
  1. Turn the discovery result into scenarios. A scenario is stored only if it carries exactly one check type:
12
- - `run` command exit code · `file` exists/regex/contains/schema/sum (a column total equals a reference) · `http` status/schema/maxMs · `eval` count of matching labelled cases (jsonl `{input, expected}` through a runner's stdin/stdout, `expect.pass` is a count) · `review` a language pack's copy editor then chief editor, run by the harness, exact `PASS` only · `human` no verdict (goes to the inbox)
12
+ - `run` command exit code · `file` exists/regex/contains/schema/sum (a column total equals a reference) · `http` status/schema/maxMs · `eval` count of matching labelled cases (jsonl `{input, expected}` through a runner's stdin/stdout, `expect.pass` is a count) · `review` an antislop pack's reviewer stages in order (text: copy editor → chief editor; design: markup reviewer → art director), run by the harness, exact `PASS` only · `human` no verdict (goes to the inbox)
13
13
  - When a success condition is human-read text (blog, column, article, report, script, speech), propose `check: { type: review, path: <file>, contract: <file>, evidence: <file> }` and mark it `⚠ model-judged` in the approval message.
14
+ - When it is something a person looks at (screen, page, component, dashboard, slide, card news, poster), propose `check: { type: review, pack: design, path: <file or directory>, contract: <brief>, screenshot: <png, if an earlier scenario renders one> }`, same mark.
14
15
  - A condition you cannot check gets `human` explicitly. An irreversible action (push, deploy, send, delete, spend) gets `irreversible: <action>`.
15
16
  - A scenario that only makes sense after another one has passed gets `needs: [ids]`. The harness orders and parallelises checks from these edges; keep a connected graph under six scenarios.
16
17
  2. Check for missing scenario kinds yourself: the failure path, rollback, permission boundaries. Add them or say in one line why they are not needed. When the intent writes code, propose a size gate: `check: { type: run, cmd: "vibe size src --max-file 400 --max-function 50" }`.