<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.png">
    <img src="assets/logo.png" width="220" alt="CURLYCODER, the lazy senior dev">
  </picture>
</p>

<h1 align="center">CURLYCODER</h1>

<p align="center">
  <em>ë§ì´ ì—†ë‹¤. í•œ ì¤„ì„ ì“´ë‹¤. ëŒì•„ê°„ë‹¤.</em>
</p>

<p align="center">
  <img src="https://img.shields.io/github/stars/bhardwj-sarvesh-projects/CURLYCODER?style=flat-square&color=111111&label=stars" alt="Stars">
  <img src="https://img.shields.io/github/v/release/bhardwj-sarvesh-projects/CURLYCODER?style=flat-square&color=111111&label=release" alt="Release">
  <img src="https://img.shields.io/npm/v/@bhardwj-sarvesh-projects/curlycoder?style=flat-square&color=111111&label=npm" alt="npm">
  <img src="https://img.shields.io/badge/works%20with-15%20agents-111111?style=flat-square" alt="Works with 15 agents">
  <img src="https://img.shields.io/badge/license-MIT-111111?style=flat-square" alt="MIT license">
</p>

<p align="center">
  <a href="https://trendshift.io/repositories/50668" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/50668/daily" alt="bhardwj-sarvesh-projects/CURLYCODER | Trendshift" width="250" height="55"/></a>
  <a href="https://trendshift.io/repositories/50668" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/50668/weekly" alt="bhardwj-sarvesh-projects/CURLYCODER | Trendshift" width="250" height="55"/></a>
</p>

<p align="center">
  <strong>ì½”ë“œ ì•½ 54% ê°ì†Œ(ìµœëŒ€ 94%) &middot; ì•½ 20% ì €ë ´ &middot; ì•½ 27% ë¹ ë¦„ &middot; 100% ì•ˆì „</strong><br>
  <sub>ì‹¤ì œ ì˜¤í”ˆì†ŒìŠ¤ ì €ìž¥ì†Œ(FastAPI + React)ë¥¼ ê³ ì¹˜ëŠ” ì‹¤ì œ Claude Code ì„¸ì…˜ì—ì„œ, ìŠ¤í‚¬ì„ ëˆ ê°™ì€ ì—ì´ì „íŠ¸ì™€ ê²¬ì¤˜ ì¸¡ì •í–ˆë‹¤. ì•½ 54%ëŠ” ê¸°ëŠ¥ ìž‘ì—… 12ê±´ì˜ í‰ê· ì´ë‹¤(Haiku 4.5, n=4). ì—ì´ì „íŠ¸ê°€ ê³¼í•˜ê²Œ ì§¤ ì—¬ì§€ê°€ ìžˆëŠ” ê³³(ë‚ ì§œ ì„ íƒê¸°)ì—ì„  94%ê¹Œì§€ ì˜¤ë¥´ê³ , ì½”ë“œê°€ ì´ë¯¸ ìµœì†Œí•œì¸ ê³³ì—ì„  0ì— ê°€ê¹ë‹¤. CURLYCODERì€ ì•ˆì „ ê°€ë“œë¥¼ í•˜ë‚˜ë„ ë¹¼ë†“ì§€ ì•Šì§€ë§Œ, ê·¸ëƒ¥ "í•œ ì¤„ë¡œ ì¨"ë¼ê³ ë§Œ ì‹œí‚¨ í”„ë¡¬í”„íŠ¸ëŠ” ê·¸ì¤‘ í•˜ë‚˜ë¥¼ ë†“ì¹œë‹¤. (ì˜ˆì „ ë‹¨ë°œì„± ë²¤ì¹˜ë§ˆí¬ëŠ” 80-94%ë¥¼ ë‹¨ì¼ ìˆ˜ì¹˜ë¡œ ë‚´ì„¸ì› ëŠ”ë°, ê³µì •í•œ ì—ì´ì „íŠ¸ ê¸°ì¤€ì„ ì— ê²¬ì£¼ë©´ ê·¸ê±´ í‰ê· ì´ ì•„ë‹ˆë¼ ìž‘ì—…ë³„ ìƒí•œì´ë‹¤.) <a href="benchmarks/results/2026-06-18-agentic.md">ì „ì²´ ë³´ê³ ì„œ</a> &middot; <a href="benchmarks/">ì§ì ‘ ìž¬í˜„í•˜ê¸°</a>.</sub>
</p>

<p align="center">
  <sub>ì»¤ë®¤ë‹ˆí‹° ë²ˆì—­ì´ë‹¤. ê¸°ì¤€ì´ ë˜ëŠ” ìµœì‹  ë²„ì „ì€ <a href="README.md">ì˜ì–´ README</a>ë‹¤.</sub>
</p>

---

<p align="center">
  <a href="https://CURLYCODER.dev/soon"><img src="assets/waitlist-banner-ko.png" alt="ìƒˆë¡œìš´ ê²ƒì´ ë‹¤ê°€ì˜¤ê³  ìžˆìŠµë‹ˆë‹¤, ëŒ€ê¸°ìž ëª…ë‹¨ ì‹ ì²­" width="760"></a>
</p>

ì´ëŸ° ì‚¬ëžŒ, ë‹¤ë“¤ ì•Œ ê±°ë‹¤. ê¸´ í¬ë‹ˆí…Œì¼ì— íƒ€ì›í˜• ì•ˆê²½. ë²„ì „ ê´€ë¦¬ ì‹œìŠ¤í…œë³´ë‹¤ íšŒì‚¬ì— ì˜¤ëž˜ ìžˆì—ˆë‹¤. ì½”ë“œ ì‰° ì¤„ì„ ë“¤ì´ë°€ë©´ ìž ê¹ ë³´ë”ë‹ˆ, ë§ì—†ì´ í•œ ì¤„ë¡œ ë°”ê¿” ë†“ëŠ”ë‹¤.

