MCP HubMCP Hub
SKILL·EFDE78

crit-cli

tomasz-tomczyk
업데이트됨 22 days ago
3 조회
949
73
949
GitHub에서 보기
문서automation

정보

crit-cli 스킬은 개발자가 코드 리뷰 코멘트를 프로그래밍 방식으로 생성하고 관리하며, 리뷰를 게시하고 GitHub PR과 동기화할 수 있도록 지원합니다. 이 스킬은 상호작용형 리뷰 루프 없이 에이전트가 공유된 코드, 문서 또는 제안 사항에 코멘트를 달아야 하는 자동화된 워크플로우를 위해 설계되었습니다. 주요 기능으로는 인라인 코멘트 생성, 리뷰 공유/비공개 설정, 그리고 GitHub로 리뷰 푸시/풀 작업 등이 포함됩니다.

빠른 설치

Claude Code

추천
기본
npx skills add tomasz-tomczyk/crit -a claude-code
플러그인 명령대체
/plugin add https://github.com/tomasz-tomczyk/crit
Git 클론대체
git clone https://github.com/tomasz-tomczyk/crit.git ~/.claude/skills/crit-cli

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

Crit CLI Reference

If a plan was just written and the user said /crit or crit, invoke the /crit command — do not use this reference skill. This skill covers CLI operations like crit comment, crit pull/push, and crit share.

Comments have three scopes:

  • Line comments (scope: "line") — tied to specific lines, stored in files.<path>.comments
  • File comments (scope: "file") — about a file overall, stored in files.<path>.comments with start_line: 0
  • Review comments (scope: "review") — general feedback, stored in the top-level review_comments array

The review file path is shown by crit status.

Reading comments

When crit completes a review round, read stdout and follow its instructions. Unresolved comments are often embedded in that prompt as JSON. Check stderr for approved: true or approved: false.

When you need to read comments separately:

crit comments            # human-readable, unresolved only (default)
crit comments --json     # flat JSON for agents
crit comments --all      # include resolved comments
crit comments --plan <slug>   # plan reviews
crit comments [path]     # explicit review.json or .crit directory

Review-level comments are listed first — easy to miss in raw review.json. Uses the same review resolution as crit comment (--output, --plan, daemon session).

Multiple active sessions

When more than one review session matches the current directory and branch, crit comment refuses to guess. Run crit status (or crit status --json) to list every active session, then target the intended review explicitly:

crit comment --session <id> --author <name> <path>:<line> <body>
crit comment --session <id> --json --file comments.json --author <name>

The JSON status output exposes the candidates in sessions.

Review file format

{
  "review_comments": [
    {
      "id": "r_f1e2d3",
      "body": "Overall the architecture looks good",
      "scope": "review",
      "author": "User Name",
      "resolved": false,
      "replies": [
        { "id": "rp_b4a5c6", "body": "Thanks, addressed the minor issues", "author": "OpenCode" }
      ]
    }
  ],
  "files": {
    "path/to/file.go": {
      "comments": [
        {
          "id": "c_a1b2c3",
          "start_line": 5,
          "end_line": 10,
          "body": "Comment text",
          "quote": "the specific words selected",
          "anchor": "The sessions table needs a complete rewrite...",
          "author": "User Name",
          "resolved": false,
          "replies": [
            { "id": "rp_c7d8e9", "body": "Fixed by extracting to helper", "author": "OpenCode" }
          ]
        }
      ]
    }
  }
}

Field rules:

  • resolved: false or missing — both mean unresolved. Only true means resolved.
  • quote (optional): the specific text the reviewer selected — narrows scope within the line range. Focus changes on the quoted text rather than the entire range.
  • anchor (line comments): full text of the commented lines when placed. When edits shift line numbers, locate content by anchor rather than trusting start_line/end_line.
  • drifted: true: original content was removed or heavily rewritten — line numbers are approximate at best.
  • Unresolved comments may have replies — read them before acting.

Authoring comments

# Review-level (general feedback)
crit comment --author 'OpenCode' '<body>'

# File-level (whole file, no line numbers)
crit comment --author 'OpenCode' <path> '<body>'

# Line (single line or range)
crit comment --author 'OpenCode' <path>:<line> '<body>'
crit comment --author 'OpenCode' <path>:<start>-<end> '<body>'

# Reply to an existing comment
crit comment --reply-to <id> --author 'OpenCode' '<body>'

Hard rules:

  • Always pass --author 'OpenCode' so comments are attributed correctly.
  • Always single-quote the body — double quotes break on backticks and shell metachars.
  • Line numbers reference the file on disk (1-indexed), not diff line numbers.
  • Reply bodies support markdown — use code fences and inline code where helpful.
  • Only pass --resolve when the user explicitly asks. Never resolve proactively. Same rule applies to the resolve field in --json mode.

Bulk commenting (3+ comments)

Use --json for atomicity (single write, no partial state) and speed (one process). The JSON can come from stdin or --file <path>:

# stdin — fine for short, single-line bodies:
echo '[
  {"body": "overall feedback", "scope": "review"},
  {"path": "session.go", "body": "restructure", "scope": "file"},
  {"file": "src/auth.go", "line": 42, "body": "Missing null check"},
  {"file": "src/auth.go", "line": "50-55", "body": "Extract to helper"},
  {"reply_to": "c_a1b2c3", "body": "Fixed — added null check"},
  {"reply_to": "r_f1e2d3", "body": "Done"}
]' | crit comment --json --author 'OpenCode'

For multi-paragraph bodies, prefer --file. A literal newline inside a "body" string breaks JSON parsing, and shell-quoted heredocs make this easy to introduce by accident. Write the JSON to a temp file (use your file-edit tool), then:

crit comment --json --file /tmp/crit-bulk.json --author 'OpenCode'

