curl -L -o git-diff-analyzer.skill "https://aiskillstore.io/v1/agent/skills/28beeebb-fdf0-48d7-8d4a-79907c6eb280/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "28beeebb-fdf0-48d7-8d4a-79907c6eb280",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
Parse unified git diff text into structured per-file data: change type, line counts, hunk positions, language detection. Zero external dependencies.
호환 플랫폼: any
검사 결과: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)"]
✅ 보안 위험 항목이 발견되지 않았습니다.
AI 검수 단계
스킬 메타데이터에 선언된 네트워크, 파일 시스템, 서브프로세스 접근 권한(모두 false)을 코드에서 철저히 준수합니다. `main.py`는 표준 입력을 통해 JSON을 읽고 표준 출력을 통해 결과를 반환하며, `lib/parser.py`는 `re` 모듈과 `os.path` 함수만을 사용하여 입력된 diff 텍스트를 파싱하고 파일 경로를 분석합니다. `os.path` 사용은 파일 시스템 접근이 아닌 경로 문자열 조작에 해당합니다. 외부 통신이나 사용자 데이터 무단 수집/전송의 흔적이 없으며, 코드 난독화나 악의적인 목적의 코드가 발견되지 않았습니다. 정적 분석 결과도 'approved'로 나왔습니다. 전반적으로 안전하고 스킬의 목적에 부합하는 고품질 코드입니다.
이 스킬의 대표적인 입출력 예시입니다. 에이전트는 이 예시를 보고 스킬 호출 방법과 결과 형태를 이해할 수 있습니다.
Parse a single modified file diff — README.md with 2 additions and 1 deletion
{
"diff_text": "single-file-modified-readme-md-diff",
"include_context_lines": false,
"language_hints": true
}
{
"files": [
{
"additions": 2,
"change_type": "modified",
"deletions": 1,
"filename": "README.md",
"hunks": [
{
"added": [
"New description.",
"Added one more line."
],
"context": [],
"new_lines": 4,
"new_start": 1,
"old_lines": 3,
"old_start": 1,
"removed": [
"Old description."
]
}
],
"is_binary": false,
"language": "markdown",
"old_filename": null
}
],
"is_valid_diff": true,
"summary": {
"binary_count": 0,
"by_language": {
"markdown": 1
},
"renamed_count": 0,
"total_additions": 2,
"total_deletions": 1,
"total_files": 1
}
}
Parse a two-file diff containing a Python rename and a new JSON config file
{
"diff_text": "two-file-diff-rename-plus-new-json",
"include_context_lines": false,
"language_hints": true
}
{
"files": [
{
"additions": 2,
"change_type": "renamed",
"deletions": 1,
"filename": "new_name.py",
"hunks": [
{
"added": [
"return hello",
""
],
"context": [],
"new_lines": 3,
"new_start": 1,
"old_lines": 2,
"old_start": 1,
"removed": [
"pass"
]
}
],
"is_binary": false,
"language": "python",
"old_filename": "old_name.py"
},
{
"additions": 3,
"change_type": "added",
"deletions": 0,
"filename": "config.json",
"hunks": [
{
"added": [
"{",
"version field",
"}"
],
"context": [],
"new_lines": 3,
"new_start": 1,
"old_lines": 0,
"old_start": 0,
"removed": []
}
],
"is_binary": false,
"language": "json",
"old_filename": null
}
],
"is_valid_diff": true,
"summary": {
"binary_count": 0,
"by_language": {
"json": 1,
"python": 1
},
"renamed_count": 1,
"total_additions": 5,
"total_deletions": 1,
"total_files": 2
}
}
Detect a binary PNG file change — is_binary flag set, no hunk data
{
"diff_text": "binary-png-diff-header",
"include_context_lines": false,
"language_hints": true
}
{
"files": [
{
"additions": 0,
"change_type": "binary",
"deletions": 0,
"filename": "assets/logo.png",
"hunks": [],
"is_binary": true,
"language": null,
"old_filename": null
}
],
"is_valid_diff": true,
"summary": {
"binary_count": 1,
"by_language": {},
"renamed_count": 0,
"total_additions": 0,
"total_deletions": 0,
"total_files": 1
}
}
Parse a new TypeScript file created from /dev/null — change_type added
{
"diff_text": "new-ts-file-from-devnull-diff",
"include_context_lines": false,
"language_hints": true
}
{
"files": [
{
"additions": 5,
"change_type": "added",
"deletions": 0,
"filename": "src/utils.ts",
"hunks": [
{
"added": [
"export function greet",
" return name;",
"}",
"",
"export default greet;"
],
"context": [],
"new_lines": 5,
"new_start": 1,
"old_lines": 0,
"old_start": 0,
"removed": []
}
],
"is_binary": false,
"language": "typescript",
"old_filename": null
}
],
"is_valid_diff": true,
"summary": {
"binary_count": 0,
"by_language": {
"typescript": 1
},
"renamed_count": 0,
"total_additions": 5,
"total_deletions": 0,
"total_files": 1
}
}
Parse a deleted Go file — change_type deleted, diff to /dev/null
{
"diff_text": "deleted-go-file-to-devnull-diff",
"include_context_lines": false,
"language_hints": true
}
{
"files": [
{
"additions": 0,
"change_type": "deleted",
"deletions": 4,
"filename": "legacy/old.go",
"hunks": [
{
"added": [],
"context": [],
"new_lines": 0,
"new_start": 0,
"old_lines": 4,
"old_start": 1,
"removed": [
"package legacy",
"",
"func Deprecated",
""
]
}
],
"is_binary": false,
"language": "go",
"old_filename": null
}
],
"is_valid_diff": true,
"summary": {
"binary_count": 0,
"by_language": {
"go": 1
},
"renamed_count": 0,
"total_additions": 0,
"total_deletions": 4,
"total_files": 1
}
}
Return INVALID_DIFF_FORMAT error when input lacks recognizable diff headers
{
"diff_text": "this is not a valid diff at all",
"include_context_lines": false,
"language_hints": true
}
{
"error": {
"code": "INVALID_DIFF_FORMAT",
"message": "Input does not contain recognizable diff headers"
}
}
모든 예시는 에이전트 API로도 조회 가능:
/v1/agent/skills/28beeebb-fdf0-48d7-8d4a-79907c6eb280/schema
아직 리뷰가 없습니다. 첫 번째 리뷰를 남겨보세요!