CURLYCODERì€ ê·¸ë¥¼ ë‹¹ì‹ ì˜ AI ì—ì´ì „íŠ¸ ì•ˆì— ì•‰í˜€ ë‘”ë‹¤.

## Before / after

ë‚ ì§œ ì„ íƒê¸° í•˜ë‚˜ ë§Œë“¤ì–´ ë‹¬ë¼ê³  í•œë‹¤. ì—ì´ì „íŠ¸ëŠ” flatpickrë¥¼ ê¹”ê³ , ëž˜í¼ ì»´í¬ë„ŒíŠ¸ë¥¼ ì§œê³ , ìŠ¤íƒ€ì¼ì‹œíŠ¸ë¥¼ ë¶™ì´ë”ë‹ˆ, íƒ€ìž„ì¡´ ì–˜ê¸°ë¥¼ êº¼ë‚´ê¸° ì‹œìž‘í•œë‹¤.

CURLYCODERì´ë¼ë©´:

```html
<!-- CURLYCODER: browser has one -->
<input type="date">
```

ì‚´ì•„ë‚¨ì€ ê²ƒë“¤ì´ ë” ê¶ê¸ˆí•˜ë‹¤ë©´ [examples/](examples/)ë¡œ.

## Numbers

ê³µì •í•˜ê²Œ ìž¬ë ¤ë©´ ì‹¤ì œ ì—ì´ì „íŠ¸ì—ê²Œ ì‹¤ì§ˆì ì¸ ìž‘ì—…ì„ ì‹œì¼œ ë´ì•¼ í•œë‹¤. í—¤ë“œë¦¬ìŠ¤ Claude Code ì„¸ì…˜ì—ê²Œ [tiangoloì˜ full-stack-fastapi-template](https://github.com/fastapi/full-stack-fastapi-template)(ì§„ì§œ FastAPI + React ì €ìž¥ì†Œ)ì„ ë§¡ê¸°ê³ , ë‚¨ê¸´ `git diff`ë¡œ ì ìˆ˜ë¥¼ ë§¤ê²¼ë‹¤. ê¸°ëŠ¥ í‹°ì¼“ 12ê±´, ê°™ì€ ì—ì´ì „íŠ¸ë¥¼ ìŠ¤í‚¬ë§Œ ì¼œê³  ë„ë©° ë¹„êµ, n=4, Haiku 4.5.

<p align="center">
  <img src="assets/benchmark-agentic.svg" width="860" alt="Each arm as a percent of the no-skill baseline across LOC, tokens, cost and time (Haiku 4.5). CURLYCODER is lowest on every metric (LOC 46%, tokens 78%, cost 80%, time 73%); caveman rises above 100% on tokens, cost and time; yagni-oneliner LOC 67%. Safety, separate adversarial tier: baseline, caveman and CURLYCODER 100%, yagni-oneliner 95%.">
</p>

| ìŠ¤í‚¬ ì—†ëŠ” ê¸°ì¤€ì„  ëŒ€ë¹„ | LOC | tokens | cost | time | safe |
|---|--:|--:|--:|--:|--:|
| **CURLYCODER** | **-54%** | **-22%** | **-20%** | **-27%** | **100%** |
| caveman (ê°„ê²°í•œ ì‚°ë¬¸ ëŒ€ì¡°êµ°) | -20% | +7% | +3% | +2% | 100% |
| "YAGNI + one-liners" í”„ë¡¬í”„íŠ¸ | -33% | -14% | -21% | -30% | 95% |

ëª¨ë“  ì§€í‘œë¥¼ ê¹Žì€ ê±´ CURLYCODERë¿ì´ê³ , ê·¸ëŸ¬ë©´ì„œ ì•ˆì „ê¹Œì§€ ì˜¨ì „ížˆ ì§€í‚¨ ê²ƒë„ CURLYCODERë¿ì´ë‹¤. ê¹Žì´ëŠ” í­ì€ ê³¼ìž‰ êµ¬í˜„ì˜ í•¨ì •ì´ ì‹¤ì œë¡œ ìžˆëŠ” ê³³ì—ì„œ ê°€ìž¥ í¬ë‹¤. ì»´í¬ë„ŒíŠ¸ ëŒ€ì‹  ë„¤ì´í‹°ë¸Œ `<input>`ìœ¼ë¡œ ì†ì´ ê°€ë‹ˆ ë‚ ì§œ ì„ íƒê¸°ëŠ” 404ì¤„ì—ì„œ 23ì¤„ë¡œ, ìƒ‰ìƒ ì„ íƒê¸°ëŠ” 287ì¤„ì—ì„œ 23ì¤„ë¡œ ì¤„ì–´ë“ ë‹¤. ë°˜ëŒ€ë¡œ ì´ë¯¸ êµ°ë”ë”ê¸° ì—†ëŠ” ì½”ë“œì—ì„  ê±°ì˜ 0ì´ë‹¤. ì „ì²´ ë°©ë²•ë¡ , ìž‘ì—…ë³„ í‘œ, í•œê³„ëŠ” [benchmarks/results/2026-06-18-agentic.md](benchmarks/results/2026-06-18-agentic.md)ì— ìžˆë‹¤.

<details>
<summary><strong>ì˜ˆì „ ë‹¨ë°œì„± ìˆ˜ì¹˜ (ê²©ë¦¬ëœ ìƒì„±)</strong></summary>

ì¼ìƒì ì¸ ìž‘ì—… ë‹¤ì„¯ ê°€ì§€, ëª¨ë¸ ì…‹, ë¹„êµêµ° ì…‹(ìŠ¤í‚¬ ì—†ìŒ, [caveman](https://github.com/JuliusBrussee/caveman), CURLYCODER), 10íšŒ ì‹¤í–‰, ì¤‘ì•™ê°’ ê¸°ì¤€. í”„ë¡¬í”„íŠ¸ í•˜ë‚˜ì— ì‘ë‹µ í•˜ë‚˜, ë‹µë³€ì˜ ì¤„ ìˆ˜ë¥¼ ì…Œë‹¤:

<p align="center">
  <img src="assets/benchmark-3model.svg" width="860" alt="Median lines of code per arm across Haiku, Sonnet and Opus">
</p>

ì—¬ê¸°ì„  **ì½”ë“œ 80-94% ê°ì†Œ**ê°€ ë‚˜ì™”ë‹¤. ë‹¤ë§Œ [#126](https://github.com/bhardwj-sarvesh-projects/CurlyCoder/issues/126)ì´ ë§žê²Œ ì§šì—ˆë“¯, ìŠ¤í‚¬ì„ ì „í˜€ ì•ˆ ë¶™ì¸ ê¸°ì¤€ì„  ëª¨ë¸ì€ ë‹µë³€ì„ ì„¤ëª…ê³¼ ì„ íƒì§€ë¡œ ë¶€í’€ë¦°ë‹¤. ê·¸ëž˜ì„œ ê·¸ ê²©ì°¨ì˜ ì¼ë¶€ëŠ” ëŒ€í™”í˜• ê¸°ì¤€ì„ ì´ ë§Œë“¤ì–´ ë‚¸ ì°©ì‹œë‹¤. ìœ„ì˜ ì—ì´ì „íŠ¸ ìˆ˜ì¹˜ê°€ ê·¸ê±¸ ë°”ë¡œìž¡ì€, ê·¼ê±° ìžˆëŠ” ë²„ì „ì´ë‹¤. ë‹¨ë°œì„± ì‹¤í–‰ì€ `npx promptfoo eval -c benchmarks/promptfooconfig.yaml`ë¡œ ìž¬í˜„í•  ìˆ˜ ìžˆë‹¤.

</details>

**ê·œì¹™ì€ ì• ì´ˆì— "í† í° ìµœì†Œí™”"ê°€ ì•„ë‹ˆì—ˆë‹¤.** ìž‘ì—…ì— í•„ìš”í•œ ë§Œí¼ë§Œ ì“°ë˜, ê²€ì¦Â·ì—ëŸ¬ ì²˜ë¦¬Â·ë³´ì•ˆÂ·ì ‘ê·¼ì„±ì€ ì ˆëŒ€ ëœì–´ë‚´ì§€ ì•ŠëŠ”ë‹¤ëŠ” ê²ƒì´ë‹¤. ì½”ë“œê°€ ìž‘ì•„ì§€ëŠ” ê±´ ì–µì§€ë¡œ ì¤„ì—¬ì„œê°€ ì•„ë‹ˆë¼ ë”± ê·¸ë§Œí¼ë§Œ í•„ìš”í•´ì„œë‹¤. ë¹„ìš©ê³¼ ì§€ì—°ì´ ë‚®ì•„ì§€ëŠ” ê²ƒë„ ë‹¨ê³„ë¥¼ ì¶©ì‹¤ížˆ ë°ŸëŠ” ëª¨ë¸ì—ì„œë‚˜ ë¶€ìˆ˜ì ìœ¼ë¡œ ë”¸ë ¤ ì˜¤ëŠ” íš¨ê³¼ì¼ ë¿ì´ë‹¤. ê·¸ ë‹¨ê³„ë¥¼ ê³ ë¯¼í•˜ëŠë¼ ì‚¬ê³  í† í°ì„ ìŸëŠ” ê°„ê²°í•œ ì¶”ë¡  ëª¨ë¸ì€ ì˜¤ížˆë ¤ ê±°ê¾¸ë¡œ ê°ˆ ìˆ˜ë„ ìžˆë‹¤(GPT-5.5ê°€ ê·¸ë ‡ë‹¤).

## How it works

ì½”ë“œë¥¼ ì“°ê¸° ì „ì—, ì—ì´ì „íŠ¸ëŠ” ê°€ìž¥ ë¨¼ì € ë“¤ì–´ë§žëŠ” ë‹¨ê³„ì—ì„œ ë©ˆì¶˜ë‹¤:

```
1. ì´ê²Œ ìžˆì„ í•„ìš”ê°€ ìžˆë‚˜?      â†’ ì—†ë‹¤: ê±´ë„ˆë›´ë‹¤ (YAGNI)
2. ì´ë¯¸ ì´ ì½”ë“œë² ì´ìŠ¤ì— ìžˆë‚˜?  â†’ ë‹¤ì‹œ ì§œì§€ ë§ê³  ê°€ì ¸ë‹¤ ì“´ë‹¤
3. í‘œì¤€ ë¼ì´ë¸ŒëŸ¬ë¦¬ë¡œ ë˜ë‚˜?     â†’ ì“´ë‹¤
4. ë„¤ì´í‹°ë¸Œ í”Œëž«í¼ ê¸°ëŠ¥ì¸ê°€?   â†’ ì“´ë‹¤
5. ê¹”ë ¤ ìžˆëŠ” ì˜ì¡´ì„±ì´ í‘¸ë‚˜?    â†’ ì“´ë‹¤
6. í•œ ì¤„ë¡œ ë˜ë‚˜?               â†’ í•œ ì¤„
7. ê·¸ì œì„œì•¼: ëŒì•„ê°€ëŠ” ìµœì†Œí•œ
```

ë‹¨ê³„ë¥¼ ë°ŸëŠ” ê±´ ë¬¸ì œë¥¼ ì´í•´í•œ *ë‹¤ìŒ*ì´ì§€, ì´í•´ë¥¼ ëŒ€ì‹ í•˜ëŠ” ê²Œ ì•„ë‹ˆë‹¤. ë³€ê²½ì´ ë‹¿ëŠ” ì½”ë“œë¥¼ ì½ê³  ì‹¤ì œ íë¦„ì„ ë”°ë¼ê°€ ë³¸ ë’¤ì—ì•¼ ë‹¨ê³„ë¥¼ ê³ ë¥¸ë‹¤. í•´ë²•ì—ëŠ” ê²Œì„ëŸ¬ë„, ì½ëŠ” ë°ëŠ” ì ˆëŒ€ ê²Œìœ¼ë¥´ì§€ ì•Šë‹¤.

ê²Œìœ¼ë¥¸ ê±°ì§€ ë¶€ì£¼ì˜í•œ ê²Œ ì•„ë‹ˆë‹¤. ì‹ ë¢° ê²½ê³„ì˜ ê²€ì¦, ë°ì´í„° ì†ì‹¤ ë°©ì§€, ë³´ì•ˆ, ì ‘ê·¼ì„±ì€ ê²°ì½” ìž˜ë ¤ ë‚˜ê°€ì§€ ì•ŠëŠ”ë‹¤.

## Install

CURLYCODERì´ ë‹¹ì‹ ì—ê²Œ ìš”êµ¬í•  ìˆ˜ê³ ì˜ ìµœëŒ€ì¹˜:

Claude Codeì™€ Codex í”ŒëŸ¬ê·¸ì¸ì€ ìžê·¸ë§ˆí•œ Node.js ë¼ì´í”„ì‚¬ì´í´ í›… ë‘ ê°œë¥¼ ëŒë¦¬ë‹ˆ, `node`ê°€ PATHì— ìž¡í˜€ ìžˆì–´ì•¼ í•œë‹¤(Nix/nvm ì‚¬ìš©ìžë¼ë©´ ë¹„ëŒ€í™”í˜• ì…¸ì˜ PATHì— ìžˆì–´ì•¼ í•œë‹¤). ì—†ì–´ë„ ìŠ¤í‚¬ì€ ë©€ì©¡ížˆ ëŒì•„ê°„ë‹¤. ë‹¤ë§Œ ëŠ˜ ì¼œì ¸ ìžˆë˜ ìžë™ í™œì„±í™”ê°€ ë§¤ í”„ë¡¬í”„íŠ¸ë§ˆë‹¤ ì—ëŸ¬ë¥¼ ë±‰ëŠ” ëŒ€ì‹  ì¡°ìš©ížˆ ë¹„í™œì„±ìœ¼ë¡œ ë‚¨ì„ ë¿ì´ë‹¤.

### Claude Code

```
/plugin marketplace add bhardwj-sarvesh-projects/CURLYCODER
```
```
/plugin install CURLYCODER@CURLYCODER
```
(ì„¤ì¹˜ê°€ ë˜ë ¤ë©´ ë‘ í”„ë¡¬í”„íŠ¸ë¥¼ ë”°ë¡œ ë³´ë‚´ì•¼ í•œë‹¤)

ë°ìŠ¤í¬í†± ì•±ì—ëŠ” `/plugin` ëª…ë ¹ì´ ì—†ë‹¤. ëŒ€ì‹  UIì—ì„œ ì„¤ì¹˜í•œë‹¤: Customize, ê°œì¸ í”ŒëŸ¬ê·¸ì¸ ì˜†ì˜ +, Create plugin and add marketplace, Add from repository, ê·¸ë‹¤ìŒ ì €ìž¥ì†Œ URL ìž…ë ¥(ê°ì‚¬í•©ë‹ˆë‹¤ @NiklasDHahn, #98).

### Codex

```bash
codex plugin marketplace add bhardwj-sarvesh-projects/CURLYCODER
codex
```

`/plugins`ë¥¼ ì—´ì–´ CURLYCODER ë§ˆì¼“í”Œë ˆì´ìŠ¤ë¥¼ ê³ ë¥´ê³  CURLYCODERì„ ì„¤ì¹˜í•œë‹¤. ê·¸ëŸ° ë‹¤ìŒ
`/hooks`ë¥¼ ì—´ì–´ ë¼ì´í”„ì‚¬ì´í´ í›… ë‘ ê°œë¥¼ ê²€í† í•˜ê³  ì‹ ë¢°í•œ ë’¤, ìƒˆ ìŠ¤ë ˆë“œë¥¼ ì‹œìž‘í•œë‹¤.

ì´ ì„¤ì¹˜ í•œ ë²ˆì´ë©´ Codex ë°ìŠ¤í¬í†± ì•±ë„ ê°™ì´ ìž¡ížŒë‹¤. ì„¤ì¹˜ í›„ ì•±ì„ ë‹¤ì‹œ ì¼œë©´ í”ŒëŸ¬ê·¸ì¸ì„ ì•Œì•„ì±ˆë‹¤.

### GitHub Copilot CLI

```bash
copilot plugin marketplace add bhardwj-sarvesh-projects/CURLYCODER
copilot plugin install CURLYCODER@CURLYCODER
```

ëŒ€í™”í˜• Copilot CLI ì„¸ì…˜ì—ì„œëŠ” ìŠ¬ëž˜ì‹œ ëª…ë ¹ìœ¼ë¡œ ë˜‘ê°™ì´ í•˜ë©´ ëœë‹¤:

```
/plugin marketplace add bhardwj-sarvesh-projects/CURLYCODER
/plugin install CURLYCODER@CURLYCODER
```

Copilot CLIëŠ” í”ŒëŸ¬ê·¸ì¸ ëª…ë ¹ì— ê·¸ ì´ë¦„ì„ ë„¤ìž„ìŠ¤íŽ˜ì´ìŠ¤ë¡œ ë¶™ì¸ë‹¤. ì˜ˆë¥¼ ë“¤ë©´:

```text
/CURLYCODER:CURLYCODER ultra
/CURLYCODER:CURLYCODER-review
```

### Pi agent harness

```
pi install git:github.com/bhardwj-sarvesh-projects/curlycoder
```

### OpenCode

`opencode.json`ì— ë‹¤ìŒì„ ë”í•œë‹¤:

```json
{ "plugin": ["@bhardwj-sarvesh-projects/curlycoder"] }
```

ì²´í¬ì•„ì›ƒì—ì„œ ì§ì ‘ ëŒë ¤ë„ ëœë‹¤(í”ŒëŸ¬ê·¸ì¸ì´ `hooks/`ì™€ `skills/`ë¥¼ ê·¸ëŒ€ë¡œ ì“´ë‹¤):

```json
{ "plugin": ["./.opencode/plugins/CURLYCODER.mjs"] }
```

ë§¤ í„´ë§ˆë‹¤ ì§€ê¸ˆ ë ˆë²¨ì˜ ë£°ì…‹ì„ ì£¼ìž…í•˜ê³ , `/CURLYCODER` ëª…ë ¹ë“¤ì„ ë¶™ì—¬ ì¤€ë‹¤([Commands](#commands) ì°¸ê³ ). OpenCodeëŠ” ì´ ì €ìž¥ì†Œì˜ `AGENTS.md`ë„ ì•Œì•„ì„œ ë¶ˆëŸ¬ì˜¤ë‹ˆ, í”ŒëŸ¬ê·¸ì¸ì´ ì—†ì–´ë„ ê·œì¹™ì€ ì‚´ì•„ ìžˆë‹¤. í”ŒëŸ¬ê·¸ì¸ì€ `lite/full/ultra/off` ë ˆë²¨ì„ ì–¹ì–´ ì¤€ë‹¤.

`./` ê²½ë¡œëŠ” í”„ë¡œì íŠ¸ì˜ `opencode.json`ì„ ê¸°ì¤€ìœ¼ë¡œ í’€ë¦°ë‹¤. ì²´í¬ì•„ì›ƒ í•˜ë‚˜ë¥¼ ì—¬ëŸ¬ í”„ë¡œì íŠ¸ì—ì„œ ê°™ì´ ì“°ë ¤ë©´, ëŒ€ì‹  `.mjs`ì˜ ì ˆëŒ€ ê²½ë¡œë¥¼ ê°€ë¦¬í‚¤ë©´ ëœë‹¤(ê·¸ íŒŒì¼ì€ ì œ ìœ„ì¹˜ë¥¼ ê¸°ì¤€ìœ¼ë¡œ `hooks/`ì™€ `skills/`ë¥¼ ì°¾ëŠ”ë‹¤).

### Gemini CLI

```bash
gemini extensions install https://github.com/bhardwj-sarvesh-projects/CurlyCoder
```

ë§¤ ì„¸ì…˜ ë£°ì…‹ì„ ëŠ˜ ì¼œì§„ ì»¨í…ìŠ¤íŠ¸ë¡œ ë¶ˆëŸ¬ì˜¤ê³  `/CURLYCODER` ëª…ë ¹ë“¤ì„ ë“±ë¡í•œë‹¤. `skills/`ë„ í•¨ê»˜ ì‹¤ë¦¬ë©°, ìž‘ì—…ì— í•„ìš”í•  ë•Œ ì¼œì§„ë‹¤.
Gemini ì–´ëŒ‘í„°ëŠ” ì¼ë¶€ëŸ¬ ë£¨íŠ¸ `hooks/hooks.json`ì„ ë‘ì§€ ì•ŠëŠ”ë‹¤. GeminiëŠ” ê·¸ ê²½ë¡œë¥¼ ìžë™ìœ¼ë¡œ ë¶ˆëŸ¬ì˜¤ëŠ”ë°, CURLYCODERì˜ ë¼ì´í”„ì‚¬ì´í´ í›…ì€ Claude/Codex ì´ë²¤íŠ¸ ì´ë¦„ì„ ì“°ê¸° ë•Œë¬¸ì´ë‹¤.

### Antigravity CLI

Googleì´ Gemini CLIë¥¼ Antigravity CLI(`agy` ë°”ì´ë„ˆë¦¬)ë¡œ ì´ë¦„ì„ ë°”ê¾¸ëŠ” ì¤‘ì¸ë°, ê°™ì€ í™•ìž¥ì´ ê±°ê¸°ì—ë„ ì„¤ì¹˜ëœë‹¤:

```bash
agy plugin install https://github.com/bhardwj-sarvesh-projects/CurlyCoder
```

ì´ ì €ìž¥ì†Œì˜ `gemini-extension.json`ì„ ê·¸ëŒ€ë¡œ ìž¬ì‚¬ìš©í•œë‹¤. ì°¨ì´ëŠ” í•˜ë‚˜ë‹¤. AntigravityëŠ” `/CURLYCODER` ëª…ë ¹ë“¤ì„ ìŠ¤í‚¬ë¡œ ë°”ê¿” ë²„ë ¤ì„œ, ìŠ¬ëž˜ì‹œ ë©”ë‰´ì—ì„œ ê³ ë¥´ëŠ” ëŒ€ì‹  ì±„íŒ…ì— ì§ì ‘ ì¹œë‹¤(ì˜ˆ: `/CURLYCODER-review`ë¥¼ ë©”ì‹œì§€ë¡œ). ì „í™˜ì´ ë§ˆë¬´ë¦¬ë  ë•Œê¹Œì§€(2026ë…„ 6ì›” 18ì¼ê²½)ëŠ” `gemini extensions install`ë„ ì—¬ì „ížˆ ë¨¹ížŒë‹¤. ëŠ˜ ì¼œì§„ ê·œì¹™ìœ¼ë¡œ ëŒë¦¬ê³  ì‹¶ìœ¼ë©´, ë£°ì…‹ì„ `.agents/rules/`ì— ë„£ìœ¼ë©´ ëœë‹¤.

### CodeWhale

í”„ë¡œì íŠ¸ ë£¨íŠ¸ì˜ `AGENTS.md`ë¥¼ ì½ê³ , ì„¤ì •ì€ ì „í˜€ í•„ìš” ì—†ë‹¤. [`AGENTS.md`](AGENTS.md)ë¥¼ í”„ë¡œì íŠ¸ì— ë³µì‚¬í•˜ê±°ë‚˜, ì´ ì €ìž¥ì†Œë¥¼ ì²´í¬ì•„ì›ƒí•œ ê³³ì—ì„œ `codewhale`ì„ ëŒë¦¬ë©´ ëœë‹¤. ê·¸ê²Œ ëì´ë‹¤.

### Swival

ë¨¼ì € ì»¬ë ‰ì…˜ì„ ë¼ì´ë¸ŒëŸ¬ë¦¬ì— ìŠ¤í…Œì´ì§•í•œ ë‹¤ìŒ, ì›í•˜ëŠ” ìŠ¤í‚¬ì„ ë”í•œë‹¤:

```bash
swival skills add --global https://github.com/bhardwj-sarvesh-projects/CurlyCoder  # ~/.config/swival/libraryì— ìŠ¤í…Œì´ì§•
swival skills add CURLYCODER                                             # ì´ í”„ë¡œì íŠ¸ì— ì»¬ë ‰ì…˜ ì„¤ì¹˜
swival skills add --global CURLYCODER                                    # ë˜ëŠ” ëª¨ë“  í”„ë¡œì íŠ¸ì—ì„œ ì¼œê¸°
```

Swivalë„ í”„ë¡œì íŠ¸ ë£¨íŠ¸ì˜ `AGENTS.md`ì™€ ì „ì—­ì˜ `~/.config/swival/AGENTS.md`ë¥¼ ì½ëŠ”ë‹¤. ì§€ì‹œë¬¸ ì „ìš© í´ë°±ì´ë‹¤.

ëª…ë ¹ì¤„ì—ì„œëŠ” `$` ì ‘ë‘ì‚¬ë¡œ ìŠ¤í‚¬ì„ ëª…ì‹œì ìœ¼ë¡œ ì¼ ë‹¤. ì˜ˆ: `$CURLYCODER-review`.

### Devin CLI

```bash
devin plugins install bhardwj-sarvesh-projects/CURLYCODER
```

CURLYCODERì„ Devin í”ŒëŸ¬ê·¸ì¸ìœ¼ë¡œ ì„¤ì¹˜í•œë‹¤. ìŠ¤í‚¬ì€ `/CURLYCODER:CURLYCODER`, `/CURLYCODER:CURLYCODER-review` ë“±ìœ¼ë¡œ ì“¸ ìˆ˜ ìžˆë‹¤.

### OpenClaw

```bash
clawhub install CURLYCODER
```

ClawHubì—ì„œ CURLYCODERì„ OpenClaw ìŠ¤í‚¬ë¡œ ì„¤ì¹˜í•œë‹¤. review, audit, debt, gain, help ìŠ¤í‚¬ë„ ê°™ì€ ì‹ìœ¼ë¡œ ê¹ë‹¤(`clawhub install CURLYCODER-review` ë“±). OpenClawëŠ” ì½”ë”© ìž‘ì—…ì— ì´ë¥¼ ì ìš©í•˜ê³  `/CURLYCODER` ëª…ë ¹ìœ¼ë¡œë„ ì—´ì–´ ì¤€ë‹¤. ClawHubê°€ ì—†ìœ¼ë©´ [`.openclaw/skills/CURLYCODER`](.openclaw/skills/)ì„ `~/.openclaw/skills/`ì— ë³µì‚¬í•˜ë©´ ëœë‹¤.

### Grok Build

```bash
grok plugin install bhardwj-sarvesh-projects/CURLYCODER --trust
```

í”ŒëŸ¬ê·¸ì¸ì€ ê¸°ë³¸ì´ êº¼ì ¸ ìžˆë‹¤. `/plugins` â†’ Pluginsì—ì„œ `CURLYCODER`ì— Space, ë˜ëŠ” `~/.grok/config.toml`:

```toml
[plugins]
enabled = ["CURLYCODER"]
```

ìƒˆ ì„¸ì…˜ì„ ì—´ê±°ë‚˜ í”ŒëŸ¬ê·¸ì¸ì„ ë‹¤ì‹œ ë¡œë“œí•œë‹¤. ìŠ¤í‚¬ì€ `/CURLYCODER`, `/CURLYCODER-review`, `/CURLYCODER-audit`, `/CURLYCODER-debt`, `/CURLYCODER-gain`, `/CURLYCODER-help`ë¡œ ë³´ì¸ë‹¤. `grok inspect`ë¡œ í™•ì¸. Grokì€ ìŠ¤í‚¬ ì„¤ëª…ì„ ë°”íƒ•ìœ¼ë¡œ ì½”ë”© ìž‘ì—…ì—ì„œ CURLYCODERì„ ìžë™ìœ¼ë¡œ í˜¸ì¶œí•  ìˆ˜ ìžˆë‹¤. ëª…ì‹œì ìœ¼ë¡œ í™œì„±í™”í•´ì•¼ í•˜ë©´ `/CURLYCODER`(ë˜ëŠ” `/CURLYCODER lite`, `/CURLYCODER full`, `/CURLYCODER ultra`)ì„ ì‚¬ìš©í•œë‹¤. `SessionStart` ì¶œë ¥ìœ¼ë¡œëŠ” ì§€ì‹œë¬¸ì„ ì£¼ìž…í•  ìˆ˜ ì—†ìœ¼ë¯€ë¡œ Grok ë¼ì´í”„ì‚¬ì´í´ í›…ì€ ì‚¬ìš©í•˜ì§€ ì•ŠëŠ”ë‹¤.

ì²´í¬ì•„ì›ƒì˜ `AGENTS.md`ë§Œìœ¼ë¡œë„ ì§€ì‹œë¬¸ ì „ìš© ëª¨ë“œëŠ” ëœë‹¤. ì œê±°: `grok plugin uninstall CURLYCODER`.

ì´ê²Œ ëì´ì—ˆë‹¤. ê·¸ ì‚¬ëžŒì´ë¼ë©´ íë­‡í•´í•  ê±°ë‹¤. ìž… ë°–ìœ¼ë¡œ ë‚´ì§„ ì•Šê² ì§€ë§Œ.

ë§¤ ì„¸ì…˜ ì¼œì ¸ ìžˆê³ , ëª…ë ¹ ëª‡ ê°œê°€ ë”¸ë ¤ ì˜¨ë‹¤([Commands](#commands) ì°¸ê³ ). `/CURLYCODER ultra`ëŠ” ì½”ë“œë² ì´ìŠ¤ê°€ ë‹¹ì‹ ì—ê²Œ ë‹¨ë‹¨ížˆ ë°‰ë³´ì¸ ë‚ ì„ ìœ„í•´ ìžˆë‹¤. ì‹œìž‘í•  ë•Œì™€ ëª¨ë“œë¥¼ ë°”ê¿€ ë•Œ ì§€ê¸ˆ ëª¨ë“œë¥¼ ë³´ì—¬ ì¤€ë‹¤.

ìƒˆ ì„¸ì…˜ë§ˆë‹¤ ì ìš©í•  ë ˆë²¨ì€ `CURLYCODER_DEFAULT_MODE` í™˜ê²½ ë³€ìˆ˜(`lite`/`full`/`ultra`/`off`)ë¡œ, ë˜ëŠ” `~/.config/CURLYCODER/config.json`ì˜ `defaultMode` í•„ë“œ(Windowsì—ì„  `%APPDATA%\CURLYCODER\config.json`)ë¡œ ì •í•œë‹¤. ê¸°ë³¸ê°’ì€ `full`ì´ë‹¤.

Cursor, Windsurf, Cline, GitHub Copilot(ì—ë””í„°), Aider, Kiro, Zed, CodeWhale: ì´ ì €ìž¥ì†Œì—ì„œ ë§žëŠ” ê·œì¹™ íŒŒì¼ì„ ë³µì‚¬í•˜ë©´ ëœë‹¤([`.cursor/rules/`](.cursor/rules/), [`.windsurf/rules/`](.windsurf/rules/), [`.clinerules/`](.clinerules/), [`.github/copilot-instructions.md`](.github/copilot-instructions.md), [`AGENTS.md`](AGENTS.md), [`.kiro/steering/`](.kiro/steering/)).

Kiro: `.kiro/steering/CURLYCODER.md`ë¥¼ `~/.kiro/steering/`(ì „ì—­)ì´ë‚˜ í”„ë¡œì íŠ¸ì˜ `.kiro/steering/`ì— ë³µì‚¬í•œë‹¤.

GitHub Copilot CLI í´ë°±(ì§€ì‹œë¬¸ ì „ìš© ëª¨ë“œ): í”„ë¡œì íŠ¸ì˜ `AGENTS.md`ì™€ `.github/copilot-instructions.md`ë¥¼ ì½ê±°ë‚˜, ëª¨ë“  í”„ë¡œì íŠ¸ì—ì„œ CURLYCODERì„ ëŒë¦¬ë ¤ë©´ ê·œì¹™ì„ `~/.copilot/copilot-instructions.md`ì— ë³µì‚¬í•œë‹¤. ì´ ê²½ë¡œëŠ” ëŠ˜ ì¼œì§„ ê°€ì´ë“œëŠ” ì‚´ë¦¬ì§€ë§Œ, í”ŒëŸ¬ê·¸ì¸ ëª¨ë“œ ì „í™˜ì´ë‚˜ í›…ì€ ë”í•´ ì£¼ì§€ ì•ŠëŠ”ë‹¤.

Codex í™•ìž¥ì„ ì“°ëŠ” VS CodeëŠ” ì´ ì €ìž¥ì†Œê°€ í•¨ê»˜ ì‹£ëŠ” `AGENTS.md`ë¥¼ ì½ìœ¼ë‹ˆ, ì €ìž¥ì†Œ ë£¨íŠ¸ì—ì„œ ì„¤ì • ì—†ì´ ëŒì•„ê°„ë‹¤(`~/.codex/AGENTS.md`ë¥¼ ë‘ë©´ Codex ì „ì—­ìœ¼ë¡œ ìž¡ížŒë‹¤).

ì–´ë–¤ íŒŒì¼ì´ ì–´ëŠ ì—ì´ì „íŠ¸ì— ë§¤í•‘ë˜ëŠ”ì§€: [Agent portability](docs/agent-portability.md).

## Commands

| ëª…ë ¹ | í•˜ëŠ” ì¼ |
|---------|--------------|
| `/CURLYCODER [lite \| full \| ultra \| off]` | ê°•ë„ë¥¼ ì •í•˜ê±°ë‚˜, ëˆë‹¤. ì¸ìˆ˜ê°€ ì—†ìœ¼ë©´ ì§€ê¸ˆ ë ˆë²¨ì„ ì•Œë ¤ ì¤€ë‹¤. |
| `/CURLYCODER-review` | ì§€ê¸ˆ diffë¥¼ ê³¼ìž‰ êµ¬í˜„ ê´€ì ì—ì„œ í›‘ê³ , ì‚­ì œ ëª©ë¡ì„ ëŒë ¤ì¤€ë‹¤. |
| `/CURLYCODER-audit` | diffë§Œì´ ì•„ë‹ˆë¼ ì €ìž¥ì†Œ ì „ì²´ë¥¼ ê³¼ìž‰ êµ¬í˜„ ê´€ì ì—ì„œ ê°ì‚¬í•œë‹¤. |
| `/CURLYCODER-debt` | ë¯¸ë¤„ ë‘” `CURLYCODER:` ê°„ì†Œí™”ë“¤ì„ ìž¥ë¶€ë¡œ ëª¨ì•„, "ë‚˜ì¤‘ì—"ê°€ "ì˜ì˜"ì´ ë˜ì§€ ì•Šê²Œ í•œë‹¤. |
| `/CURLYCODER-gain` | ë²¤ì¹˜ë§ˆí¬ë¡œ ìž° íš¨ê³¼ ìŠ¤ì½”ì–´ë³´ë“œ(ì½”ë“œ ì ˆê°, ë¹„ìš© ì ˆê°, ì†ë„ í–¥ìƒ)ë¥¼ ë³´ì—¬ ì¤€ë‹¤. |
| `/CURLYCODER-help` | ìœ„ ëª…ë ¹ë“¤ì˜ ë¹ ë¥¸ ì°¸ì¡°. |

ëª…ë ¹ë“¤ì€ ìŠ¤í‚¬ì„ ì§€ì›í•˜ëŠ” í˜¸ìŠ¤íŠ¸ê°€ ìžˆì–´ì•¼ ëˆë‹¤(Claude Code, Codex, Devin CLI, OpenCode, Gemini, pi, Swival). Codexì—ì„  ìŠ¤í‚¬ì´ë¼ `@`ë¡œ ë¶€ë¥¸ë‹¤(`@CURLYCODER-review`). ì§€ì‹œë¬¸ ì „ìš© ì–´ëŒ‘í„°(Cursor, Windsurf, Cline, Copilot, Kiro, Antigravity)ëŠ” ëª…ë ¹ ì—†ì´ ëŠ˜ ì¼œì§„ ë£°ì…‹ë§Œ ë¶ˆëŸ¬ì˜¨ë‹¤.

## Development

ì••ì¶• ê·œì¹™ í…ìŠ¤íŠ¸ë¥¼ ë°”ê¿€ ë•ŒëŠ”, ì—ì´ì „íŠ¸ ì‚¬ë³¸ë“¤ì„ ê°™ì€ ìƒíƒœë¡œ ë§žì¶° ë‘”ë‹¤:

```bash
node scripts/check-rule-copies.js
npm test
```

OpenClaw ìŠ¤í‚¬ íŒ¨í‚¤ì§€(`.openclaw/skills/`)ëŠ” `skills/`ì—ì„œ ìƒì„±ëœë‹¤. ìŠ¤í‚¬ì„ ë°”ê¾¼ ë’¤ì—ëŠ” `node scripts/build-openclaw-skills.js`ë¥¼ ë‹¤ì‹œ ëŒë¦°ë‹¤. ë¬µì€ ìƒíƒœë©´ í…ŒìŠ¤íŠ¸ ìŠ¤ìœ„íŠ¸ê°€ ì‹¤íŒ¨í•œë‹¤.

ì •í™•ì„± ë²¤ì¹˜ë§ˆí¬ëŠ” ì´ë©”ì¼Â·CSV ê²€ì‚¬ë¥¼ ìœ„í•´ Pythonì„ ë„ìš´ë‹¤. `python`ë³´ë‹¤ `python3`ë¥¼ ë¨¼ì € ì‹œë„í•œë‹¤. CSV ê²€ì‚¬ëŠ” ë¡œì»¬ì— `pandas`ê°€ ê¹”ë ¤ ìžˆì–´ì•¼ í•œë‹¤.

## FAQ

**ì„¤ì • íŒŒì¼ì´ í•„ìš”í•œê°€?**
ì•„ë‹ˆë‹¤. ì„ íƒ ì‚¬í•­ì¸ `~/.config/CURLYCODER/config.json`ì´ë‚˜ `CURLYCODER_DEFAULT_MODE` í™˜ê²½ ë³€ìˆ˜ë¡œ ê¸°ë³¸ ë ˆë²¨ì„ ì •í•  ìˆœ ìžˆì§€ë§Œ, ê¼­ ìžˆì–´ì•¼ í•˜ëŠ” ê±´ ì—†ë‹¤.

**ê·¸ëž˜ë„ 120ì¤„ì§œë¦¬ ìºì‹œ í´ëž˜ìŠ¤ê°€ ì •ë§ í•„ìš”í•˜ë‹¤ë©´?**
í•„ìš” ì—†ë‹¤. ê·¸ëž˜ë„ ìš°ê¸°ë©´ ê·¸ê°€ ë§Œë“¤ì–´ ì¤€ë‹¤. ì²œì²œížˆ. ì •í™•í•˜ê²Œ. ë‹¹ì‹ ì„ ì³ë‹¤ë³´ë©´ì„œ.

**í™•ìž¥ì€ ë˜ë‚˜?**
ë‹¹ì‹ ì´ ì•ˆ ì“´ ì½”ë“œëŠ” ë¬´í•œížˆ í™•ìž¥ëœë‹¤. ë²„ê·¸ 0, CVE 0, ê°€ë™ë¥  100%. ì˜ˆë‚˜ ì§€ê¸ˆì´ë‚˜.

**ì™œ í•˜í•„ "CURLYCODER"ì¸ê°€?**
ë‹¹ì‹ ì€ ì´ìœ ë¥¼ ì •í™•ížˆ ì•ˆë‹¤.

## Sponsors

<p align="center">
  <a href="https://greenpt.com/">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="assets/logo-greenpt-dark.svg">
      <img src="assets/logo-greenpt.svg" width="260" alt="GreenPT">
    </picture>
  </a>
</p>

## License

[MIT](LICENSE). ëŒì•„ê°€ëŠ” ê°€ìž¥ ì§§ì€ ë¼ì´ì„ ìŠ¤.

## Star History

<a href="https://www.star-history.com/bhardwj-sarvesh-projects/CURLYCODER#history">
 <picture>
   <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=bhardwj-sarvesh-projects/CURLYCODER&type=Date&theme=dark" />
   <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=bhardwj-sarvesh-projects/CURLYCODER&type=Date" />
   <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=bhardwj-sarvesh-projects/CURLYCODER&type=Date" />
 </picture>
</a>
