lint-skills
Use when running the package's skill linter against all skills and rules to validate frontmatter, required sections, and execution metadata.
- License 许可
- MIT
- 最近更新
- 2026-11-14
- Stars
- ★ 19
- Forks
- 1
01 前言 Front Matter
- name
- lint-skills
- packs
- [ "meta" ]
- scope
- { "write": [], "verification_reason": "the declared command is a read-only linter: grep -c 'writeFileSync|mkdirSync|appendFileSync' src/scripts/skill_linter.ts returns 0. Absence of a write is not something a command can prove." }
- domain
- process
- execution
- { "type": "assisted", "command": [ "./scripts-run", "src/scripts/skill_linter", "--all" ], "handler": "shell", "allowed_tools": [], "timeout_seconds": 120 }
- model_tier
- medium
- workspaces
- [ "agent-config-maintainer" ]
- description
- Use when running the package's skill linter against all skills and rules to validate frontmatter, required sections, and execution metadata.
- runtime_requires
- { "bins": [ "bash", "node" ], "network": [] }
03 SKILL.md 正文
lint-skills
When to use
Use this skill when:
- Validating the shape of every skill and rule in
src/ - Verifying execution metadata (
execution.type,handler,command) is well-formed - Checking locally before opening a PR that CI's skill-lint job will pass
- Investigating a reported linter failure on a specific skill or rule
Do NOT use when:
- Linting only one file — call
./scripts-run src/scripts/skill_linter <path>directly - Checking cross-references between files — use
check-refsinstead - Checking condensation freshness — use
bash scripts/condense.sh --checkinstead
Procedure
1. Inspect the environment
Confirm ./scripts-run is executable and the working directory is the agent-config
repository root — the linter expects to find src/skills/
and related directories relative to cwd.
2. Dispatch via the runtime layer
Invoke the skill through the runtime dispatcher so the execution: block in
this skill's frontmatter governs the call:
./scripts-run src/scripts/runtime_dispatcher run --skill lint-skills
The dispatcher resolves the request, the shell handler runs
./scripts-run src/scripts/skill_linter --all, captures stdout/stderr, and returns
a typed ExecutionResult.
3. Verify the result
Check the returned ExecutionResult:
status: successandexit_code: 0→ all skills and rules are cleanexit_code: 1→ warnings only — reviewstdoutfor the listed warningsexit_code: 2→ errors present — fix the flagged files before continuingstatus: timeout→ the linter exceededtimeout_seconds— investigatestatus: error→ the runner could not launch — check that./scripts-runis onPATHand the repository root is the current working directory
Output format
- One-line summary:
success | failure | timeout | error, exit code, duration in milliseconds - Count of skills and rules the linter inspected, if known
- List of files with errors (first 10), each with code and message
- Next action: fix errors, re-run, or surface the raw
stdoutfor review
Gotchas
- The command uses
--all, which walks the full tree — expect several seconds of runtime on a warm repo; bumptimeout_secondsif the repo has grown - Running outside the agent-config repo root will make the linter report zero skills, which looks like a pass but is actually a no-op
- Warnings (
exit_code: 1) do not fail CI by default; do not dismiss them as "green" when the task is to get to zero warnings
Do NOT
- Do NOT invoke
src/scripts/skill_linter.tsdirectly when the intent is to test the runtime path — use the dispatcher so the handler and result object are exercised - Do NOT raise
timeout_secondsto hide a genuinely slow linter pass — investigate the slowdown first - Do NOT add shell redirection or pipes to
command— the handler runssubprocess.runwithshell=False; only argv form is supported
04 同仓库更多 Skills
unknown-key-fixture
Declares a key the schema does not know.
portable-fixture
Declares only semantics the MCP-lite carrier transports whole.
non-portable-fixture
Declares a runtime semantic the carrier drops.
candidate-zero-width
A candidate whose prose carries an invisible joiner.
candidate-disclosure-suppression
A candidate whose prose tells the agent to withhold from the user.
candidate-dangerous-frontmatter
A candidate claiming an unscoped tool grant and a permission bypass.