curl -L -o lua-syntax-validator.skill "https://aiskillstore.io/v1/agent/skills/a03b7f19-1a84-4191-ab28-161d465ca0d3/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "a03b7f19-1a84-4191-ab28-161d465ca0d3",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
Validate Lua 5.3/5.4 source code via AST parsing. Returns error locations (line:col), error type, and optional AST summary. Deterministic, offline, no external API.
Compatible Platforms any
🚨 Security risks detected:
Findings: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)"]
AI Review Stage
스킬 메타데이터와 코드 파일을 분석한 결과, 다음과 같은 판단을 내렸습니다. 1. **선언된 권한 일치 여부**: 스킬 메타데이터에 'network: false', 'filesystem: false', 'subprocess: false'로 명시되어 있으며, 제공된 코드(`main.py`, `lib/validator.py`)에서 외부 네트워크 통신, 파일 시스템 접근(모듈 로딩을 위한 `sys.path.insert` 및 `os.path.dirname` 제외), 또는 서브프로세스 실행과 관련된 어떠한 코드도 발견되지 않았습니다. `sys.stdin` 및 `sys.stdout`을 통한 표준 입출력만 사용하고 있어 선언된 권한과 실제 코드가 완벽하게 일치합니다. 2. **악의적 목적 코드**: 사용자 데이터를 탈취하거나 시스템을 파괴하려는 어떠한 악의적인 코드 패턴도 발견되지 않았습니다. 코드 난독화도 없습니다. 3. **선언되지 않은 외부 통신**: 코드 내에서 HTTP 요청, 소켓 통신 등 외부 네트워크 통신을 시도하는 부분이 전혀 없습니다. 4. **사용자 데이터 무단 수집/전송**: 스킬은 `stdin`으로 입력받은 Lua 코드를 처리하고 그 결과를 `stdout`으로 반환합니다. 이 과정에서 사용자 데이터를 무단으로 수집, 저장 또는 외부로 전송하는 행위는 발견되지 않았습니다. 5. **코드 품질 및 목적 일치**: 코드는 Lua 구문 유효성 검사라는 스킬의 목적에 충실하게 작성되었습니다. 입력 유효성 검사, 오류 처리, AST 파싱 및 요약 기능 등이 명확하게 구현되어 있으며, 코드 가독성도 높습니다. **정적 분석 결과에 대한 검토**: 정적 분석에서 'lib/validator.py: base64.b64decode('가 'red_flags_found'로 지적되었으나, 이는 스킬의 의도된 기능(사용자가 base64로 인코딩된 Lua 코드를 입력할 경우 이를 디코딩하여 처리)을 위한 것입니다. 디코딩된 내용은 Lua 소스 코드로 간주되어 구문 분석에만 사용되며, 임의 코드 실행이나 파일 시스템 접근 등 위험한 방식으로 활용되지 않습니다. 따라서 이 플래그는 해당 컨텍스트에서는 오탐(false positive)으로 판단됩니다.
Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.
A simple Lua function with local variable — returns valid=true and empty errors
{
"code": "local function greet(name)\n return \u0027Hello, \u0027 .. name\nend\nprint(greet(\u0027world\u0027))",
"lua_version": "5.4",
"output_format": "errors_only"
}
{
"errors": [],
"lua_version": "5.4",
"valid": true
}
Lua function missing the closing 'end' keyword — returns line and column of error
{
"code": "local function broken(x)\n if x \u003e 0 then\n return x\n",
"lua_version": "5.4",
"output_format": "errors_only"
}
{
"errors": [
{
"column": 1,
"line": 4,
"message": "Unexpected end of input, expected \u0027end\u0027",
"token": "\u003ceof\u003e"
}
],
"lua_version": "5.4",
"valid": false
}
Parse a short Lua script and return node-type counts in ast_summary
{
"code": "local x = 10\nlocal y = x * 2\nprint(y)",
"output_format": "ast_summary"
}
{
"ast_summary": {
"Block": 1,
"Call": 1,
"LocalAssign": 2,
"total_nodes": 4
},
"errors": [],
"lua_version": "5.4",
"valid": true
}
Validate Lua 5.3 code using integer division operator supported in 5.3+
{
"code": "local a = 10\nlocal b = 3\nlocal c = a // b\nreturn c",
"lua_version": "5.3",
"output_format": "errors_only"
}
{
"errors": [],
"lua_version": "5.3",
"valid": true
}
Passing an unsupported Lua version returns a structured INPUT_ERROR
{
"code": "print(\u0027hello\u0027)",
"lua_version": "5.1"
}
{
"error": {
"code": "INVALID_VERSION",
"message": "Unsupported Lua version \u00275.1\u0027. Supported: 5.3, 5.4."
},
"errors": [],
"lua_version": "5.1",
"valid": false
}
Validate a Roblox LocalScript pattern before deployment — checks for function definitions and return statements
{
"code": "local Players = game:GetService(\u0027Players\u0027)\nlocal function onPlayerAdded(player)\n print(\u0027Player joined:\u0027, player.Name)\nend\nPlayers.PlayerAdded:Connect(onPlayerAdded)",
"lua_version": "5.4",
"output_format": "ast_summary"
}
{
"ast_summary": {
"Block": 1,
"Call": 3,
"Function": 1,
"LocalAssign": 2,
"total_nodes": 7
},
"errors": [],
"lua_version": "5.4",
"valid": true
}
All examples are also available via the agent API:
/v1/agent/skills/a03b7f19-1a84-4191-ab28-161d465ca0d3/schema
No reviews yet. Be the first to leave one!