curl -L -o changelog-generator.skill "https://aiskillstore.io/v1/agent/skills/b8e8d895-85fa-4ecb-9175-e4ce563cfab7/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "b8e8d895-85fa-4ecb-9175-e4ce563cfab7",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
Convert git commit lists into Conventional Commits-based changelogs (Markdown/JSON, English+Korean), parse/classify/audit commit messages — zero external dependencies.
Compatible Platforms any
Findings: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)"]
✅ No security risks found.
AI Review Stage
스킬 메타데이터에 선언된 `network: false`, `filesystem: false`, `subprocess: false` 권한을 코드에서 충실히 준수하고 있습니다. `main.py`에서 `os` 모듈은 `sys.path` 조작에만 사용되며, 파일 시스템 접근이나 외부 네트워크 통신, 서브프로세스 실행 코드는 발견되지 않았습니다. 스킬 설명과 코드 주석에서 'zero external dependencies'를 명시하고 있으며, 실제 코드도 Python 표준 라이브러리(`json`, `sys`, `os`, `re`, `datetime`, `typing`)만을 사용합니다. `lib/auditor.py`에서 시크릿/해시 패턴 및 이메일 패턴을 감지하는 기능은 사용자 데이터를 무단으로 수집하거나 전송하는 것이 아니라, 커밋 메시지 내 잠재적 보안 위험을 경고하는 스킬의 핵심 보안 기능으로 판단됩니다. 입력 데이터에 대한 길이 제한(`_MAX_MESSAGE_LEN`, `_MAX_VERSION_LEN`, `_MAX_COMMITS`, `_MAX_COMMIT_MSG`) 등 기본적인 입력 유효성 검사 및 보안 조치도 포함되어 있습니다. 코드 난독화나 악의적인 행위의 징후는 없으며, 코드 품질 또한 양호합니다. 정적 분석 결과에서도 특이사항이 발견되지 않았습니다.
Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.
Generate changelog from commits in English+Korean Markdown. / 커밋 목록에서 영한 Markdown changelog 생성.
{
"action": "generate",
"commits": [
{
"author": "Alice",
"date": "2026-04-28",
"hash": "a1b2c3d",
"message": "feat(auth): add OAuth2 login support"
},
{
"author": "Bob",
"date": "2026-04-27",
"hash": "e4f5g6h",
"message": "fix(api): handle null response from upstream"
},
{
"author": "Charlie",
"date": "2026-04-26",
"hash": "i7j8k9l",
"message": "chore: update dependencies"
},
{
"author": "Alice",
"date": "2026-04-25",
"hash": "m1n2o3p",
"message": "feat!: drop support for Python 3.8"
}
],
"format": "markdown",
"lang": "both",
"version": "1.3.0"
}
{
"changelog_ko": "# \ubcc0\uacbd \uc774\ub825\n\n## [1.3.0] - 2026-04-30\n\n### \ud638\ud658\uc131 \ubcc0\uacbd\n- Python 3.8 \uc9c0\uc6d0 \uc911\ub2e8 (m1n2o3p)\n\n### \uc0c8 \uae30\ub2a5\n- **auth**: OAuth2 \ub85c\uadf8\uc778 \uc9c0\uc6d0 \ucd94\uac00 (a1b2c3d)\n\n### \ubc84\uadf8 \uc218\uc815\n- **api**: \uc5c5\uc2a4\ud2b8\ub9bc null \uc751\ub2f5 \ucc98\ub9ac (e4f5g6h)\n\n### \uae30\ud0c0\n- \uc758\uc874\uc131 \uc5c5\ub370\uc774\ud2b8 (i7j8k9l)\n",
"changelog_md": "# Changelog\n\n## [1.3.0] - 2026-04-30\n\n### Breaking Changes\n- drop support for Python 3.8 (m1n2o3p)\n\n### Features\n- **auth**: add OAuth2 login support (a1b2c3d)\n\n### Bug Fixes\n- **api**: handle null response from upstream (e4f5g6h)\n\n### Chores\n- update dependencies (i7j8k9l)\n",
"sections": {
"breaking": [
{
"breaking": true,
"description": "drop support for Python 3.8",
"hash": "m1n2o3p",
"type": "feat"
}
],
"chores": [
{
"description": "update dependencies",
"hash": "i7j8k9l",
"type": "chore"
}
],
"features": [
{
"description": "add OAuth2 login support",
"hash": "a1b2c3d",
"scope": "auth",
"type": "feat"
}
],
"fixes": [
{
"description": "handle null response from upstream",
"hash": "e4f5g6h",
"scope": "api",
"type": "fix"
}
]
}
}
Parse a valid Conventional Commits message. / 유효한 CC 메시지 파싱.
{
"action": "parse_commits",
"message": "feat(api)!: redesign response schema\n\nBREAKING CHANGE: fields renamed from snake_case to camelCase."
}
{
"body": "BREAKING CHANGE: fields renamed from snake_case to camelCase.",
"breaking": true,
"description": "redesign response schema",
"scope": "api",
"type": "feat",
"valid_conventional": true
}
Parse a non-conventional commit message. / CC 미준수 메시지 파싱.
{
"action": "parse_commits",
"message": "fixed the bug"
}
{
"body": "",
"breaking": false,
"description": "fixed the bug",
"scope": null,
"type": null,
"valid_conventional": false
}
Classify a mixed list of commits. / 혼합 커밋 목록 분류.
{
"action": "classify",
"commits": [
{
"message": "feat: new dashboard"
},
{
"message": "feat: dark mode"
},
{
"message": "fix: login crash"
},
{
"message": "chore: bump version"
},
{
"message": "random commit without type"
},
{
"message": "feat!: remove legacy API"
}
]
}
{
"breaking_count": 1,
"by_type": {
"chore": 1,
"feat": 3,
"fix": 1,
"unknown": 1
},
"non_conventional_count": 1,
"summary": {
"conventional_ratio": 0.833,
"most_common_type": "feat"
},
"total": 6
}
Audit commit messages for quality issues. / 커밋 메시지 품질 감사.
{
"action": "audit",
"commits": [
{
"hash": "aaa1111",
"message": "fix."
},
{
"hash": "bbb2222",
"message": "feat(Auth): Added the new login page with OAuth2 integration."
},
{
"hash": "ccc3333",
"message": "wip"
},
{
"hash": "ddd4444",
"message": "update password_hash=abc123def456 in config"
}
]
}
{
"findings": [
{
"code": "QUAL001",
"commit_index": 0,
"fix_hint": {
"action": "rewrite",
"field": "subject",
"reference": "https://www.conventionalcommits.org/",
"suggested": "fix: \u003cdescribe what was fixed\u003e"
},
"hash": "aaa1111",
"message": "Conventional Commits \ud615\uc2dd\uc774 \uc544\ub2d9\ub2c8\ub2e4.",
"message_en": "Message does not follow Conventional Commits format.",
"severity": "QUAL"
},
{
"code": "QUAL003",
"commit_index": 0,
"fix_hint": {
"action": "expand",
"field": "description",
"reference": "https://www.conventionalcommits.org/",
"suggested": "Add more context: what was fixed and why"
},
"hash": "aaa1111",
"message": "\uc124\uba85\uc774 \ub108\ubb34 \uc9e7\uc2b5\ub2c8\ub2e4 (10\uc790 \ubbf8\ub9cc).",
"message_en": "Description is too short (\u003c 10 chars).",
"severity": "QUAL"
},
{
"code": "STR002",
"commit_index": 1,
"fix_hint": {
"action": "rename",
"field": "scope",
"reference": "https://www.conventionalcommits.org/",
"suggested": "auth"
},
"hash": "bbb2222",
"message": "scope \ub300\uc18c\ubb38\uc790\uac00 \ud63c\uc6a9\ub429\ub2c8\ub2e4 (\u0027Auth\u0027). \uc18c\ubb38\uc790\ub97c \uad8c\uc7a5\ud569\ub2c8\ub2e4.",
"message_en": "Scope uses mixed case (\u0027Auth\u0027). Lowercase is recommended.",
"severity": "STR"
},
{
"code": "SEC001",
"commit_index": 3,
"fix_hint": {
"action": "remove",
"field": "message",
"reference": "https://docs.github.com/en/code-security/secret-scanning",
"suggested": "Remove sensitive data from commit message and rotate credentials"
},
"hash": "ddd4444",
"message": "\ucee4\ubc0b \uba54\uc2dc\uc9c0\uc5d0 \uc2dc\ud06c\ub9bf/\ud574\uc2dc \ud328\ud134\uc774 \uac10\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4.",
"message_en": "Potential secret or hash pattern detected in commit message.",
"severity": "SEC"
}
],
"summary": {
"clean_commits": 1,
"commits_audited": 4,
"qual": 2,
"sec": 1,
"str": 1,
"total": 5
}
}
All examples are also available via the agent API:
/v1/agent/skills/b8e8d895-85fa-4ecb-9175-e4ce563cfab7/schema
No reviews yet. Be the first to leave one!