-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathaction.yml
More file actions
146 lines (140 loc) · 5.05 KB
/
action.yml
File metadata and controls
146 lines (140 loc) · 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
name: "skillcheck"
description: "Cross-agent skill quality gate for SKILL.md files. Validates against the agentskills.io specification."
author: "Brad Kinnard (moonrunnerkc), Aftermath Technologies Ltd"
branding:
icon: "check-circle"
color: "green"
inputs:
path:
description: "Path to a SKILL.md file or directory to scan recursively."
required: false
default: "."
version:
description: "skillcheck version to install (e.g., '1.0.0'). Leave empty for latest."
required: false
default: ""
min-desc-score:
description: "Minimum description quality score (0-100). Below this triggers a warning."
required: false
default: ""
target-agent:
description: "Scope compat checks: claude, vscode, cursor, or all (default: all)."
required: false
default: ""
strict-vscode:
description: "Promote VS Code compat issues to errors."
required: false
default: "false"
strict-cursor:
description: "Promote Cursor compat issues to errors."
required: false
default: "false"
strict:
description: "Strict mode. Escalates warnings to exit 1 and enables --strict-vscode and --strict-cursor."
required: false
default: "false"
skip-dirname-check:
description: "Skip directory-name matching check."
required: false
default: "false"
skip-ref-check:
description: "Skip file reference validation."
required: false
default: "false"
ignore:
description: "Comma-separated rule prefixes to suppress (e.g., 'sizing,disclosure')."
required: false
default: ""
max-lines:
description: "Override the line-count threshold (default: 500)."
required: false
default: ""
max-tokens:
description: "Override the token-count threshold (default: 8000)."
required: false
default: ""
format:
description: "Accepted but ignored at runtime. The action always invokes skillcheck with --format json so it can parse diagnostics, emit PR annotations, and write the step summary. Use the CLI directly if you need a different format."
required: false
default: "json"
semantic:
description: "Enable semantic-adjacent validation. In standalone CI this enables heuristic graph analysis."
required: false
default: "false"
analyze-graph:
description: "Run heuristic capability graph analyzers and merge diagnostics into the report."
required: false
default: "false"
ingest-critique:
description: "Path to an agent self-critique JSON response to ingest."
required: false
default: ""
critique-agent:
description: "Critique prompt/source agent: claude, codex, or cursor."
required: false
default: ""
ingest-graph:
description: "Path to an agent graph-extraction JSON response to ingest."
required: false
default: ""
graph-agent:
description: "Graph prompt/source agent: claude, codex, or cursor."
required: false
default: ""
history:
description: "Append a validation record to .skillcheck-history.json."
required: false
default: "false"
activation-hypotheses:
description: "Generate activation hypotheses. This is an emit mode and does not produce PR annotations."
required: false
default: "false"
outputs:
exit-code:
description: "skillcheck exit code (0=pass, 1=errors, 2=warnings or input error, 3=semantic drift)."
value: ${{ steps.run.outputs.exit-code }}
json:
description: "Full JSON output from skillcheck."
value: ${{ steps.run.outputs.json }}
runs:
using: "composite"
steps:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ">=3.10"
- name: Install skillcheck
shell: bash
env:
INPUT_VERSION: ${{ inputs.version }}
run: |
if [ -n "$INPUT_VERSION" ]; then
python -m pip install --quiet "skillcheck==$INPUT_VERSION"
else
python -m pip install --quiet "skillcheck>=1.0.1"
fi
- name: Run skillcheck
id: run
shell: bash
env:
INPUT_PATH: ${{ inputs.path }}
INPUT_STRICT_VSCODE: ${{ inputs.strict-vscode }}
INPUT_STRICT_CURSOR: ${{ inputs.strict-cursor }}
INPUT_STRICT: ${{ inputs.strict }}
INPUT_SKIP_DIRNAME_CHECK: ${{ inputs.skip-dirname-check }}
INPUT_SKIP_REF_CHECK: ${{ inputs.skip-ref-check }}
INPUT_MIN_DESC_SCORE: ${{ inputs.min-desc-score }}
INPUT_TARGET_AGENT: ${{ inputs.target-agent }}
INPUT_IGNORE: ${{ inputs.ignore }}
INPUT_MAX_LINES: ${{ inputs.max-lines }}
INPUT_MAX_TOKENS: ${{ inputs.max-tokens }}
INPUT_FORMAT: ${{ inputs.format }}
INPUT_SEMANTIC: ${{ inputs.semantic }}
INPUT_ANALYZE_GRAPH: ${{ inputs.analyze-graph }}
INPUT_INGEST_CRITIQUE: ${{ inputs.ingest-critique }}
INPUT_CRITIQUE_AGENT: ${{ inputs.critique-agent }}
INPUT_INGEST_GRAPH: ${{ inputs.ingest-graph }}
INPUT_GRAPH_AGENT: ${{ inputs.graph-agent }}
INPUT_HISTORY: ${{ inputs.history }}
INPUT_ACTIVATION_HYPOTHESES: ${{ inputs.activation-hypotheses }}
run: python "${{ github.action_path }}/action/entrypoint.py"