Automated audit: This issue was generated by NLPM, a natural language programming linter, running via claude-code-action. Please evaluate the findings on their merits.
Hi @ChrisWiles π β first, thank you for this showcase repo. It's a great reference for Claude Code's NL artifact system and the skill-rules hook design is particularly well thought out.
What is NLPM?
NLPM is a 100-point natural language programming linter that scores Claude Code artifacts (commands, agents, skills, hooks) against a rule set. It checks for structural correctness (frontmatter completeness, broken references) and quality patterns.
Your repo scored 81/100 β a solid result. The skill files and code-reviewer agent are especially clean (95/100 each).
Bugs Found (8 total)
All 8 bugs are missing frontmatter fields, which prevent command registration:
| # |
File |
Issue |
Impact |
| 1 |
.claude/commands/code-quality.md |
Missing name frontmatter |
/code-quality cannot be registered |
| 2 |
.claude/commands/docs-sync.md |
Missing name frontmatter |
/docs-sync cannot be registered |
| 3 |
.claude/commands/onboard.md |
Missing name frontmatter |
/onboard cannot be registered |
| 4 |
.claude/commands/onboard.md |
Missing description frontmatter |
No UI/discovery description |
| 5 |
.claude/commands/onboard.md |
Missing allowed-tools frontmatter |
No declared tool boundary |
| 6 |
.claude/commands/pr-review.md |
Missing name frontmatter |
/pr-review cannot be registered |
| 7 |
.claude/commands/pr-summary.md |
Missing name frontmatter |
/pr-summary cannot be registered |
| 8 |
.claude/commands/ticket.md |
Missing name frontmatter |
/ticket cannot be registered |
Security Findings (Medium/Low)
| Severity |
File |
Issue |
| Medium |
.mcp.json |
All 7 MCP servers use npx -y @anthropic/mcp-* with no version pin β a compromised npm publish is silently adopted |
| Medium |
.mcp.json |
@anthropic/mcp-postgres grants full DB read/write with no permission scoping |
| Low |
.claude/commands/pr-review.md |
Unquoted $ARGUMENTS in gh pr view $ARGUMENTS |
| Low |
.claude/commands/code-quality.md |
Unquoted $ARGUMENTS in npm run lint -- $ARGUMENTS |
(No Critical or High findings β those would be disclosed privately.)
PRs Submitted
Each PR is a minimal, targeted fix. Please merge or close them as you see fit β no obligation either way.
Informational (not PRed)
skill-rules.json references 13 skills with no corresponding SKILL.md files (navigation-architecture, state-management, github-actions, etc.). The hook will surface these names but Claude won't find the files. You may want to either create stub skills or remove the orphaned entries.
- The GitHub Actions workflows pin
claude-opus-4-5-20251101 while .claude/agents/code-reviewer.md uses model: opus. These could drift; consider consolidating to a single source of truth.
Thanks again for publishing this repo β it's a useful reference for the community.
Hi @ChrisWiles π β first, thank you for this showcase repo. It's a great reference for Claude Code's NL artifact system and the skill-rules hook design is particularly well thought out.
What is NLPM?
NLPM is a 100-point natural language programming linter that scores Claude Code artifacts (commands, agents, skills, hooks) against a rule set. It checks for structural correctness (frontmatter completeness, broken references) and quality patterns.
Your repo scored 81/100 β a solid result. The skill files and code-reviewer agent are especially clean (95/100 each).
Bugs Found (8 total)
All 8 bugs are missing frontmatter fields, which prevent command registration:
.claude/commands/code-quality.mdnamefrontmatter/code-qualitycannot be registered.claude/commands/docs-sync.mdnamefrontmatter/docs-synccannot be registered.claude/commands/onboard.mdnamefrontmatter/onboardcannot be registered.claude/commands/onboard.mddescriptionfrontmatter.claude/commands/onboard.mdallowed-toolsfrontmatter.claude/commands/pr-review.mdnamefrontmatter/pr-reviewcannot be registered.claude/commands/pr-summary.mdnamefrontmatter/pr-summarycannot be registered.claude/commands/ticket.mdnamefrontmatter/ticketcannot be registeredSecurity Findings (Medium/Low)
.mcp.jsonnpx -y @anthropic/mcp-*with no version pin β a compromised npm publish is silently adopted.mcp.json@anthropic/mcp-postgresgrants full DB read/write with no permission scoping.claude/commands/pr-review.md$ARGUMENTSingh pr view $ARGUMENTS.claude/commands/code-quality.md$ARGUMENTSinnpm run lint -- $ARGUMENTS(No Critical or High findings β those would be disclosed privately.)
PRs Submitted
Each PR is a minimal, targeted fix. Please merge or close them as you see fit β no obligation either way.
Informational (not PRed)
skill-rules.jsonreferences 13 skills with no correspondingSKILL.mdfiles (navigation-architecture,state-management,github-actions, etc.). The hook will surface these names but Claude won't find the files. You may want to either create stub skills or remove the orphaned entries.claude-opus-4-5-20251101while.claude/agents/code-reviewer.mdusesmodel: opus. These could drift; consider consolidating to a single source of truth.Thanks again for publishing this repo β it's a useful reference for the community.