chill-agent 1.5.0 โ†’ 1.6.1

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 (188) hide show
  1. package/.claude-plugin/contrast-mcp-launcher.mjs +31 -0
  2. package/.claude-plugin/plugin.json +8 -3
  3. package/.cline-plugin/plugin.js +6 -0
  4. package/.codex-plugin/plugin.json +4 -3
  5. package/.cursor-plugin/marketplace.json +16 -0
  6. package/.cursor-plugin/plugin.json +2 -2
  7. package/.devin-plugin/plugin.json +2 -2
  8. package/.kimi-plugin/plugin.json +11 -29
  9. package/.omp-plugin/marketplace.json +15 -0
  10. package/.openclaw/skills/ponytail/SKILL.md +2 -7
  11. package/.openclaw/skills/ponytail-audit/SKILL.md +3 -6
  12. package/.openclaw/skills/ponytail-debt/SKILL.md +3 -4
  13. package/.openclaw/skills/ponytail-gain/SKILL.md +3 -4
  14. package/.openclaw/skills/ponytail-help/SKILL.md +3 -3
  15. package/.openclaw/skills/ponytail-review/SKILL.md +3 -6
  16. package/.opencode/plugins/ponytail.mjs +1 -1
  17. package/.qoder-plugin/plugin.json +12 -26
  18. package/AGENTS.md +32 -19
  19. package/__init__.py +1 -1
  20. package/assets/antislop-banner.png +0 -0
  21. package/assets/band/band.png +0 -0
  22. package/assets/band/board.png +0 -0
  23. package/assets/benchmark-3model.svg +21 -0
  24. package/assets/benchmark-agentic.svg +62 -0
  25. package/assets/codex-icon.png +0 -0
  26. package/assets/compare/code/after.webp +0 -0
  27. package/assets/compare/code/before.webp +0 -0
  28. package/assets/compare/text/after.webp +0 -0
  29. package/assets/compare/text/before.webp +0 -0
  30. package/assets/compare/ui/w-all.webp +0 -0
  31. package/assets/compare/ui/w-antislop.webp +0 -0
  32. package/assets/compare/ui/w-design.webp +0 -0
  33. package/assets/compare/ui/without.webp +0 -0
  34. package/assets/logo-dark.png +0 -0
  35. package/assets/logo-dark.svg +115 -0
  36. package/assets/logo-greenpt-dark.svg +27 -0
  37. package/assets/logo-greenpt.svg +27 -0
  38. package/assets/logo.png +0 -0
  39. package/assets/photoreunion-logo-dark.svg +4 -0
  40. package/assets/photoreunion-logo-light.svg +4 -0
  41. package/assets/profile.png +0 -0
  42. package/assets/retriever-logo-dark.svg +4 -0
  43. package/assets/retriever-logo-light.svg +4 -0
  44. package/assets/stories-banner.png +0 -0
  45. package/assets/v5/audit-es.png +0 -0
  46. package/assets/v5/audit-ja.png +0 -0
  47. package/assets/v5/audit-ko.png +0 -0
  48. package/assets/v5/audit-zh-CN.png +0 -0
  49. package/assets/v5/audit.png +0 -0
  50. package/assets/v5/beforeafter-es.png +0 -0
  51. package/assets/v5/beforeafter-ja.png +0 -0
  52. package/assets/v5/beforeafter-ko.png +0 -0
  53. package/assets/v5/beforeafter-zh-CN.png +0 -0
  54. package/assets/v5/beforeafter.png +0 -0
  55. package/assets/v5/chart-es.png +0 -0
  56. package/assets/v5/chart-ja.png +0 -0
  57. package/assets/v5/chart-ko.png +0 -0
  58. package/assets/v5/chart-zh-CN.png +0 -0
  59. package/assets/v5/chart.png +0 -0
  60. package/assets/v5/hero-es.jpg +0 -0
  61. package/assets/v5/hero-ja.jpg +0 -0
  62. package/assets/v5/hero-ko.jpg +0 -0
  63. package/assets/v5/hero-zh-CN.jpg +0 -0
  64. package/assets/v5/hero.jpg +0 -0
  65. package/assets/v5/ladder-es.png +0 -0
  66. package/assets/v5/ladder-ja.png +0 -0
  67. package/assets/v5/ladder-ko.png +0 -0
  68. package/assets/v5/ladder-zh-CN.png +0 -0
  69. package/assets/v5/ladder.png +0 -0
  70. package/assets/v5/review-es.png +0 -0
  71. package/assets/v5/review-ja.png +0 -0
  72. package/assets/v5/review-ko.png +0 -0
  73. package/assets/v5/review-zh-CN.png +0 -0
  74. package/assets/v5/review.png +0 -0
  75. package/assets/v5/tests-es.png +0 -0
  76. package/assets/v5/tests-ja.png +0 -0
  77. package/assets/v5/tests-ko.png +0 -0
  78. package/assets/v5/tests-zh-CN.png +0 -0
  79. package/assets/v5/tests.png +0 -0
  80. package/assets/waitlist-banner-es.png +0 -0
  81. package/assets/waitlist-banner-ja.png +0 -0
  82. package/assets/waitlist-banner-ko.png +0 -0
  83. package/assets/waitlist-banner-zh-CN.png +0 -0
  84. package/assets/waitlist-banner.png +0 -0
  85. package/benchmarks/.env.example +2 -0
  86. package/benchmarks/agentic/README.md +201 -0
  87. package/benchmarks/agentic/answer.py +288 -0
  88. package/benchmarks/agentic/compare.py +93 -0
  89. package/benchmarks/agentic/complete.py +178 -0
  90. package/benchmarks/agentic/judge.py +198 -0
  91. package/benchmarks/agentic/run.py +543 -0
  92. package/benchmarks/agentic/tasks.py +1544 -0
  93. package/benchmarks/arms/baseline.js +2 -0
  94. package/benchmarks/arms/caveman-SKILL.md +67 -0
  95. package/benchmarks/arms/caveman.js +8 -0
  96. package/benchmarks/arms/ponytail.js +8 -0
  97. package/benchmarks/behavior.js +54 -0
  98. package/benchmarks/behavior.yaml +40 -0
  99. package/benchmarks/correctness.js +291 -0
  100. package/benchmarks/loc.js +17 -19
  101. package/benchmarks/promptfooconfig.gemini.yaml +32 -0
  102. package/benchmarks/promptfooconfig.gpt-newest.yaml +33 -0
  103. package/benchmarks/promptfooconfig.yaml +41 -0
  104. package/benchmarks/results/2026-06-12-caveman-vs-ponytail.md +71 -0
  105. package/benchmarks/results/2026-06-12-v4-hardening-vs-caveman.md +125 -0
  106. package/benchmarks/results/2026-06-15-llama3.2-local.md +82 -0
  107. package/benchmarks/results/2026-06-16-correctness-gate-fix.md +113 -0
  108. package/benchmarks/results/2026-06-16-robustness-audit.md +135 -0
  109. package/benchmarks/results/2026-06-17-agentic-safety.md +164 -0
  110. package/benchmarks/results/2026-06-17-cost-verification.md +93 -0
  111. package/benchmarks/results/2026-06-18-agentic.md +219 -0
  112. package/benchmarks/results/2026-06-22-issue-245-217-comprehension.md +98 -0
  113. package/benchmarks/results/2026-10-07-agentic.md +186 -0
  114. package/bin/chill-agent.js +6 -6
  115. package/bin/chill-agent.mjs +7 -0
  116. package/cli/index.mjs +241 -0
  117. package/cli/lib/banner.mjs +21 -0
  118. package/cli/lib/install.mjs +498 -0
  119. package/cli/lib/settings.mjs +48 -0
  120. package/cli/package-lock.json +87 -0
  121. package/cli/package.json +42 -0
  122. package/cli/scripts/smoke-test.mjs +95 -0
  123. package/cli/scripts/smoke-worker.mjs +411 -0
  124. package/cli/scripts/sync-skills.mjs +81 -0
  125. package/examples/email-validation.md +156 -0
  126. package/examples/group-by.md +35 -0
  127. package/examples/infinite-scroll.md +58 -0
  128. package/examples/number-formatting.md +37 -0
  129. package/examples/rate-limit.md +272 -0
  130. package/examples/react-countdown.md +390 -0
  131. package/examples/url-params.md +41 -0
  132. package/gemini-extension.json +2 -2
  133. package/hooks/band/board.ts +560 -0
  134. package/hooks/band/logo.ts +3 -0
  135. package/hooks/band/metrics.ts +311 -0
  136. package/hooks/band/register.tsx +495 -0
  137. package/hooks/band/types.d.ts +34 -0
  138. package/hooks/claude-band.json +6 -0
  139. package/hooks/claude-codex-hooks.json +34 -4
  140. package/hooks/copilot-hooks.json +12 -2
  141. package/hooks/cursor-hooks.json +2 -2
  142. package/hooks/ponytail-band-import.js +274 -0
  143. package/hooks/ponytail-config.js +175 -0
  144. package/hooks/ponytail-map.js +111 -0
  145. package/hooks/ponytail-subagent.js +94 -0
  146. package/hooks/qoder-hooks.json +19 -4
  147. package/i18n/README.ko.md +230 -0
  148. package/package.json +12 -7
  149. package/pi-extension/test/extension.test.js +367 -0
  150. package/pi-extension/test/helpers.test.js +179 -0
  151. package/plugin.yaml +21 -12
  152. package/rules/antislop.mdc +18 -0
  153. package/scripts/build-openclaw-skills.js +60 -0
  154. package/scripts/check-repo.mjs +389 -0
  155. package/scripts/publish-openclaw-skills.js +75 -0
  156. package/scripts/skill-index.mjs +81 -0
  157. package/skills/antislop/SKILL.md +700 -0
  158. package/skills/antislop/VERSION +1 -0
  159. package/skills/antislop-code/SKILL.md +128 -0
  160. package/skills/antislop-copywriting/SKILL.md +407 -0
  161. package/skills/antislop-human/LICENSE-web-quality-skills +21 -0
  162. package/skills/antislop-human/SKILL.md +204 -0
  163. package/skills/antislop-human/contrast-check.py +168 -0
  164. package/skills/antislop-human/contrast-mcp.py +121 -0
  165. package/skills/antislop-human/references/A11Y-PATTERNS.md +249 -0
  166. package/skills/antislop-human/references/WCAG.md +127 -0
  167. package/skills/antislop-layoutmobile/SKILL.md +170 -0
  168. package/skills/antislop-ui/LICENSE-web-quality-skills +21 -0
  169. package/skills/antislop-ui/SKILL.md +344 -0
  170. package/skills/antislop-ui/references/CORE-WEB-VITALS.md +181 -0
  171. package/skills/antislop-ui/references/WEB-BASELINE.md +28 -0
  172. package/skills/plugin.json +5 -0
  173. package/src/package.json +3 -0
  174. package/tests/activation-map.test.js +63 -0
  175. package/tests/band-import.test.js +111 -0
  176. package/tests/band.test.tsx +520 -0
  177. package/tests/behavior.test.js +80 -0
  178. package/tests/gemini-extension.test.js +2 -2
  179. package/tests/grok-plugin.test.js +1 -1
  180. package/tests/hermes-plugin.test.js +1 -1
  181. package/tests/hooks-windows.test.js +205 -0
  182. package/tests/kimi-plugin.test.js +1 -1
  183. package/tests/map.test.js +30 -0
  184. package/tests/package-scripts.test.js +35 -0
  185. package/tests/package.test.js +23 -0
  186. package/tests/uninstall.test.js +202 -0
  187. /package/tests/{manifests.test.js โ†’ manifests.test.mjs} +0 -0
  188. /package/tests/{rules.test.js โ†’ rules.test.mjs} +0 -0
