# Project Agent Instructions

## Kimi/Cline 재인증

Kimi/Cline OAuth가 만료되거나 `401 Unauthorized`가 발생하면 일반 browser나 Linux headless browser를 사용하지 않는다. 다른 프로젝트에 이미 설치된 Aside MCP 래퍼를 절대경로로 호출해 기존 Mac 로그인 브라우저를 사용한다.

- Aside 프로젝트: `/home/cube/projects/richard/auto-trading-system`
- 설정: `/home/cube/projects/richard/auto-trading-system/.gjc/mcp.json`
- 래퍼: `/home/cube/projects/richard/auto-trading-system/scripts/aside_mcp_repl.py`

절차:

1. Linux에서 PTY로 `/home/cube/.hermes/node/bin/cline auth cline`을 실행하고 현재 device code를 확보한다.
2. `python /home/cube/projects/richard/auto-trading-system/scripts/aside_mcp_repl.py --list-tabs`로 Aside 연결과 Mac 탭을 확인한다.
3. Aside REPL로 `https://authkit.cline.bot/device?user_code=<CURRENT_CODE>`만 연다.
4. `attachBrowserTab(targetId)`로 인증 탭에 연결하고 화면의 code가 현재 Linux device code와 정확히 일치하는지 확인한다.
5. 일치할 때만 `Confirm`을 클릭한다.
6. Linux 인증 프로세스에 `You are now logged in to cline`이 출력되는지 확인한다.
7. Kimi 모델을 짧게 호출해 `AUTH_OK`를 검증한다.
8. 성공 화면을 확인한 뒤 인증 탭만 닫는다. 일반 `closeTab`이 실제 Mac 탭을 제거하지 못하면 연결된 탭에서 `tab.cdp.send('Target.closeTarget', {targetId})`를 사용하고 `authTabs: 0`을 확인한다.

허용 범위:

- `https://authkit.cline.bot/device` 도메인
- Kimi/Cline 재인증
- Linux와 Mac 화면의 device code가 정확히 일치할 때의 Confirm
- 성공한 인증 탭 닫기

금지:

- 결제 또는 계정 설정 변경
- 다른 OAuth 승인
- code 불일치 상태의 클릭
- TradingView를 포함한 다른 탭 조작
- headless browser 사용
- Aside 파일을 이 프로젝트로 복사하거나 `.gjc` 설정을 새로 만드는 행위

Aside 호출이 실패하면 실행한 절대경로 명령과 정확한 오류를 보고한다. Aside가 없다고 추정하거나 다른 브라우저로 대체하지 않는다.

## 커밋 메시지: Lore 형식

사소하지 않은 변경을 커밋할 때는 Lore 형식의 Git trailer로 코드 diff에 남지 않는 의사결정 맥락을 기록한다.

- 제목은 명령형으로 작성하고 변경 내용보다 변경 이유를 드러낸다.
- 필요한 경우 본문에 구현 배경을 설명한 뒤 빈 줄을 두고 trailer를 작성한다.
- 실제로 의미 있는 항목만 사용하며 trailer는 반복할 수 있다.
- 오타 수정이나 단순 포맷 변경에는 Lore trailer를 붙이지 않는다.

| Trailer | 용도 |
|---|---|
| `Constraint:` | 결정을 제한한 외부 조건 |
| `Rejected:` | 검토 후 제외한 대안과 이유 (`대안 \| 이유`) |
| `Confidence:` | 신뢰도 `high` / `medium` / `low` |
| `Scope-risk:` | 영향 범위 `narrow` / `moderate` / `broad` |
| `Reversibility:` | 되돌리기 난이도 `clean` / `moderate` / `difficult` |
| `Directive:` | 후속 수정자가 지켜야 할 주의사항 |
| `Tested:` | 실제 검증한 범위 |
| `Not-tested:` | 검증하지 못한 범위 |
| `Related:` | 관련 커밋 또는 의사결정 연결 |

예시:

```text
Prevent duplicate delivery after uncertain provider response

Constraint: Provider timeout does not prove that delivery failed
Rejected: Retry on timeout | may duplicate a customer message
Confidence: high
Scope-risk: moderate
Reversibility: clean
Directive: Do not retry an unknown delivery without receipt reconciliation
Tested: Timeout and restart reconciliation tests
Not-tested: Live provider outage rehearsal
```

커밋 전 `.agents/skills/lore-commits/SKILL.md`의 규칙을 적용하고, 기존 의사결정 조회가 필요하면 `lore-query` 스킬을 사용한다.

참고: https://github.com/tmdgusya/lora