--file - is an explicit "read stdin" if you ever need it.

Per-entry schema:

FieldTypeRequiredNotes
file / pathstringline/file commentsRelative path. path alone (no line) → file-level.
lineint/stringline comments42 or "45-47"
end_lineintoptionalDefaults to line
bodystringalways
authorstringoptionalPer-entry override; falls back to --author
scopestringoptional"review" / "file" — usually inferred
reply_tostringrepliesComment ID (c_… or r_…)
resolvebooloptionalOnly when user explicitly asks

Scope inference (when scope omitted): has reply_to → reply; no file/path and no line → review-level; path but no line → file-level; file/path + line → line.

Multi-file disambiguation

Comment IDs are unique per session, but the same ID can collide across files. If crit comment errors with "comment found in multiple files", disambiguate with --path:

crit comment --reply-to c_a1b2c3 --path src/auth.go --author 'OpenCode' 'Fixed the null check'

In --json mode, set the file field on the entry. Review-level IDs (r_…) are globally unique and never need this.

Plan-mode comments

Plan reviews (via crit plan or the ExitPlanMode hook) store the review file in ~/.crit/plans/<slug>/. Always pass --plan <slug> — without it, crit comment looks in the project root and won't find the comments. The slug is shown in the review feedback prompt.

crit comment --plan my-plan-2026-03-23 --reply-to c_a1b2c3 --author 'OpenCode' 'Updated the plan'

GitHub PR Integration

crit pull [pr-number]                                    # Fetch PR review comments into the review file
crit push [--dry-run] [--event <type>] [-m <msg>] [pr]   # Post review comments as a GitHub PR review

Requires gh CLI installed and authenticated. PR number is auto-detected from the current branch.

--event values: comment (default), approve, request-changes. -m adds a review-level body message.

Sharing

crit share <file> [file...]                          # Upload and print URL
crit share --qr <file>                               # Also print QR code (terminal only)
crit share --org <slug> <file>                       # Share under an organization
crit share --org <slug> --visibility unlisted <file> # Org share with explicit visibility
crit unpublish [file...]                              # Remove shared review
  • Always relay the output — copy the URL (and QR if used) into your response. Don't make the user dig through tool output.
  • --qr is terminal-only — skip in mobile apps, web chat UIs, or anywhere Unicode block characters won't render correctly.
  • --org <slug> shares under an organization. Visibility defaults to organization (members only). Override with --visibility (organization, unlisted, public).
  • If a review file exists, comments for the shared files are included automatically.
  • Unpublish uses the persisted delete token in the review file — no extra args needed.

GitHub 저장소

tomasz-tomczyk/crit
경로: integrations/opencode/skills/crit-cli
0
agentic-codingai-agentsai-toolsclicode-reviewdeveloper-tools
FAQ

자주 묻는 질문

crit-cli Skill이란 무엇인가요?

crit-cli은(는) tomasz-tomczyk이(가) 만든 Claude Skill입니다. Skill은 Claude가 필요할 때 불러오는 지침과 리소스를 묶어 추가 프롬프트 없이 crit-cli 관련 작업을 수행할 수 있게 합니다.

crit-cli은(는) 어떻게 설치하나요?

이 페이지의 설치 명령을 사용하세요. crit-cli을(를) Claude Code 플러그인으로 추가하거나 저장소를 skills 디렉터리에 복제한 다음 Claude를 다시 시작해 Skill을 불러옵니다.

crit-cli은(는) 어떤 카테고리에 속하나요?

crit-cli은(는) 문서 카테고리에 속합니다.

crit-cli은(는) 무료로 사용할 수 있나요?

네. crit-cli은(는) AIMCP에 등록되어 있으며 무료로 설치할 수 있습니다.

연관 스킬

railway-docs
문서

이 스킬은 Railway의 기능, 작동 방식 또는 특정 문서 URL에 대한 질문에 답하기 위해 최신 Railway 문서를 가져옵니다. 개발자들이 Railway의 공식 소스로부터 정확하고 최신 정보를 직접 받을 수 있도록 보장합니다. 사용자가 Railway의 작동 방식을 묻거나 Railway 문서를 참조할 때 사용하세요.

스킬 보기
n8n-code-python
문서

이 Claude Skill은 n8n의 Code 노드에서 Python 코드를 작성할 때 전문적인 지침을 제공하며, 특히 Python 표준 라이브러리 사용과 n8n의 특수 구문인 `_input`, `_json`, `_node` 작업에 중점을 둡니다. 이는 개발자가 n8n 내에서 Python의 제한 사항을 이해하도록 돕고, 대부분의 워크플로에는 JavaScript 사용을 권장하면서도 특정 데이터 변환 요구사항에 대한 Python 솔루션을 제안합니다.

스킬 보기
archon
문서

Archon 스킬은 REST API를 통해 RAG 기반 시맨틱 검색과 프로젝트 관리를 제공합니다. 이 스킬을 사용하여 문서 검색, 계층적 프로젝트/태스크 관리, 문서 업로드 기능을 갖춘 지식 검색을 수행할 수 있습니다. 외부 문서를 검색할 때는 다른 소스를 사용하기 전에 항상 Archon을 최우선으로 활용하세요.

스킬 보기
n8n-code-javascript
문서

이 Claude Skill은 n8n의 Code 노드에서 JavaScript 코드 작성에 대한 전문적인 지침을 제공합니다. `$input`/`$json` 변수, HTTP 헬퍼, DateTime 처리와 같은 필수적인 n8n 특정 구문을 다루며 일반적인 오류를 해결합니다. Code 노드에서 사용자 정의 JavaScript 처리가 필요한 n8n 워크플로우를 개발할 때 활용하세요.

스킬 보기