curl -L -o rss-feed-reader.skill "https://aiskillstore.io/v1/agent/skills/fc8df408-e5bf-4bbd-825c-cce545ac7c3d/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "fc8df408-e5bf-4bbd-825c-cce545ac7c3d",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
RSS/Atom feed reader with 4 actions: fetch, detect_encoding, filter, audit. Zero external dependencies, Korean EUC-KR auto-detection, client-side keyword filtering, 10+ feed hygiene rules.
호환 플랫폼: any
🚨 보안 위험 감지:
검사 결과: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)"]
AI 검수 단계
발견된 문제
1. **권한 일치:** 스킬 메타데이터에 선언된 `network: true`, `filesystem: false`, `subprocess: false` 권한이 코드의 실제 동작과 일치합니다. `lib/fetcher.py`에서 `urllib.request`를 통한 네트워크 통신은 `network: true`에 부합하며, 파일 시스템 접근이나 외부 프로세스 실행 코드는 발견되지 않았습니다. 2. **악의적 코드 없음:** 정적 분석에서 `base64.b64decode` 사용이 플래그되었으나, 이는 `detect_encoding` 액션에서 사용자로부터 Base64 인코딩된 바이트 샘플을 받아 인코딩을 감지하는 기능의 일부입니다. 디코딩된 바이트는 실행되지 않고 인코딩 감지 로직에만 사용되므로 악의적인 목적으로 판단하기 어렵습니다. 그 외 데이터 탈취, 시스템 파괴, 난독화 등 악의적인 목적의 코드는 발견되지 않았습니다. `lib/parser.py`에서 `<script>` 태그를 제거하는 로직이 포함되어 있어 기본적인 보안 고려사항이 적용된 것으로 보입니다. 3. **외부 통신:** `network: true`가 선언되었고 `network_egress_hosts`가 비어 있어 모든 호스트로의 네트워크 통신이 허용됩니다. 이는 RSS 피드 URL을 입력받아 조회하는 스킬의 본질적인 기능에 필요하며, 선언된 권한 범위 내에서 이루어집니다. 4. **사용자 데이터 수집/전송:** 스킬은 입력된 URL의 피드 콘텐츠를 가져와 처리하며, 사용자 데이터를 무단으로 수집하거나 외부로 전송하는 코드는 발견되지 않았습니다. 5. **코드 품질:** 코드는 모듈화가 잘 되어 있고, 주석 및 독스트링이 명확하며, 표준 라이브러리만을 사용하여 'zero external dependencies'라는 설명과 일치합니다. 오류 처리도 적절하게 구현되어 있습니다. 종합적으로 판단할 때, 이 스킬은 안전하며 스킬 스토어에 공개하기에 적합합니다.
이 스킬의 대표적인 입출력 예시입니다. 에이전트는 이 예시를 보고 스킬 호출 방법과 결과 형태를 이해할 수 있습니다.
RSS 2.0 피드 기본 조회 — 최신 5개 아이템 반환 / Fetch latest 5 items from an RSS 2.0 feed
{
"action": "fetch",
"filter_keywords": [],
"include_content": false,
"max_items": 5,
"url": "https://feeds.feedburner.com/TechCrunch"
}
{
"action": "fetch",
"feed_meta": {
"description": "Startup and Technology News",
"language": "en",
"link": "https://techcrunch.com",
"title": "TechCrunch",
"updated": "2024-01-15T12:00:00Z"
},
"format_detected": "rss2",
"items": [
{
"author": "Jane Smith",
"content": "",
"link": "https://techcrunch.com/2024/01/15/ai-startup",
"published": "2024-01-15T10:30:00Z",
"summary": "A new AI startup has raised...",
"title": "AI startup raises $50M"
}
],
"meta": {
"encoding_used": "utf-8",
"fetched_at": "2024-01-15T12:05:00Z",
"url": "https://feeds.feedburner.com/TechCrunch"
},
"total_items": 5
}
Atom 피드에서 키워드 필터링 — 'AI' 포함 항목만 / Fetch Atom feed filtered by keyword 'AI'
{
"action": "fetch",
"filter_keywords": [
"AI",
"\uba38\uc2e0\ub7ec\ub2dd"
],
"include_content": true,
"lang": "ko",
"max_items": 20,
"url": "https://blog.example.com/atom.xml"
}
{
"action": "fetch",
"feed_meta": {
"description": "AI\uc640 \uac1c\ubc1c \uc774\uc57c\uae30",
"language": "ko",
"link": "https://blog.example.com",
"title": "\uae30\uc220 \ube14\ub85c\uadf8",
"updated": "2024-01-15T09:00:00Z"
},
"format_detected": "atom",
"items": [
{
"author": "\ud64d\uae38\ub3d9",
"content": "\u003cp\u003e2024\ub144 AI \ud2b8\ub80c\ub4dc\ub294...\u003c/p\u003e",
"link": "https://blog.example.com/ai-trends-2024",
"published": "2024-01-15T09:00:00Z",
"summary": "\uc62c\ud574 \uc8fc\ubaa9\ud560 AI \ud2b8\ub80c\ub4dc\ub97c \uc815\ub9ac\ud588\uc2b5\ub2c8\ub2e4.",
"title": "AI \ud2b8\ub80c\ub4dc 2024"
}
],
"meta": {
"encoding_used": "utf-8",
"fetched_at": "2024-01-15T12:05:00Z",
"filter_applied": true,
"filter_keywords": [
"AI",
"\uba38\uc2e0\ub7ec\ub2dd"
],
"url": "https://blog.example.com/atom.xml"
},
"total_items": 3
}
한국어 EUC-KR 피드 인코딩 자동 감지 / Auto-detect EUC-KR encoding for Korean feed
{
"action": "detect_encoding",
"url": "https://www.example.co.kr/rss/news.do"
}
{
"action": "detect_encoding",
"confidence": "high",
"encoding": "euc-kr",
"meta": {
"bom_detected": false,
"byte_signature": "euc-kr",
"sampled_bytes": 512,
"xml_declaration_encoding": "EUC-KR"
}
}
날짜 범위로 아이템 필터링 — 2024-01-10 이후 항목만 / Filter items published after 2024-01-10
{
"action": "filter",
"filter_keywords": [],
"items": [
{
"author": "Writer A",
"content": "",
"link": "https://example.com/old",
"published": "2024-01-05T00:00:00Z",
"summary": "Old content",
"title": "Old Article"
},
{
"author": "Writer B",
"content": "",
"link": "https://example.com/new",
"published": "2024-01-12T00:00:00Z",
"summary": "New content",
"title": "New Article"
}
],
"since": "2024-01-10T00:00:00Z"
}
{
"action": "filter",
"items": [
{
"author": "Writer B",
"content": "",
"link": "https://example.com/new",
"published": "2024-01-12T00:00:00Z",
"summary": "New content",
"title": "New Article"
}
],
"meta": {
"filtered_count": 1,
"keywords": [],
"original_count": 2,
"since": "2024-01-10T00:00:00Z",
"until": null
},
"total_items": 1
}
피드 위생 검사 — 보안·품질 이슈 감지 / Feed audit detecting security and quality issues
{
"action": "audit",
"url": "https://example.com/rss.xml"
}
{
"action": "audit",
"issues": [
{
"category": "SEC",
"fix_hint": {
"action": "Replace http:// with https:// in item links",
"doc_ref": "https://www.rssboard.org/rss-specification",
"example": "https://example.com/article",
"summary": "\ub9c1\ud06c\ub97c HTTPS\ub85c \ubcc0\uacbd\ud558\uc138\uc694 / Change link to HTTPS"
},
"location": "feed/item[2]/link",
"message": "\uc544\uc774\ud15c \ub9c1\ud06c\uac00 HTTP\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. HTTPS\ub97c \uad8c\uc7a5\ud569\ub2c8\ub2e4. / Item link uses HTTP, HTTPS recommended.",
"rule": "SEC_NO_HTTPS",
"severity": "warning"
},
{
"category": "QUAL",
"fix_hint": {
"action": "Add \u003cpubDate\u003eMon, 15 Jan 2024 10:00:00 +0900\u003c/pubDate\u003e",
"doc_ref": "https://www.rssboard.org/rss-specification#ltpubdategtSubelementOfLtitemgt",
"example": "\u003cpubDate\u003eMon, 15 Jan 2024 10:00:00 +0900\u003c/pubDate\u003e",
"summary": "pubDate \ud544\ub4dc\ub97c \ucd94\uac00\ud558\uc138\uc694 / Add pubDate field"
},
"location": "feed/item[3]",
"message": "pubDate \ud544\ub4dc\uac00 \ub204\ub77d\ub418\uc5c8\uc2b5\ub2c8\ub2e4. / pubDate field is missing.",
"rule": "QUAL_MISSING_PUBDATE",
"severity": "error"
}
],
"meta": {
"format_detected": "rss2",
"issue_count": 2,
"rules_applied": 11,
"total_items_checked": 10,
"url": "https://example.com/rss.xml"
},
"score": 62
}
위생 검사 통과 피드 — 점수 100 / Clean feed passing all audit rules with score 100
{
"action": "audit",
"url": "https://example.com/clean-feed.xml"
}
{
"action": "audit",
"issues": [],
"meta": {
"format_detected": "atom",
"issue_count": 0,
"rules_applied": 11,
"total_items_checked": 5,
"url": "https://example.com/clean-feed.xml"
},
"score": 100
}
모든 예시는 에이전트 API로도 조회 가능:
/v1/agent/skills/fc8df408-e5bf-4bbd-825c-cce545ac7c3d/schema
아직 리뷰가 없습니다. 첫 번째 리뷰를 남겨보세요!