curl -L -o toml-config-parser.skill "https://aiskillstore.io/v1/agent/skills/e69bd92d-05c8-44b0-a321-1d87b43c348a/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "e69bd92d-05c8-44b0-a321-1d87b43c348a",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
Parse and validate TOML config files, extract key paths, and convert to JSON. Supports pyproject.toml, Cargo.toml, config.toml. Zero external dependencies (Python 3.11 stdlib tomllib).
Compatible Platforms any
✅ No security risks found.
AI Review Stage
스킬 메타데이터와 코드 파일을 상세히 검토한 결과, 다음과 같은 판단 근거를 도출했습니다. 1. **권한 일치 여부**: 스킬 메타데이터에 선언된 `permissions`와 실제 코드의 동작이 정확히 일치합니다. * `network: true`: `lib/fetcher.py` 파일에서 `urllib.request` 모듈을 사용하여 HTTP/HTTPS URL로부터 TOML 파일을 가져오는 기능이 구현되어 있습니다. 이는 선언된 네트워크 권한과 일치합니다. * `filesystem: false`: 코드는 자신의 스크립트 파일(`main.py`, `lib/parser.py`, `lib/fetcher.py`)을 로드하는 것 외에 임의의 파일 시스템 접근(읽기/쓰기)을 수행하지 않습니다. 이는 파일 시스템 접근 금지 선언과 일치합니다. * `subprocess: false`: `subprocess` 모듈이나 `os.system`, `os.popen` 등 외부 프로세스를 실행하는 코드가 발견되지 않았습니다. 이는 서브프로세스 실행 금지 선언과 일치합니다. * `env_vars: []`: 환경 변수를 사용하거나 노출하는 코드가 발견되지 않았습니다. 2. **악의적 목적 코드 여부**: 데이터 탈취, 시스템 파괴, 난독화 등 악의적인 목적으로 의심되는 코드는 발견되지 않았습니다. 코드는 명확하고 가독성이 높으며, 난독화 흔적도 없습니다. 3. **선언되지 않은 외부 통신 여부**: `network: true`로 선언된 URL fetch 기능 외에, 사용자 데이터를 무단으로 외부로 전송하거나 다른 불필요한 외부 통신을 시도하는 코드는 발견되지 않았습니다. 4. **사용자 데이터 무단 수집/전송 여부**: 스킬은 사용자로부터 입력받은 TOML 콘텐츠(직접 입력 또는 URL을 통한 fetch)를 파싱하여 결과를 반환하는 것이 주 목적입니다. 이 과정에서 사용자 데이터를 무단으로 수집, 저장 또는 외부로 전송하는 행위는 발견되지 않았습니다. 5. **코드 품질 및 목적 일치**: 코드는 Python 3.11의 표준 라이브러리(`tomllib`, `urllib.request`, `json`, `re`, `datetime`)만을 사용하여 구현되어 외부 의존성이 없습니다. 이는 안정성과 보안에 긍정적입니다. TOML 파싱, 키 경로 추출, JSON 변환, URL fetch 등 스킬의 설명과 일치하는 기능을 충실히 구현하고 있으며, 입력 유효성 검사 및 오류 처리(예: `tomllib.TOMLDecodeError`, `KeyError`, `URL_FETCH_ERROR`)도 잘 되어 있습니다. 특히 `lib/fetcher.py`에서는 URL 스킴 검증, 타임아웃 설정, 최대 응답 크기 제한(`MAX_SIZE = 512 KB`) 등 네트워크 요청에 대한 안전 장치가 잘 마련되어 있습니다. 정적 분석 결과 또한 'approved' 상태로, 추가적인 레드 플래그나 난독화 경고, 금지된 실행 파일 등이 발견되지 않았습니다. 전반적으로 안전하고 신뢰할 수 있는 스킬로 판단됩니다.
Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.
Get a specific value from pyproject.toml using key_path
{
"key_path": "project.version",
"toml_content": "[project]\nname = \"myapp\"\nversion = \"2.1.0\"\ndescription = \"My application\"\n\n[project.dependencies]\nrequests = \"\u003e=2.28\""
}
{
"data": {
"project": {
"dependencies": {
"requests": "\u003e=2.28"
},
"description": "My application",
"name": "myapp",
"version": "2.1.0"
}
},
"metadata": {
"has_datetime": false,
"section_count": 2,
"top_level_keys": [
"project"
]
},
"valid": true,
"value": "2.1.0"
}
Retrieve the entire dependencies table from a Cargo.toml
{
"key_path": "dependencies",
"toml_content": "[package]\nname = \"my-crate\"\nversion = \"0.3.0\"\nedition = \"2021\"\n\n[dependencies]\nserde = { version = \"1.0\", features = [\"derive\"] }\ntokio = \"1\""
}
{
"data": {
"dependencies": {
"serde": {
"features": [
"derive"
],
"version": "1.0"
},
"tokio": "1"
},
"package": {
"edition": "2021",
"name": "my-crate",
"version": "0.3.0"
}
},
"metadata": {
"has_datetime": false,
"section_count": 3,
"top_level_keys": [
"package",
"dependencies"
]
},
"valid": true,
"value": {
"serde": {
"features": [
"derive"
],
"version": "1.0"
},
"tokio": "1"
}
}
Parse a Claude Code config.toml and return the entire structure
{
"toml_content": "[mcpServers.filesystem]\ncommand = \"npx\"\nargs = [\"-y\", \"@modelcontextprotocol/server-filesystem\", \"/tmp\"]\n\n[mcpServers.brave-search]\ncommand = \"npx\"\nargs = [\"-y\", \"@modelcontextprotocol/server-brave-search\"]\n"
}
{
"data": {
"mcpServers": {
"brave-search": {
"args": [
"-y",
"@modelcontextprotocol/server-brave-search"
],
"command": "npx"
},
"filesystem": {
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/tmp"
],
"command": "npx"
}
}
},
"metadata": {
"has_datetime": false,
"section_count": 3,
"top_level_keys": [
"mcpServers"
]
},
"valid": true
}
Flatten a nested TOML structure to dot-separated keys
{
"output_format": "flat",
"toml_content": "[tool.poetry]\nname = \"webapp\"\nversion = \"1.0.0\"\n\n[tool.poetry.dependencies]\npython = \"^3.11\"\nflask = \"^3.0\""
}
{
"data": {
"tool.poetry.dependencies.flask": "^3.0",
"tool.poetry.dependencies.python": "^3.11",
"tool.poetry.name": "webapp",
"tool.poetry.version": "1.0.0"
},
"metadata": {
"has_datetime": false,
"section_count": 3,
"top_level_keys": [
"tool"
]
},
"valid": true
}
Invalid TOML syntax returns structured error with location
{
"toml_content": "[project]\nname = myapp\nversion = \"1.0.0\""
}
{
"error": {
"code": "PARSE_ERROR",
"col": 8,
"line": 2,
"message": "Invalid value (at line 2, column 8)"
},
"valid": false
}
Download a raw TOML file from a URL and extract a nested value
{
"key_path": "tool.poetry.name",
"toml_url": "https://raw.githubusercontent.com/python-poetry/poetry/master/pyproject.toml"
}
{
"data": {},
"metadata": {
"has_datetime": false,
"section_count": 10,
"top_level_keys": [
"tool",
"build-system"
]
},
"valid": true,
"value": "poetry"
}
All examples are also available via the agent API:
/v1/agent/skills/e69bd92d-05c8-44b0-a321-1d87b43c348a/schema
No reviews yet. Be the first to leave one!