validate-signature

star 110

L5-L8 函數簽名驗證 - 檢查參數、返回值、類型提示、文檔字符串。 BlueMouse 17-Layer Validation Group 2。 Triggers: "signature", "參數檢查", "type hints", "docstring"

peijun1700 By peijun1700 schedule Updated 1/18/2026

name: validate-signature description: > L5-L8 函數簽名驗證 - 檢查參數、返回值、類型提示、文檔字符串。 BlueMouse 17-Layer Validation Group 2。 Triggers: "signature", "參數檢查", "type hints", "docstring" allowed-tools: - Read - Bash user-invocable: true context: fork

Validate Signature Skill (L5-L8)

BlueMouse 17-Layer Validation System - Group 2: 函數簽名驗證

Two Ways to Use

1. AI-Guided Validation

Follow the checklist below to analyze code.

2. Script Execution

python3 .claude/skills/validate-signature/validator.py myfile.py
python3 .claude/skills/validate-signature/validator.py --spec spec.json myfile.py

L5-L8 Validation Checklist

L5: 參數檢查

What: Function has parameters (or matches spec if provided)

How:

func = functions[0]  # Check first function
actual_params = set(arg.arg for arg in func.args.args)

if spec and 'inputs' in spec:
    expected_params = set(spec['inputs'])
    passed = expected_params == actual_params
else:
    passed = True  # No spec, just report count

Pass:

  • With spec: "參數與規格匹配"
  • Without spec: "函數有 N 個參數"

Fail: "參數不匹配: 期望 {expected}, 實際 {actual}"


L6: 返回值檢查

What: Function has explicit return statement

How:

has_return = any(
    isinstance(node, ast.Return)
    for node in ast.walk(func)
)

Pass: "函數有返回值" Fail: "函數缺少返回值"

Examples:

# ✅ PASS
def process(data):
    return data * 2

# ❌ FAIL
def process(data):
    print(data)  # No return

L7: 類型提示檢查

What: Type hints coverage ≥80% AND has return type annotation

How:

params_with_hints = sum(1 for arg in func.args.args if arg.annotation)
total_params = len(func.args.args)
has_return_hint = func.returns is not None

if total_params > 0:
    coverage = params_with_hints / total_params
else:
    coverage = 1.0 if has_return_hint else 0.0

passed = coverage >= 0.8 and has_return_hint

Pass: "類型提示覆蓋率: {coverage}%" Fail: "類型提示不足: {coverage}%"

Coverage Examples:

Params Annotated Coverage Return Type Result
5 5 100% ✅ PASS
5 4 80% ✅ PASS
5 3 60% ❌ FAIL
5 5 100% ❌ FAIL

Examples:

# ✅ PASS: 100% coverage + return type
def process(data: list, count: int) -> dict:
    return {}

# ❌ FAIL: Missing return type
def process(data: list, count: int):
    return {}

# ❌ FAIL: <80% coverage
def process(data, count: int) -> dict:  # 50%
    return {}

L8: 文檔字符串檢查

What: Function has meaningful docstring (>10 characters)

How:

docstring = ast.get_docstring(func)
passed = docstring and len(docstring) > 10

Pass: "有完整文檔字符串 ({length} 字符)" Fail: "缺少或文檔字符串過短"

Examples:

# ✅ PASS: >10 characters
def process(data):
    """Process input data and return results."""
    return data

# ❌ FAIL: Too short (≤10 chars)
def process(data):
    """Process"""
    return data

# ❌ FAIL: No docstring
def process(data):
    return data

Output Format

==================================================
L5-L8: 函數簽名驗證
==================================================

Status: ✅ PASSED / ❌ FAILED
Score: X/100 (N/4 layers)

✅/❌ L5: 參數檢查 - [message]
✅/❌ L6: 返回值檢查 - [message]
✅/❌ L7: 類型提示檢查 - [message]
✅/❌ L8: 文檔字符串檢查 - [message]

Related Skills

Skill Layers
/validate-17-layers L1-L17 (完整)
/validate-syntax L1-L4
/validate-signature L5-L8
/validate-dependencies L9-L12
/validate-logic L13-L17

Part of BlueMouse 17-Layer Validation System

Install via CLI
npx skills add https://github.com/peijun1700/bluemouse --skill validate-signature
Repository Details
star Stars 110
call_split Forks 13
navigation Branch main
article Path SKILL.md
More from Creator