@@ -1,10 +1,25 @@
1
1
  {
2
- "version": 1,
2
+ "_comment": "Loaded live by .qoder-plugin/plugin.json (\"hooks\": \"./hooks/qoder-hooks.json\"). Qoder expands ${QODER_PLUGIN_ROOT} (the plugin install root) at runtime; see https://docs.qoder.com/en/cli/plugins#writing-plugin-hooks.",
3
3
  "hooks": {
4
- "sessionStart": [
4
+ "UserPromptSubmit": [
5
5
  {
6
- "command": "node \"./hooks/chill-activate.js\"",
7
- "timeout": 15
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "node \"${QODER_PLUGIN_ROOT}/hooks/ponytail-mode-tracker.js\""
10
+ }
11
+ ]
12
+ }
13
+ ],
14
+ "PreToolUse": [
15
+ {
16
+ "matcher": "task|Task",
17
+ "hooks": [
18
+ {
19
+ "type": "command",
20
+ "command": "node \"${QODER_PLUGIN_ROOT}/hooks/ponytail-subagent.js\""
21
+ }
22
+ ]
8
23
  }
9
24
  ]
10
25
  }
@@ -0,0 +1,230 @@
1
+ <p align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="../assets/logo-dark.png">
4
+ <img src="../assets/logo.png" width="220" alt="Ponytail, ๊ฒŒ์œผ๋ฅธ ์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž">
5
+ </picture>
6
+ </p>
7
+
8
+ <h1 align="center">Ponytail</h1>
9
+
10
+ <p align="center">
11
+ <em>์•„๋ฌด ๋ง๋„ ์•ˆ ํ•œ๋‹ค. ํ•œ ์ค„ ์“ด๋‹ค. ๋Œ์•„๊ฐ„๋‹ค.</em>
12
+ </p>
13
+
14
+ <p align="center">
15
+ <a href="https://trendshift.io/repositories/50668?utm_source=repository-badge&amp;utm_medium=badge&amp;utm_campaign=badge-repository-50668" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/repositories/50668" alt="DietrichGebert%2Fponytail | Trendshift" width="250" height="55"/></a>
16
+ </p>
17
+
18
+ <p align="center">
19
+ <img src="https://img.shields.io/github/stars/DietrichGebert/ponytail?style=flat-square&color=111111&label=stars" alt="Stars">
20
+ <img src="https://img.shields.io/github/v/release/DietrichGebert/ponytail?style=flat-square&color=111111&label=release" alt="Release">
21
+ <img src="https://img.shields.io/npm/v/@dietrichgebert/ponytail?style=flat-square&color=111111&label=npm" alt="npm">
22
+ <img src="https://img.shields.io/badge/works%20with-20%20agents-111111?style=flat-square" alt="Works with 20 agents">
23
+ <img src="https://img.shields.io/badge/license-MIT-111111?style=flat-square" alt="MIT license">
24
+ </p>
25
+
26
+ <p align="center">
27
+ <a href="https://trendshift.io/repositories/50668" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/50668/daily" alt="DietrichGebert/ponytail | Trendshift" width="250" height="55"/></a>
28
+ <a href="https://trendshift.io/repositories/50668" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/50668/weekly" alt="DietrichGebert/ponytail | Trendshift" width="250" height="55"/></a>
29
+ <a href="https://trendshift.io/repositories/50668?utm_source=trendshift-badge&amp;utm_medium=badge&amp;utm_campaign=badge-trendshift-50668" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/50668/monthly?language=JavaScript" alt="DietrichGebert%2Fponytail | Trendshift monthly ranking" width="250" height="55"/></a>
30
+ </p>
31
+
32
+ <p align="center">
33
+ <img src="../assets/v5/hero-ko.jpg" width="880" alt="Ponytail 5, ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋งŒ๋“ค์—ˆ๋‹ค: ์ฝ”๋“œ -53%, ์‹œ๊ฐ„ -41%, ๋น„์šฉ -26%, ํ† ํฐ -45%. ๊ทธ๋Ÿฐ๋ฐ๋„ ์œ„ํ—˜ํ•œ ๋กœ์ง์˜ 98%๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹ฌ๊ณ  ๋‚˜๊ฐ„๋‹ค. Ponytail ์—†์ด๋Š” 68%.">
34
+ </p>
35
+
36
+ <p align="center">
37
+ <strong>Ponytail 5: ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋งŒ๋“ค์—ˆ๋‹ค.</strong><br>
38
+ <strong>์ฝ”๋“œ -53% &middot; ์‹œ๊ฐ„ -41% &middot; ๋น„์šฉ -26% &middot; ํ† ํฐ -45%</strong><br>
39
+ <strong>๊ทธ๋Ÿฐ๋ฐ๋„: ์œ„ํ—˜ํ•œ ๋กœ์ง์˜ 98%๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹ฌ๊ณ  ๋‚˜๊ฐ„๋‹ค.</strong> Ponytail ์—†์ด๋Š”: 68%.<br>
40
+ <sub>Claude Code์—์„œ ๊ฐ™์€ ์—์ด์ „ํŠธ๋ฅผ ์Šคํ‚ฌ์ด ์žˆ์„ ๋•Œ์™€ ์—†์„ ๋•Œ๋กœ ๋ฒค์น˜๋งˆํฌํ–ˆ๋‹ค: ์‹ค์ œ FastAPI + React ์ €์žฅ์†Œ๋ฅผ ํฌํ•จํ•œ ์ž‘์—… 39๊ฐœ, Opus 5.5, ๊ฐ 5ํšŒ ์‹คํ–‰. <a href="#numbers">์ž์„ธํžˆ</a>.</sub>
41
+ </p>
42
+
43
+ <p align="center">
44
+ <sub><a href="../README.md">English</a> &middot; <a href="README.es.md">Espaรฑol</a> &middot; ํ•œ๊ตญ์–ด &middot; <a href="README.zh-CN.md">็ฎ€ไฝ“ไธญๆ–‡</a> &middot; <a href="README.ja.md">ๆ—ฅๆœฌ่ชž</a></sub><br>
45
+ <sub>์˜์–ด README์˜ ๋ฒˆ์—ญ๋ณธ์ด๋‹ค. ๋‚ด์šฉ์ด ๋‹ค๋ฅด๋ฉด <a href="../README.md">์˜์–ดํŒ</a>์ด ๊ธฐ์ค€์ด๋‹ค.</sub>
46
+ </p>
47
+
48
+ ---
49
+
50
+ <p align="center">
51
+ <a href="https://ponytail.dev/soon"><img src="../assets/waitlist-banner-ko.png" alt="๊ณง ๋ฌด์–ธ๊ฐ€๊ฐ€ ์˜จ๋‹ค, ๋Œ€๊ธฐ ๋ช…๋‹จ์— ๋“ฑ๋กํ•˜๊ธฐ" width="760"></a>
52
+ </p>
53
+
54
+ ## Ponytail๋กœ ์ด๋ฏธ ๋งŒ๋“  ๊ฒƒ
55
+
56
+ <a href="https://theretriever.app">
57
+ <picture>
58
+ <source media="(prefers-color-scheme: dark)" srcset="../assets/retriever-logo-dark.svg">
59
+ <img src="../assets/retriever-logo-light.svg" height="128" alt="Retriever">
60
+ </picture>
61
+ </a>
62
+ <a href="https://photoreunion.app/?ref=ponytail-gh">
63
+ <picture>
64
+ <source media="(prefers-color-scheme: dark)" srcset="../assets/photoreunion-logo-dark.svg">
65
+ <img src="../assets/photoreunion-logo-light.svg" height="128" alt="PhotoReunion">
66
+ </picture>
67
+ </a>
68
+
69
+ ---
70
+
71
+ ๋ˆ„๊ตฐ์ง€ ์•Œ ๊ฒƒ์ด๋‹ค. ๊ธด ํฌ๋‹ˆํ…Œ์ผ. ํƒ€์›ํ˜• ์•ˆ๊ฒฝ. ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ๋ณด๋‹ค ํšŒ์‚ฌ์— ์˜ค๋ž˜ ์žˆ์—ˆ๋‹ค. ์‰ฐ ์ค„์„ ๋ณด์—ฌ ์ฃผ๋ฉด ๊ฐ€๋งŒํžˆ ๋ณด๋‹ค๊ฐ€, ์•„๋ฌด ๋ง ์—†์ด ํ•œ ์ค„๋กœ ๋ฐ”๊ฟ” ๋†“๋Š”๋‹ค.
72
+
73
+ Ponytail์€ ๊ทธ ์‚ฌ๋žŒ์„ ๋‹น์‹ ์˜ AI ์—์ด์ „ํŠธ ์•ˆ์— ๋„ฃ๋Š”๋‹ค.
74
+
75
+ <a id="numbers"></a>
76
+ ## ์ˆ˜์น˜
77
+
78
+ <p align="center">
79
+ <img src="../assets/v5/chart-ko.png" width="880" alt="์Šคํ‚ฌ ์—†๋Š” ๊ธฐ์ค€์„  ๋Œ€๋น„ ๋น„์œจ. ์ฝ”๋“œ ์ค„ ์ˆ˜: Ponytail v4.13 52%, Ponytail 5 47%. ์ถœ๋ ฅ ํ† ํฐ: 57%์™€ 55%. ๋น„์šฉ: 84%์™€ 74%. ์‹œ๊ฐ„: 62%์™€ 59%.">
80
+ </p>
81
+
82
+ <p align="center">
83
+ <img src="../assets/v5/tests-ko.png" width="880" alt="์ฝ”๋“œ๋Š” ์ ˆ๋ฐ˜์ธ๋ฐ, ๊ทธ๋ž˜๋„ ๋” ๋‚ซ๋‹ค: ์œ„ํ—˜ํ•œ ๋กœ์ง์˜ 98%๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹ฌ๊ณ  ๋‚˜๊ฐ„๋‹ค (์Šคํ‚ฌ ์—†์Œ 68%). ์—์ด์ „ํŠธ๊ฐ€ ์ง์ ‘ ์“ด ํ…Œ์ŠคํŠธ๊ฐ€ ์ฃผ์ž…๋œ ๋ฒ„๊ทธ์˜ 66%๋ฅผ ์žก๋Š”๋‹ค (์Šคํ‚ฌ ์—†์Œ 46%).">
84
+ </p>
85
+
86
+ ์ฐจํŠธ๊ฐ€ ๋ณด์—ฌ ์ฃผ์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋‘ ๊ฐ€์ง€ ์žˆ๋‹ค. ๋ธ”๋ผ์ธ๋“œ ๋น„๊ต์—์„œ Ponytail 5์˜ ๋‹ต๋ณ€์€ ์ด์ „ Ponytail์˜ ๋‹ต๋ณ€์„ 110 ๋Œ€ 67๋กœ ์ด๊ฒผ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณด์•ˆ ์ž‘์—… 6๊ฐœ(SQL ์ธ์ ์…˜, ๊ฒฝ๋กœ ํƒ์ƒ‰, ์œ„์กฐ ํ† ํฐ, ์š”์ฒญ ์†๋„ ์ œํ•œ, ์ž˜๋ชป๋œ CSV ํ–‰, ์บ์‹ฑ)์—์„œ 30ํšŒ ์‹คํ–‰์„ ๋ชจ๋‘ ํ†ต๊ณผํ–ˆ๋‹ค: ์ฝ”๋“œ๋Š” ์ค„์—ˆ์ง€๋งŒ, ์•ˆ์ „์„ฑ์€ ๊ทธ๋Œ€๋กœ๋‹ค. ๋ฐฉ๋ฒ•, ์ž‘์—…๋ณ„ ํ‘œ, ํ•œ๊ณ„: [benchmarks/results/2026-10-07-agentic.md](../benchmarks/results/2026-10-07-agentic.md).
87
+
88
+ **๊ทœ์น™์€ ์ฒ˜์Œ๋ถ€ํ„ฐ "ํ† ํฐ์„ ๊ฐ€์žฅ ์ ๊ฒŒ"๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค.** ๊ทœ์น™์€ ์ด๊ฒƒ์ด๋‹ค: ์ž‘์—…์— ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์“ฐ๊ณ , ๊ฒ€์ฆ, ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ, ๋ณด์•ˆ, ์ ‘๊ทผ์„ฑ์€ ์ ˆ๋Œ€ ์ž˜๋ผ ๋‚ด์ง€ ์•Š๋Š”๋‹ค. ์ฝ”๋“œ๊ฐ€ ์ž‘์•„์ง€๋Š” ๊ฒƒ์€ ํ•„์š”ํ•œ ๋งŒํผ์ด๊ธฐ ๋•Œ๋ฌธ์ด์ง€, ์–ต์ง€๋กœ ์ค„์˜€๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋‹ค. ๋น„์šฉ๊ณผ ์ง€์—ฐ ์‹œ๊ฐ„์ด ์ค„์–ด๋“œ๋Š” ๊ฒƒ์€ ๋ถ€์ˆ˜ ํšจ๊ณผ๋‹ค.
89
+
90
+ ## ์ „ / ํ›„
91
+
92
+ <p align="center">
93
+ <img src="../assets/v5/beforeafter-ko.png" width="880" alt="ํ”„๋ก ํŠธ์—”๋“œ์— ๋‚ ์งœ ์„ ํƒ๊ธฐ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค˜. ์Šคํ‚ฌ ์—†์Œ: 335์ค„, ๋‹ฌ๋ ฅ๊ณผ ๋‚ ์งœ ์„ ํƒ๊ธฐ๋ฅผ ์†์œผ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. Ponytail 5: ์ €์žฅ์†Œ์˜ Input์„ type date๋กœ ์žฌ์‚ฌ์šฉํ•˜๋Š” 10์ค„์งœ๋ฆฌ ํŒŒ์ผ ํ•˜๋‚˜, ๊ทธ๋ž˜์„œ ๋‹ฌ๋ ฅ์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฐ€์ ธ์˜จ๋‹ค.">
94
+ </p>
95
+
96
+ ๋‚ ์งœ ์„ ํƒ๊ธฐ๋ฅผ ๋ถ€ํƒํ•œ๋‹ค. Ponytail์ด ์—†์œผ๋ฉด ์—์ด์ „ํŠธ๋Š” ๋‚ ์งœ ์„ ํƒ๊ธฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜, ๋‹ฌ๋ ฅ ์ „์ฒด๋ฅผ ์†์œผ๋กœ ๋งŒ๋“ ๋‹ค: 335์ค„. Ponytail 5๋Š” ๋จผ์ € ์ด๋ฏธ ์žˆ๋Š” ๊ฒƒ์„ ๋ณธ๋‹ค: ์ €์žฅ์†Œ์—๋Š” `Input` ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ๊ณ , ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—๋Š” ๋‚ ์งœ ์„ ํƒ๊ธฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ ๋‘˜์„ ํ•ฉ์นœ๋‹ค. 10์ค„.
97
+
98
+ ์‚ด์•„๋‚จ์€ ์˜ˆ์ œ๋Š” [examples/](../examples/)์— ๋” ์žˆ๋‹ค.
99
+
100
+ ## ๋‹ค์‹œ ๋งŒ๋“  ๋ฆฌ๋ทฐ
101
+
102
+ <p align="center">
103
+ <img src="../assets/v5/review-ko.png" width="880" alt="๋‹ค์‹œ ๋งŒ๋“  ๋ฆฌ๋ทฐ. ๋ฒค์น˜๋งˆํฌ์—์„œ ๋‚˜์˜จ ์‹ค์ œ /ponytail-review ์ง€์ : ๋ณ€๊ฒฝ์ด ํ•„๋“œ ์ด๋ฆ„์„ ๋ฐ”๊ฟจ๊ณ , ์†๋Œ€์ง€ ์•Š์€ ํŒŒ์ผ src/routes/feed.js๊ฐ€ ์ด์ œ ํฌ๋ž˜์‹œ๊ฐ€ ๋‚œ๋‹ค. ๋ฐ˜๋“œ์‹œ ๊ณ ์น  ๊ฒƒ: ์ด์ œ Atom ํ”ผ๋“œ๊ฐ€ ์š”์ฒญ๋งˆ๋‹ค ํฌ๋ž˜์‹œ๊ฐ€ ๋‚œ๋‹ค. ์ด๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€, ๋ฌธ์ œ, ๊ณ ์น˜๋Š” ๋ฐฉ๋ฒ•, ๋„˜์–ด๊ฐ€๋ฉด ์ƒ๊ธฐ๋Š” ์ผ๊นŒ์ง€ ํ•จ๊ป˜ ์ ํ˜€ ์žˆ๋‹ค. ์‹ฌ์–ด ๋‘” ๋ฌธ์ œ 100% ๋ฐœ๊ฒฌ, ์Šคํ‚ฌ ์—†์Œ 87%. diff ๋ฐ–์˜ ๋ฌธ์ œ 100% ๋ฐœ๊ฒฌ, ์Šคํ‚ฌ ์—†์Œ 78%.">
104
+ </p>
105
+
106
+ `/ponytail-review`๋Š” ์›๋ž˜ ์ž˜๋ผ ๋‚ผ ์ฝ”๋“œ๋งŒ ์ฐพ์•˜๋‹ค. ์ด์ œ๋Š” ์žฅ์• ๊ฐ€ ๋‚˜๋ฉด ํ˜ธ์ถœ๋˜๋Š” ์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž์ฒ˜๋Ÿผ ๋ฆฌ๋ทฐํ•œ๋‹ค: diff๋งŒ ๋ณด์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝ์ด ๋‹ฟ๋Š” ์ฝ”๋“œ๊นŒ์ง€ ์ฝ๊ณ , ๋ฒ„๊ทธ, ๋ณด์•ˆ, ์‹ค์ œ ๋ถ€ํ•˜, ๋น ์ง„ ํ…Œ์ŠคํŠธ, ์†๋„, ์ž˜๋ผ ๋‚ผ ๊ฒƒ์„ ํ™•์ธํ•œ๋‹ค. ์ง€์ ๋งˆ๋‹ค ๊ทธ ์ฝ”๋“œ๊ฐ€ ํ•˜๋Š” ์ผ, ๋ฌด์—‡์ด ์ž˜๋ชป๋˜๋Š”์ง€, ๊ณ ์น˜๋Š” ๋ฐฉ๋ฒ•, ๊ณ ์น˜์ง€ ์•Š์œผ๋ฉด ์ƒ๊ธฐ๋Š” ์ผ์„ ์ ๋Š”๋‹ค.
107
+
108
+ ## ๋‹ค์‹œ ๋งŒ๋“  ๊ฐ์‚ฌ
109
+
110
+ <p align="center">
111
+ <img src="../assets/v5/audit-ko.png" width="880" alt="์ €์žฅ์†Œ ์ „์ฒด๋ฅผ, ์ˆœ์œ„๋Œ€๋กœ. ์ด๊ฒƒ๋ถ€ํ„ฐ ๊ณ ์ณ๋ผ. ์ฐฝ๊ณ  ์žฌ๊ณ  ์ €์žฅ์†Œ์— ๋ฒค์น˜๋งˆํฌ๋กœ ๋Œ๋ฆฐ ์‹ค์ œ /ponytail-audit: 1 ๋ฐ˜๋“œ์‹œ ๊ณ ์น  ๊ฒƒ, 1,200์ด ๋“ค์–ด๊ฐ„ ์‚ฌ๋ฌด์‹ค ๋ฐฐ์น˜๊ฐ€ ํ†ต์งธ๋กœ ์‹คํŒจํ•œ๋‹ค. 2 ๋ฐ˜๋“œ์‹œ ๊ณ ์น  ๊ฒƒ, ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์ž˜๋ชป๋œ ํ–‰์„ ์กฐ์šฉํžˆ ๊ฑด๋„ˆ๋›ด๋‹ค. 3 ๋ฐ˜๋“œ์‹œ ๊ณ ์น  ๊ฒƒ, ์‚ฌ๋ฌด์‹ค ๋ฐฐ์น˜์—์„œ SKU๋ฅผ ์ž˜๋ชป ์ž…๋ ฅํ•˜๋ฉด ์กฐ์šฉํžˆ ๋ฌด์‹œ๋œ๋‹ค. 4 ๊ณ ์น˜๋Š” ๊ฒŒ ์ข‹์Œ, ์œ„ํ—˜ํ•œ ์ฝ”๋“œ ๊ฒฝ๋กœ์— ํ…Œ์ŠคํŠธ๊ฐ€ ์—†๋‹ค. 5 ์žˆ์œผ๋ฉด ์ข‹์Œ, ๋ณธ๋ฌธ์ด ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ฉด API๊ฐ€ ํฌ๋ž˜์‹œ๊ฐ€ ๋‚œ๋‹ค. ๊ฒฐ๋ก : 1๋ฒˆ๋ถ€ํ„ฐ ๊ณ ์นœ๋‹ค.">
112
+ </p>
113
+
114
+ `/ponytail-audit`๋Š” ๊ฐ™์€ ์ ๊ฒ€์„ ์ €์žฅ์†Œ ์ „์ฒด์— ํ•œ๋‹ค. ๋จผ์ € ์ฝ”๋“œ์˜ ์ง€๋„๋ฅผ ๊ทธ๋ฆฐ๋‹ค: ์ง„์ž…์ , ๋ฐ์ดํ„ฐ๊ฐ€ ํ˜๋Ÿฌ๊ฐ€๋Š” ๊ธธ, ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜ˆ์ƒํ•˜๋Š” ๋ถ€ํ•˜. ๊ทธ๋‹ค์Œ ์ฐพ์€ ๊ฒƒ์— ์ˆœ์œ„๋ฅผ ๋งค๊ธฐ๊ณ  ๋ฌด์—‡๋ถ€ํ„ฐ ๊ณ ์น ์ง€ ์•Œ๋ ค ์ค€๋‹ค. ์˜ˆ์ „ ๊ฐ์‚ฌ ๊ธฐ๋Šฅ์€ ์ง€์šธ ๊ฒƒ๋งŒ ๋‚˜์—ดํ–ˆ๋‹ค.
115
+
116
+ ## 5.3์˜ ์ƒˆ ๊ธฐ๋Šฅ: ๋ฐด๋“œ
117
+
118
+ <p align="center">
119
+ <img src="../assets/band/band.png" width="880" alt="Claude Code ํ”„๋กฌํ”„ํŠธ ์œ„์˜ ponytail ๋ฐด๋“œ. ์ž์„ธํžˆ ๋ณด๊ธฐ: ๋น„์šฉ $23.80, ๋งˆ์ง€๋ง‰ ํ„ด $1.14, ํ„ด๋‹น ํ‰๊ท  $0.72; ํ† ํฐ 56.7M, ์ถœ๋ ฅ 168k, 33ํ„ด; ์—์ด์ „ํŠธ ์‹œ๊ฐ„ 52m 14s; ์žฌ์‚ฌ์šฉ 71%, 5๊ฐœ ์žฌ์‚ฌ์šฉ, 2๊ฐœ ์ƒˆ๋กœ ์ž‘์„ฑ; ๋งˆ์ง€๋ง‰ ๋ณ€๊ฒฝ ๋’ค ํ…Œ์ŠคํŠธ ํ†ต๊ณผ. ๊ฐ„๋‹จํžˆ ๋ณด๊ธฐ๋Š” ๊ฐ™์€ ๋‚ด์šฉ์„ ํ•œ ์ค„๋กœ ๋ณด์—ฌ ์ค€๋‹ค.">
120
+ </p>
121
+
122
+ ์ด์ œ Claude Code์—์„œ ponytail์€ ํ”„๋กฌํ”„ํŠธ ์œ„์— ๋ฐด๋“œ๋ฅผ ๋ณด์—ฌ ์ค€๋‹ค: ์ง€๊ธˆ ์ž‘์—…์— ๋“  ๋น„์šฉ, ์‚ฌ์šฉํ•œ ํ† ํฐ๊ณผ ์—์ด์ „ํŠธ ์‹œ๊ฐ„, ์ƒˆ ์ฝ”๋“œ๋ฅผ ์“ฐ๋Š” ๋Œ€์‹  ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์–ผ๋งˆ๋‚˜ ์žฌ์‚ฌ์šฉํ–ˆ๋Š”์ง€, ๋งˆ์ง€๋ง‰ ๋ณ€๊ฒฝ ๋’ค์— ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ–ˆ๋Š”์ง€. ๋ฒ„ํŠผ์œผ๋กœ ๋ ˆ๋ฒจ์„ ๋ฐ”๊พธ๊ณ , `/ponytail-review`๋‚˜ `/ponytail-audit`๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ์ž‘์—…์„ Markdown์œผ๋กœ ๋ณต์‚ฌํ•˜๊ณ , ๋ฐด๋“œ๋ฅผ ํ•œ ์ค„๋กœ ์ ‘์„ ์ˆ˜ ์žˆ๋‹ค. ํ•„์š” ์—†๋‹ค๋ฉด `/ponytail band`๋กœ ์ˆจ๊ธฐ๊ณ , ๊ฐ™์€ ๋ช…๋ น์œผ๋กœ ๋‹ค์‹œ ์ผค ์ˆ˜ ์žˆ๋‹ค. Claude Code 2.1.290 ์ด์ƒ์ด ํ•„์š”ํ•˜๋ฉฐ, ํ„ฐ๋ฏธ๋„์ด๋‚˜ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์—์„œ ๋ณด์ธ๋‹ค. VS Code ์ฑ„ํŒ… ํŒจ๋„, ํด๋ผ์šฐ๋“œ ์„ธ์…˜, `claude -p`์—์„œ๋Š” ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค.
123
+
124
+ <p align="center">
125
+ <img src="../assets/band/board.png" width="880" alt="ponytail ๋ณด๋“œ, ๋กœ์ปฌ ํŽ˜์ด์ง€: ์ตœ๊ทผ 30์ผ ๋™์•ˆ ์„ธ์…˜ 61๊ฐœ, ์—์ด์ „ํŠธ ์‹œ๊ฐ„ 20h 13m, $285.30, ํ† ํฐ 492.5M; ํ”„๋กœ์ ํŠธ๋ณ„ ์—์ด์ „ํŠธ ์‹œ๊ฐ„ ์ถ”์ด; ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊ฐ€ ๋ถ™์€ ์ตœ๊ทผ ์„ธ์…˜; ํ™œ๋™ํ•œ ๋‚ ๊ณผ ์—ฐ์† ๊ธฐ๋ก.">
126
+ </p>
127
+
128
+ **Board**๋Š” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์˜ ์ž‘์—…์„ ๋ชจ์€ ๋กœ์ปฌ ํŽ˜์ด์ง€๋ฅผ ์—ฐ๋‹ค: ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๋น„์šฉ, ์—์ด์ „ํŠธ ์‹œ๊ฐ„, ํ† ํฐ, ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊ฐ€ ๋ถ™์€ ์„ธ์…˜ ๋ชฉ๋ก, ์ž‘์—…ํ•œ ๋‚ . ๊ธฐ๋ณธ ์„ค์ •์—์„œ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ด ์ปดํ“จํ„ฐ์˜ `~/.config/ponytail/band/`์—๋งŒ ๋‚จ๋Š”๋‹ค. `/ponytail band import`๋Š” ์ง€๋‚œ Claude Code ์„ธ์…˜์„ ๋น„์šฉ, ์—์ด์ „ํŠธ ์‹œ๊ฐ„, ํ† ํฐ๊ณผ ํ•จ๊ป˜ ๋ณด๋“œ์— ์ถ”๊ฐ€ํ•œ๋‹ค.
129
+
130
+ ## ์ž‘๋™ ๋ฐฉ์‹
131
+
132
+ <p align="center">
133
+ <img src="../assets/v5/ladder-ko.png" width="880" alt="์ฝ”๋“œ๋ฅผ ์“ฐ๊ธฐ ์ „์—, ์„ฑ๋ฆฝํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ ๋ฉˆ์ถ˜๋‹ค: 1 ์ด๊ฒŒ ๊ผญ ์žˆ์–ด์•ผ ํ•˜๋‚˜, 2 ์ด๋ฏธ ์ด ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์žˆ๋‚˜, 3 ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•ด ์ฃผ๋‚˜, 4 ํ”Œ๋žซํผ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ, 5 ์ด๋ฏธ ์„ค์น˜๋œ ์˜์กด์„ฑ, 6 ํ•œ ์ค„๋กœ ๋˜๋‚˜, 7 ๊ทธ๋‹ค์Œ์—์•ผ ๋Œ์•„๊ฐ€๋Š” ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ, ๋กœ์ง์ด ์žˆ์œผ๋ฉด ์ž‘์€ ํ…Œ์ŠคํŠธ ํ•˜๋‚˜๋„ ํ•จ๊ป˜.">
134
+ </p>
135
+
136
+ ์ด ์‚ฌ๋‹ค๋ฆฌ๋Š” ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•œ *๋‹ค์Œ์—* ๋ˆ๋‹ค. ์ดํ•ด๋ฅผ ๋Œ€์‹ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ณ€๊ฒฝ์ด ๋‹ฟ๋Š” ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ์‹ค์ œ ํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐ„ ๋’ค์— ๋‹จ๊ณ„๋ฅผ ๊ณ ๋ฅธ๋‹ค. ํ•ด๊ฒฐ์ฑ…์—๋Š” ๊ฒŒ์œผ๋ฅด๊ณ , ์ฝ๊ธฐ์—๋Š” ์ ˆ๋Œ€ ๊ฒŒ์œผ๋ฅด์ง€ ์•Š๋‹ค.
137
+
138
+ ๊ฒŒ์œผ๋ฅด์ง€๋งŒ ๋ฌด์ฑ…์ž„ํ•˜์ง€๋Š” ์•Š๋‹ค. ์‹ ๋ขฐ ๊ฒฝ๊ณ„์˜ ์ž…๋ ฅ ๊ฒ€์ฆ, ๋ฐ์ดํ„ฐ ์†์‹ค ์ฒ˜๋ฆฌ, ๋ณด์•ˆ, ์ ‘๊ทผ์„ฑ์€ ์ ˆ๋Œ€ ์ž˜๋ผ ๋‚ด์ง€ ์•Š๋Š”๋‹ค.
139
+
140
+ ๋ถ„๊ธฐ, ๋ฐ˜๋ณต๋ฌธ, ํŒŒ์„œ, ๋ˆ์ด๋‚˜ ๋ณด์•ˆ์ด ๋“ค์–ด๊ฐ„ ๋กœ์ง์€ ์ž‘์€ ํ…Œ์ŠคํŠธ ํ•˜๋‚˜๋ฅผ ๋‚จ๊ธด๋‹ค. ๋ชจ๋“  ๋‹ต๋ณ€์€ ๊ฑด๋„ˆ๋›ด ๊ฒƒ์ด๋‚˜ ํ™•์ธํ•˜์ง€ ์•Š์€ ๊ฒƒ, ๊ทธ๋ฆฌ๊ณ  ์•Œ์•„์•ผ ํ•  ์œ„ํ—˜์œผ๋กœ ๋๋‚œ๋‹ค.
141
+
142
+ ## ํ”„๋กฌํ”„ํŠธ
143
+
144
+ Ponytail์€ ํ”„๋กฌํ”„ํŠธ ํ•˜๋‚˜๋‹ค: [`skills/ponytail/SKILL.md`](../skills/ponytail/SKILL.md). ๊ทœ์น™ ํŒŒ์ผ์„ ์ฝ๋Š” ์—์ด์ „ํŠธ์šฉ ์••์ถ•ํŒ์€ [`AGENTS.md`](../AGENTS.md)๋‹ค. ์ด ์ €์žฅ์†Œ์˜ ๋‚˜๋จธ์ง€๋Š” ์ „๋ถ€ ๊ทธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์—ฌ๋Ÿฌ ์—์ด์ „ํŠธ์— ๋„ฃ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.
145
+
146
+ ## ์„ค์น˜
147
+
148
+ **Claude Code**, ํ”„๋กฌํ”„ํŠธ ๋‘ ๊ฐœ๋กœ ๋‚˜๋ˆ ์„œ:
149
+
150
+ ```
151
+ /plugin marketplace add DietrichGebert/ponytail
152
+ ```
153
+ ```
154
+ /plugin install ponytail@ponytail
155
+ ```
156
+
157
+ **Codex:**
158
+
159
+ ```bash
160
+ codex plugin marketplace add DietrichGebert/ponytail
161
+ codex plugin add ponytail@ponytail
162
+ ```
163
+
164
+ ๊ทธ๋‹ค์Œ Codex์—์„œ `/hooks`๋ฅผ ์—ด์–ด ๋ผ์ดํ”„์‚ฌ์ดํด ํ›… ๋‘ ๊ฐœ๋ฅผ ์‹ ๋ขฐํ•˜๊ณ , ์ƒˆ ์Šค๋ ˆ๋“œ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.
165
+
166
+ **๊ทธ ๋ฐ–์˜ ์—์ด์ „ํŠธ:** [`AGENTS.md`](../AGENTS.md)๋ฅผ ํ”„๋กœ์ ํŠธ์— ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜, ์—์ด์ „ํŠธ์—๊ฒŒ [`skills/ponytail/SKILL.md`](../skills/ponytail/SKILL.md)๋ฅผ ์Šคํ‚ฌ๋กœ ์„ค์น˜ํ•ด ๋‹ฌ๋ผ๊ณ  ํ•˜๋ฉด ๋œ๋‹ค. Copilot, Cursor, OpenCode, Gemini ๋“ฑ์˜ ๋‹จ๊ณ„๋ณ„ ์„ค์น˜ ๋ฐฉ๋ฒ•(์˜์–ด): **[INSTALL.md](../INSTALL.md)**.
167
+
168
+ ์ด๊ฒŒ ๋‹ค๋‹ค. ๊ทธ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋ฟŒ๋“ฏํ•ดํ•  ๊ฒƒ์ด๋‹ค. ๋ง์€ ์•ˆ ํ•˜๊ฒ ์ง€๋งŒ.
169
+
170
+ ๋ชจ๋“  ์„ธ์…˜์—์„œ ์ผœ์ ธ ์žˆ๊ณ , ๋ช…๋ น์–ด๊ฐ€ ๋ช‡ ๊ฐœ ์žˆ๋‹ค ([๋ช…๋ น์–ด](#commands) ์ฐธ๊ณ ). `/ponytail ultra`๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ๋‹น์‹ ์„ ๊ฐœ์ธ์ ์œผ๋กœ ํ™”๋‚˜๊ฒŒ ํ–ˆ์„ ๋•Œ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. ์‹œ์ž‘ํ•  ๋•Œ์™€ ๋ชจ๋“œ๋ฅผ ๋ฐ”๊ฟ€ ๋•Œ ํ˜„์žฌ ๋ชจ๋“œ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.
171
+
172
+ ponytail์€ GitHub์˜ `DietrichGebert/ponytail`์ด๋‚˜ npm์˜ `@dietrichgebert/ponytail`์—์„œ๋งŒ ์„ค์น˜ํ•œ๋‹ค. `.exe`๋‚˜ `.dll` ํŒŒ์ผ์€ ์ ˆ๋Œ€ ๋“ค์–ด ์žˆ์ง€ ์•Š๋‹ค. ๊ทธ๋Ÿฐ ํŒŒ์ผ์ด ๋“ค์–ด ์žˆ๋Š” ์‚ฌ๋ณธ์€ ๋‚ด ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
173
+
174
+ <a id="commands"></a>
175
+ ## ๋ช…๋ น์–ด
176
+
177
+ | ๋ช…๋ น์–ด | ํ•˜๋Š” ์ผ |
178
+ |--------|---------|
179
+ | `/ponytail [lite \| full \| ultra \| off]` | ๊ฐ•๋„๋ฅผ ์ •ํ•˜๊ฑฐ๋‚˜ ๋ˆ๋‹ค. ์ธ์ž ์—†์ด ์“ฐ๋ฉด, ๊บผ์ ธ ์žˆ์„ ๋•Œ๋Š” ๊ธฐ๋ณธ ๋ ˆ๋ฒจ๋กœ ์ผœ๊ณ , ์ผœ์ ธ ์žˆ์„ ๋•Œ๋Š” ํ˜„์žฌ ๋ ˆ๋ฒจ์„ ์•Œ๋ ค ์ค€๋‹ค. |
180
+ | `/ponytail band [on \| off]` | Claude Code ์ „์šฉ: ํ”„๋กฌํ”„ํŠธ ์œ„์˜ ๋ฐด๋“œ๋ฅผ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ๋‹ค์‹œ ๋ณด์—ฌ ์ค€๋‹ค. ์ธ์ž ์—†์ด ์“ฐ๋ฉด ์ „ํ™˜ํ•œ๋‹ค. ๋ ˆ๋ฒจ์€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค. |
181
+ | `/ponytail band import` | Claude Code ์ „์šฉ: ์ง€๋‚œ ์„ธ์…˜์„ ๋น„์šฉ, ์—์ด์ „ํŠธ ์‹œ๊ฐ„, ํ† ํฐ๊ณผ ํ•จ๊ป˜ ๋ณด๋“œ์— ์ถ”๊ฐ€ํ•œ๋‹ค. |
182
+ | `/ponytail-review` | ์žฅ์• ๊ฐ€ ๋‚˜๋ฉด ํ˜ธ์ถœ๋˜๋Š” ์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž์ฒ˜๋Ÿผ ํ˜„์žฌ diff๋ฅผ ๋ฆฌ๋ทฐํ•œ๋‹ค: ๋ฒ„๊ทธ, ๋ณด์•ˆ, ์‹ค์ œ ๋ถ€ํ•˜, ํ…Œ์ŠคํŠธ ์—†๋Š” ์œ„ํ—˜ํ•œ ์ฝ”๋“œ, ๋А๋ฆฐ ๋ถ€๋ถ„, ์ง€์šธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ. ์ง€์ ๋งˆ๋‹ค ๊ทธ ์ฝ”๋“œ๊ฐ€ ํ•˜๋Š” ์ผ, ๋ฌด์—‡์ด ์ž˜๋ชป๋˜๋Š”์ง€, ๊ณ ์น˜๋Š” ๋ฐฉ๋ฒ•, ๊ณ ์น˜์ง€ ์•Š์œผ๋ฉด ์ƒ๊ธฐ๋Š” ์ผ์„ ์ ๋Š”๋‹ค. ๋ฒ”์œ„๋ฅผ ์ขํžˆ๊ฑฐ๋‚˜ ๋„“ํžˆ๋ ค๋ฉด ๋Œ€์ƒ์„ ํ‰๋ฒ”ํ•œ ๋ง๋กœ ์ ๋Š”๋‹ค: `uncommitted`, `staged`, `branch`, ๋˜๋Š” PR ๋งํฌ. |
183
+ | `/ponytail-audit` | ๊ฐ™์€ ์ ๊ฒ€์„ ์ €์žฅ์†Œ ์ „์ฒด์— ํ•˜๊ณ , ์ค‘์š”ํ•œ ๊ฒƒ๋ถ€ํ„ฐ ๋ณด์—ฌ ์ค€๋‹ค. |
184
+ | `/ponytail-debt` | ๋ฏธ๋ค„ ๋‘” `shortcut:` ์ง€๋ฆ„๊ธธ์„ ๋ชฉ๋ก์œผ๋กœ ๋ชจ์•„, "๋‚˜์ค‘์—"๊ฐ€ "์ ˆ๋Œ€ ์•ˆ ํ•จ"์ด ๋˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค. |
185
+ | `/ponytail-gain` | ๋ฒค์น˜๋งˆํฌ์—์„œ ์ธก์ •ํ•œ ํšจ๊ณผ(์ฝ”๋“œ ๊ฐ์†Œ, ๋น„์šฉ ๊ฐ์†Œ, ์†๋„ ํ–ฅ์ƒ)๋ฅผ ์ ์ˆ˜ํŒ์œผ๋กœ ๋ณด์—ฌ ์ค€๋‹ค. |
186
+ | `/ponytail-help` | ์œ„ ๋ช…๋ น์–ด๋“ค์˜ ๋น ๋ฅธ ์ฐธ๊ณ . |
187
+
188
+ ๋ช…๋ น์–ด๋Š” ์Šคํ‚ฌ์„ ์ง€์›ํ•˜๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค (Claude Code, Codex, Devin CLI, OpenCode, Gemini, Antigravity CLI, pi, Hermes Agent, Qoder, Grok Build). Codex CLI์™€ IDE ํ™•์žฅ์—์„œ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์•„๋ž˜์˜ ์Šคํ‚ฌ์ด๋ฏ€๋กœ `$ponytail:ponytail-review`์ฒ˜๋Ÿผ ๋ถ€๋ฅธ๋‹ค. [ํ›…](../INSTALL.md#cursor)์„ ์“ฐ๋Š” Cursor๋Š” `/ponytail` ๋ ˆ๋ฒจ ์ „ํ™˜๋งŒ ๋˜๊ณ , ์ผ๋ฐ˜ ๋ฉ”์‹œ์ง€๋กœ ์ž…๋ ฅํ•œ๋‹ค. ์ง€์‹œ๋ฌธ๋งŒ ์“ฐ๋Š” ์–ด๋Œ‘ํ„ฐ(Cursor ๊ทœ์น™ ํŒŒ์ผ, Windsurf, Cline, Copilot, Kiro, Antigravity์˜ `AGENTS.md` ๋Œ€์ฒด ๋ชจ๋“œ)๋Š” ๋ช…๋ น์–ด ์—†์ด ํ•ญ์ƒ ์ผœ์ง„ ๊ทœ์น™๋งŒ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
189
+
190
+ ## ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ
191
+
192
+ **์„ค์ • ํŒŒ์ผ์ด ํ•„์š”ํ•œ๊ฐ€?**
193
+ ์•„๋‹ˆ๋‹ค. ์„ ํƒ ์‚ฌํ•ญ์ธ `~/.config/ponytail/config.json`์ด๋‚˜ `PONYTAIL_DEFAULT_MODE` ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๊ธฐ๋ณธ ๋ ˆ๋ฒจ์„ ์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•„์š”ํ•œ ๊ฒƒ์€ ์—†๋‹ค.
194
+
195
+ **์™œ `shortcut:` ์ฃผ์„์„ ์“ฐ๋‚˜?**
196
+ ์˜๋„ํ•œ ์ง€๋ฆ„๊ธธ๊ณผ ์–ธ์ œ ๋‹ค์‹œ ๋ณผ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ณ , `/ponytail-debt`๊ฐ€ ์ด๋ฅผ ๋ชฉ๋ก์œผ๋กœ ๋ชจ์€๋‹ค. ๋‹ค๋ฅธ ๋‹จ์–ด๋ฅผ ์“ฐ๊ฑฐ๋‚˜ ์•„์˜ˆ ๋นผ๊ณ  ์‹ถ๋‹ค๋ฉด? ํ”„๋กœ์ ํŠธ์˜ `CLAUDE.md`๋‚˜ `AGENTS.md`์— ๊ทธ๋ ‡๊ฒŒ ์ ๊ณ , `/ponytail-debt <์›ํ•˜๋Š” ๋‹จ์–ด>`๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.
197
+
198
+ **120์ค„์งœ๋ฆฌ ์บ์‹œ ํด๋ž˜์Šค๊ฐ€ ์ •๋ง ํ•„์š”ํ•˜๋ฉด?**
199
+ ํ•„์š” ์—†๋‹ค. ๊ทธ๋ž˜๋„ ๊ณ ์ง‘ํ•˜๋ฉด ๋งŒ๋“ค์–ด ์ค€๋‹ค. ์ฒœ์ฒœํžˆ. ์ •ํ™•ํ•˜๊ฒŒ. ๋‹น์‹ ์„ ์ณ๋‹ค๋ณด๋ฉด์„œ.
200
+
201
+ **ํ™•์žฅ์„ฑ์€?**
202
+ ์“ฐ์ง€ ์•Š์€ ์ฝ”๋“œ๋Š” ๋ฌดํ•œํžˆ ํ™•์žฅ๋œ๋‹ค. ๋ฒ„๊ทธ 0๊ฐœ, CVE 0๊ฐœ, ํƒœ์ดˆ๋ถ€ํ„ฐ ๊ฐ€๋™๋ฅ  100%.
203
+
204
+ **์™œ "ponytail"์ธ๊ฐ€?**
205
+ ์™œ์ธ์ง€ ์ •ํ™•ํžˆ ์•Œ ๊ฒƒ์ด๋‹ค.
206
+
207
+ ## ํ›„์›
208
+
209
+ <p align="center">
210
+ <a href="https://greenpt.com/">
211
+ <picture>
212
+ <source media="(prefers-color-scheme: dark)" srcset="../assets/logo-greenpt-dark.svg">
213
+ <img src="../assets/logo-greenpt.svg" width="260" alt="GreenPT">
214
+ </picture>
215
+ </a>
216
+ </p>
217
+
218
+ ## ๋ผ์ด์„ ์Šค
219
+
220
+ [MIT](../LICENSE). ๋Œ์•„๊ฐ€๋Š” ๊ฐ€์žฅ ์งง์€ ๋ผ์ด์„ ์Šค.
221
+
222
+ ## ์Šคํƒ€ ๊ธฐ๋ก
223
+
224
+ <a href="https://www.star-history.com/dietrichgebert/ponytail#history">
225
+ <picture>
226
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=DietrichGebert/ponytail&type=Date&theme=dark" />
227
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=DietrichGebert/ponytail&type=Date" />
228
+ <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=DietrichGebert/ponytail&type=Date" />
229
+ </picture>
230
+ </a>
package/package.json CHANGED
@@ -1,16 +1,14 @@
1
1
  {
2
2
  "name": "chill-agent",
3
- "version": "1.5.0",
3
+ "version": "1.6.1",
4
4
  "description": "Zero-bloat Anti-Slop 2.0 Engine & Pragmatic Senior Developer Standard. Fuses Anti-Slop visual craftsmanship with Ponytail YAGNI minimalism across all coding agents.",
5
- "type": "module",
6
5
  "bin": {
7
- "chill-agent": "bin/chill-agent.js",
8
- "ponytail": "bin/chill-agent.js"
6
+ "chill-agent": "./bin/chill-agent.js"
9
7
  },
10
8
  "main": "./src/index.js",
11
9
  "scripts": {
12
10
  "start": "node ./bin/chill-agent.js",
13
- "test": "node --test tests/manifests.test.js tests/rules.test.js test/auditor.test.js",
11
+ "test": "node --test tests/manifests.test.mjs tests/rules.test.mjs test/auditor.test.mjs && npm test --prefix pi-extension",
14
12
  "audit": "node ./bin/chill-agent.js audit",
15
13
  "lint": "node ./bin/chill-agent.js audit"
16
14
  },
@@ -32,7 +30,10 @@
32
30
  "code-cleanup",
33
31
  "accessibility"
34
32
  ],
35
- "author": "sann",
33
+ "author": {
34
+ "name": "sann",
35
+ "url": "https://github.com/sann"
36
+ },
36
37
  "license": "MIT",
37
38
  "files": [
38
39
  "bin/",
@@ -76,6 +77,10 @@
76
77
  "gemini-extension.json",
77
78
  "opencode.json",
78
79
  "README.md",
79
- "LICENSE"
80
+ "LICENSE",
81
+ "scripts/uninstall.js",
82
+ "scripts/cursor-hooks.js",
83
+ "assets/",
84
+ "cli/"
80
85
  ]
81
86
  }