Skip to content

chore: align skills repo with official validation#4

Merged
yacosta738 merged 4 commits intomainfrom
agents-skills-specs
Apr 4, 2026
Merged

chore: align skills repo with official validation#4
yacosta738 merged 4 commits intomainfrom
agents-skills-specs

Conversation

@yacosta738
Copy link
Copy Markdown
Contributor

This pull request introduces a new validation workflow for skills, refines the skill manifest standards, and improves developer tooling for local and CI validation. The most important changes are grouped below:

Validation Workflow and Tooling Improvements:

  • Added scripts/validate-skills.sh and scripts/install-skills-ref.sh to centralize and standardize skill validation using the official skills-ref tool, replacing the previous Bash-based validator. [1] [2]
  • Updated .github/workflows/validate-skills.yml to use the new validation script and extend validation triggers to cover scripts, workflow configs, and documentation. Increased job timeout and added Python setup. [1] [2]
  • Added a Makefile with common targets for validation, installing tools, and hooks, making it easier to run checks locally.
  • Introduced lefthook.yml and documented Lefthook integration for pre-push validation, ensuring local and CI checks are consistent. [1] [2]

Skill Manifest and Contribution Standards:

  • Updated CONTRIBUTING.md to clarify SKILL.md format: removed triggers and version as top-level fields, moved activation cues to description, and emphasized concise, action-oriented content. Provided new examples and validation rules. [1] [2]
  • Revised PR checklist and contribution guidance to reflect new standards, including required fields, validation steps, and local testing instructions. [1] [2] [3] [4]

Documentation Updates:

  • Updated README.md to document the validation workflow, tool installation, and common maintenance commands. Added new skill to the skills list. [1] [2]

These changes modernize and standardize skill validation, improve contributor experience, and enforce higher quality and consistency for submitted skills.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 4, 2026

Warning

Rate limit exceeded

@yacosta738 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 18 minutes and 57 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 18 minutes and 57 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: af344233-f9c4-443b-905b-7ba7e4015309

📥 Commits

Reviewing files that changed from the base of the PR and between 7896965 and 5ad0fd5.

📒 Files selected for processing (3)
  • scripts/validate_skills.py
  • skills/accessibility/references/REFERENCE.md
  • skills/best-practices/references/REFERENCE.md
📝 Walkthrough

Walkthrough

Replaces inline CI validation with script-driven validation (Bash + Python + pinned skills-ref), updates GitHub Actions to call the scripts and broaden path filters, adds Makefile and Lefthook hooks for local validation, expands .gitignore, migrates SKILL.md frontmatter schema, and adds the nothing-design skill with references.

Changes

Cohort / File(s) Summary
Workflow / CI
\.github/workflows/validate-skills.yml
Expanded workflow path filters, renamed job display name, increased timeout, removed inline Bash validation and now sets up Python then calls ./scripts/validate-skills.sh.
Local tooling & hooks
Makefile, lefthook.yml, \.gitignore
Added a top-level Makefile with install/validate/hooks targets, added Lefthook pre-push hook to run the validator, and updated .gitignore to exclude .tools/, .venv/, *.pyc, __pycache__/.
Validator scripts
scripts/install-skills-ref.sh, scripts/validate-skills.sh, scripts/validate_skills.py
Added installer that pins skills-ref into a venv, a Bash orchestrator that runs skills-ref validate per skill and then invokes a Python repo-specific validator enforcing frontmatter/body rules and aggregating failures.
Documentation & contributor guidance
CONTRIBUTING.md, README.md
Rewrote SKILL.md schema guidance (remove top-level version/triggers, require capability+activation in description), updated local/CI validation instructions to use scripts/Makefile, and documented validation tooling.
Skill frontmatter migration
skills/*/SKILL.md (many files)
Uniform frontmatter updates across ~40+ skills: removed top-level version and triggers, added license: MIT and metadata.version: "1.0.0", and moved activation cues inline into description. Minor whitespace/formatting cleanups.
Reference files added/migrated
skills/*/references/REFERENCE.md (accessibility, best-practices, rust-async-patterns, seo, sql-optimization-patterns, etc.)
Moved large per-skill guidance/checklists into dedicated references/REFERENCE.md files and added missing reference docs for several skills.
New design system skill
skills/nothing-design/SKILL.md, skills/nothing-design/references/*
Added comprehensive nothing-design skill and multiple reference docs (components, examples, platform-mapping, tokens).
Skill-creator template
skills/skill-creator/SKILL.md, skills/skill-creator/assets/SKILL-TEMPLATE.md
Updated the skill template and guidance to reflect new frontmatter rules, added license/metadata examples, removed Decision Tree/Commands sections, and added validation command guidance.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant GH as GitHub Actions
  participant Runner as CI Runner / Dev Machine
  participant Bash as ./scripts/validate-skills.sh
  participant Installer as ./scripts/install-skills-ref.sh
  participant VenvSR as skills-ref (venv)
  participant Py as scripts/validate_skills.py

  GH->>Runner: workflow triggered (push/PR/paths)
  Runner->>Bash: execute ./scripts/validate-skills.sh
  Bash->>Installer: run install-skills-ref.sh
  Installer-->>Bash: path to venv skills-ref (VenvSR)
  Bash->>VenvSR: run "skills-ref validate <skill_dir>" per skill
  VenvSR-->>Bash: per-skill result
  Bash->>Py: run python3 scripts/validate_skills.py (repo checks)
  Py-->>Bash: aggregated pass/fail (exit code)
  Bash-->>Runner: exit with status (fail workflow on non-zero)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰 I hop through manifests, tidy and bright,

metadata nested, triggers tucked from sight.
"Use when" I whisper in description so clear,
scripts hum my checklist, pre-push draws near.
Carrots of references, neat rows — validate, cheer!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore: align skills repo with official validation' accurately and concisely summarizes the main focus of the pull request: aligning the repository's skill validation with official tools and standards.
Description check ✅ Passed The description is comprehensive and well-organized, clearly explaining the validation workflow improvements, skill manifest changes, and documentation updates that comprise the changeset.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agents-skills-specs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 22

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
skills/skill-creator/SKILL.md (1)

74-74: ⚠️ Potential issue | 🟠 Major

Fix malformed fenced-code delimiters to restore Markdown rendering.

Line 74, Line 99, and Line 113 use ```markdown where a closing fence is needed. This can cause large sections to render as code instead of documentation.

Proposed fix
-```markdown
+```
...
-```markdown
+```
...
-```markdown
+```

Also applies to: 99-99, 113-113

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/skill-creator/SKILL.md` at line 74, Replace the malformed closing
fenced-code delimiters that use "```markdown" where a closing fence is required:
search SKILL.md for occurrences of the string "```markdown" that are acting as
closing fences and replace those closing instances with a plain "```" so each
opened ```markdown block is properly terminated by ```; ensure the three
problematic blocks (the ones currently closed with "```markdown") are corrected
to use "```" as the closing fence.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/validate-skills.yml:
- Around line 7-21: Update the GitHub Actions path filters to include the
Makefile so changes to it trigger the workflow: add 'Makefile' to both the
push.paths and pull_request.paths arrays in the validate-skills.yml workflow
(the block listing 'skills/**', 'scripts/**',
'.github/workflows/validate-skills.yml', 'lefthook.yml', 'CONTRIBUTING.md',
'README.md') so PRs that only modify the Makefile will run CI.

In `@CONTRIBUTING.md`:
- Line 34: The heading "SKILL.md Format" was renamed and no longer matches the
table-of-contents anchor "#skillmd-manifest-format"; either revert the heading
to "SKILL.md Manifest Format" or update the TOC entry to point to
"#skillmd-format" so the anchor resolves. Locate the heading text "SKILL.md
Format" and the TOC link that references "#skillmd-manifest-format" and make
them consistent (match the exact slugified anchor) so the link works.

In `@scripts/install-skills-ref.sh`:
- Around line 9-12: The current check prefers any skills-ref on PATH, allowing
the pinned validator to be bypassed; change the logic so the script prefers the
repository-pinned validator and only uses a PATH-installed skills-ref when
explicitly allowed: when SKILLS_REF_FORCE_LOCAL != "1" ensure you either invoke
the repo-pinned binary (e.g., ./skills-ref or the known pinned artifact) or
verify the PATH-provided skills-ref matches the pinned ref (compare skills-ref
--version or an expected SKILLS_REF_PINNED_VERSION env var) and only exit 0 if
it matches; otherwise fall back to using the pinned binary or fail with a clear
message.
- Around line 14-19: The install logic only checks for the existence of
"$VENV_DIR/bin/skills-ref" and ignores SKILLS_REF_GIT_REF changes; update
scripts/install-skills-ref.sh to record the installed ref (e.g., write
SKILLS_REF_GIT_REF into a marker file inside VENV_DIR such as
"$VENV_DIR/.skills_ref_installed_ref") and on each run compare the current
SKILLS_REF_GIT_REF to that marker; if the marker is missing or differs, recreate
or force-reinstall the package (use "$VENV_DIR/bin/pip install --upgrade
--force-reinstall $SKILLS_REF_PACKAGE" or remove and recreate VENV_DIR) and
update the marker with the new SKILLS_REF_GIT_REF so the venv is refreshed when
the pinned ref changes.

In `@scripts/validate_skills.py`:
- Around line 67-70: The check currently looks for "Use when" in the whole file
text (variable text) which lets body mentions satisfy a rule meant for the
description frontmatter; update the logic to extract the frontmatter description
field (e.g., frontmatter.get("description") or a local variable named
description) and perform the "Use when" presence check against that description
string only, and if description is missing or doesn't include "Use when" append
the same problem to problems (keep existing message).

In `@scripts/validate-skills.sh`:
- Line 12: The assignment to SKILLS_REF_BIN uses command substitution without
quoting the script path which breaks on paths with spaces; change the line that
calls install-skills-ref.sh so the script path is quoted inside the substitution
and the entire substitution is wrapped in quotes (i.e., reference
SKILLS_REF_BIN, the install-skills-ref.sh invocation and the ROOT_DIR variable)
so the command runs correctly for paths containing spaces.

In `@skills/accessibility/references/REFERENCE.md`:
- Around line 1-63: Change the top-level heading "Testing checklist" from "##"
to "#" and add missing blank lines before and after each major heading
("Automated testing", "Manual testing", "Screen reader commands", "Common issues
by impact") and ensure there is a blank line before and after the fenced code
block under "Automated testing" so the file follows markdownlint spacing rules
and improves rendering consistency.

In `@skills/best-practices/references/REFERENCE.md`:
- Line 1: The file starts with a level-2 heading ("## Code quality") which
triggers markdownlint MD041; change the top-level heading to an H1 by replacing
the "## Code quality" heading with "# Code quality" so the file begins with a
single top-level H1 heading.
- Line 146: The "Web Quality Audit" link in REFERENCE.md uses an incorrect
relative path; update the link target for "Web Quality Audit" so it points to
the sibling skill's SKILL.md (use the sibling-skill relative path instead of the
current ../web-quality-audit/SKILL.md), verify the corrected path resolves by
checking the actual file location, and update the link text in REFERENCE.md
accordingly (locate the "Web Quality Audit" entry to change its href).
- Around line 105-126: Add a blank line immediately after each subsection
heading in the checklist block so the list items are separated from their
headings; specifically insert one empty line after the headings "### Security
(critical)", "### Compatibility", "### Code quality", and "### UX" in
REFERENCE.md so each heading is followed by a blank line before the subsequent
list items to satisfy MD022.

In `@skills/cypress-e2e/SKILL.md`:
- Around line 11-13: The MD022/MD031 warnings are caused by missing blank lines
around headings and code-fence boundaries in SKILL.md (specifically the "## When
to Use" heading); to fix, add a single blank line above and below the "## When
to Use" heading and ensure any adjacent code fences have a blank line before the
opening ``` and after the closing ```, then re-run markdownlint to confirm the
MD022/MD031 warnings are resolved.

In `@skills/nothing-design/references/platform-mapping.md`:
- Around line 41-55: The Color(hex:) calls in the Color extension are not
standard SwiftUI; add or link a helper initializer that parses hex strings and
constructs a SwiftUI Color (for example, implement Color.init(hex: String) that
converts hex to RGB/opacity via UIColor or CGColor) or replace each Color(hex:)
use with an existing initializer; update the file to include the helper
implementation (or a comment/link to it) so the extension (extension Color and
the nd* static properties) compiles for consumers.

In `@skills/nothing-design/references/tokens.md`:
- Around line 130-131: Add a blank line between the heading "### CSS
Implementation" and the opening CSS fenced code block to satisfy MD022/MD031;
locate the heading "### CSS Implementation" in tokens.md and insert a single
empty line before the subsequent ```css fence so the CSS example (the .dot-grid
block) is separated from the heading.

In `@skills/nothing-design/SKILL.md`:
- Around line 72-77: The fenced code blocks in SKILL.md that start around the
"Tight (4–8px ... Vast (64–96px)" list are missing a language tag and trigger
MD040; update each opening triple-backtick for those blocks (the one around the
spacing list and the one around the later block at lines ~94-99) to include a
language identifier such as "text" (e.g., change ``` to ```text) so the markdown
linter is satisfied while preserving the existing content.

In `@skills/rust-async-patterns/references/REFERENCE.md`:
- Line 1: The file begins with a level-2 heading ("## Debugging Tips") which
triggers markdownlint MD041; change the top heading to an H1 by replacing "##
Debugging Tips" with "# Debugging Tips" (or add a distinct H1 title line above
the existing content) so the document starts with an H1; update the heading text
in REFERENCE.md accordingly to ensure the first line is an H1.
- Around line 19-23: The example uses .instrument(span) inside the tokio::spawn
call but is missing the tracing::Instrument trait import; add use
tracing::Instrument; (in addition to the existing instrument macro import) so
the .instrument(span) method on the future compiles—locate the example around
the tracing::info_span! declaration and the tokio::spawn(async move { ...
}.instrument(span)) usage and add the trait import.

In `@skills/seo/references/REFERENCE.md`:
- Line 1: The file currently begins with a second-level heading ("## Mobile
SEO") which triggers MD041, so change it to a top-level heading ("# Mobile SEO")
or add a H1 above it; additionally, fix MD022 by ensuring there is a blank line
after each checklist subsection heading in the checklist block (the headings
referenced around lines 72-93) so every heading is followed by a single blank
line before the content that follows.
- Around line 116-117: The related-skill links in REFERENCE.md are using
one-level-up paths that resolve relative to skills/seo/references/ (e.g.,
"../core-web-vitals/SKILL.md" and "../web-quality-audit/SKILL.md"); update both
links to point to the sibling skill directories by adding one more parent
segment (change to "../../core-web-vitals/SKILL.md" and
"../../web-quality-audit/SKILL.md") so they resolve to the correct sibling
locations.

In `@skills/skill-creator/assets/SKILL-TEMPLATE.md`:
- Around line 4-5: Add an explicit, prominent instruction to SKILL-TEMPLATE.md
requiring authors to replace all `{...}` placeholders before submission: locate
the descriptive lines that include `{Brief description...}` and `{user
intent...}` and add a clear note (e.g., bolded "REPLACE PLACEHOLDERS") stating
that any `{...}` tokens must be replaced, and that submissions containing
un-replaced `{...}` will be rejected; apply the same note near the template
section referenced by the reviewer (the repeated placeholder block around the
later template lines) so both occurrences of `{...}` are covered.

In `@skills/skill-creator/SKILL.md`:
- Line 139: Update the validation guidance in SKILL.md to match the enforced
checks: replace instructions that say to run only "skills-ref validate"
(references at the checklist and lines ~150-156 and ~182) with the shared
validation command "./scripts/validate-skills.sh", and change the line about
file length ("Keep the main `SKILL.md` under 500 lines when possible") to state
the enforced rule exactly (e.g., "SKILL.md must be 500 lines or fewer") so it
matches CI; also update the checklist entries (the item that currently mentions
"`skills-ref validate skills/{skill-name}` passes") to require
"./scripts/validate-skills.sh passes". Ensure all occurrences are updated
consistently.

In `@skills/sql-optimization-patterns/references/REFERENCE.md`:
- Line 1: The file's top-level heading uses "## Best Practices" which violates
MD041; change the opening heading to a level-1 heading by replacing "## Best
Practices" with "# Best Practices" so the document begins with an H1. Ensure any
other section headings remain unchanged.
- Around line 73-79: The listed resource paths in REFERENCE.md are incorrect for
its directory; update each entry (references/postgres-optimization-guide.md,
references/mysql-optimization-guide.md, references/query-plan-analysis.md,
assets/index-strategy-checklist.md, assets/query-optimization-checklist.md,
scripts/analyze-slow-queries.sql, scripts/index-recommendations.sql) to use
correct relative paths from skills/sql-optimization-patterns/references/ (e.g.,
./postgres-optimization-guide.md, ./query-plan-analysis.md,
../assets/index-strategy-checklist.md, ../scripts/analyze-slow-queries.sql) or
convert them into markdown links [Title](./path) so navigation works and links
can be verified.

---

Outside diff comments:
In `@skills/skill-creator/SKILL.md`:
- Line 74: Replace the malformed closing fenced-code delimiters that use
"```markdown" where a closing fence is required: search SKILL.md for occurrences
of the string "```markdown" that are acting as closing fences and replace those
closing instances with a plain "```" so each opened ```markdown block is
properly terminated by ```; ensure the three problematic blocks (the ones
currently closed with "```markdown") are corrected to use "```" as the closing
fence.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 4bb92eb3-7b8a-48ac-b99b-2be041897f38

📥 Commits

Reviewing files that changed from the base of the PR and between a3dd262 and b611d98.

📒 Files selected for processing (60)
  • .github/workflows/validate-skills.yml
  • .gitignore
  • CONTRIBUTING.md
  • Makefile
  • README.md
  • lefthook.yml
  • scripts/install-skills-ref.sh
  • scripts/validate-skills.sh
  • scripts/validate_skills.py
  • skills/accessibility/SKILL.md
  • skills/accessibility/references/REFERENCE.md
  • skills/best-practices/SKILL.md
  • skills/best-practices/references/REFERENCE.md
  • skills/brainstorming/SKILL.md
  • skills/core-web-vitals/SKILL.md
  • skills/cypress-e2e/SKILL.md
  • skills/docker-expert/SKILL.md
  • skills/elixir-development/SKILL.md
  • skills/eslint-config/SKILL.md
  • skills/express-api/SKILL.md
  • skills/frontend-design/SKILL.md
  • skills/github-actions/SKILL.md
  • skills/go-development/SKILL.md
  • skills/grafana-dashboards/SKILL.md
  • skills/grpc-api/SKILL.md
  • skills/helm-charts/SKILL.md
  • skills/jest-testing/SKILL.md
  • skills/kubernetes-orchestration/SKILL.md
  • skills/makefile/SKILL.md
  • skills/markdown-a11y/SKILL.md
  • skills/nothing-design/SKILL.md
  • skills/nothing-design/references/components.md
  • skills/nothing-design/references/examples.md
  • skills/nothing-design/references/platform-mapping.md
  • skills/nothing-design/references/tokens.md
  • skills/performance/SKILL.md
  • skills/php-development/SKILL.md
  • skills/pinned-tag/SKILL.md
  • skills/postgresql-development/SKILL.md
  • skills/pr-creator/SKILL.md
  • skills/prettier-formatting/SKILL.md
  • skills/qwik-development/SKILL.md
  • skills/rails-development/SKILL.md
  • skills/ruby-development/SKILL.md
  • skills/rust-async-patterns/SKILL.md
  • skills/rust-async-patterns/references/REFERENCE.md
  • skills/seo/SKILL.md
  • skills/seo/references/REFERENCE.md
  • skills/skill-creator/SKILL.md
  • skills/skill-creator/assets/SKILL-TEMPLATE.md
  • skills/solidjs-development/SKILL.md
  • skills/sql-optimization-patterns/SKILL.md
  • skills/sql-optimization-patterns/references/REFERENCE.md
  • skills/swift-ios-development/SKILL.md
  • skills/tensorflow-ml/SKILL.md
  • skills/testing-library/SKILL.md
  • skills/trpc-type-safety/SKILL.md
  • skills/web-quality-audit/SKILL.md
  • skills/webapp-testing/SKILL.md
  • skills/zig-development/SKILL.md

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
skills/skill-creator/SKILL.md (1)

32-40: 🧹 Nitpick | 🔵 Trivial

Add language identifiers to fenced code blocks.

Static analysis flags MD040 for fenced code blocks without language specifiers at lines 32 and 46. Adding identifiers improves syntax highlighting and accessibility.

Proposed fix
-```
+```text
 skills/{skill-name}/
 ├── SKILL.md              # Required - main skill file
-```
+```markdown
 ---
 name: {skill-name}
 description: >

Also applies to: 46-74

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/skill-creator/SKILL.md` around lines 32 - 40, The fenced code blocks
in SKILL.md are missing language identifiers (triggering MD040); update the
directory-tree block and the frontmatter/example blocks by adding appropriate
language tags (e.g., "text" for the ASCII tree and "markdown" or "yaml" for the
frontmatter) so they become fenced with language identifiers; locate the blocks
in the SKILL.md content (the directory listing and the frontmatter/example
starting with "--- name: {skill-name}") and prefix their opening triple
backticks with the chosen language labels.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@scripts/validate_skills.py`:
- Line 38: Replace the repeated startswith calls with a tuple-based startswith:
change the condition "if not line or line.startswith(' ') or
line.startswith('\t'):" to "if not line or line.startswith((' ', '\t')):" so the
check for leading space or tab is consolidated into a single startswith call on
the variable line; update any nearby similar checks if present.
- Line 71: Wrap the call to skill_file.read_text() in a try/except inside the
script so unreadable SKILL.md files don't raise uncaught exceptions: catch
OSError and UnicodeDecodeError (or a general Exception), log/print a clear error
that includes the skill_file path/name and the exception message, and then
handle it appropriately (e.g., mark the skill invalid or exit with a non-zero
code). Locate the read_text() call (variable skill_file and variable text) and
add the try/except around that invocation to provide the cleaner error output.

In `@skills/accessibility/references/REFERENCE.md`:
- Around line 3-37: The document jumps heading levels (h1 → h3, etc.); update
the subsection headings so they increment by one level from the document's
top-level h1: change "### Automated testing", "### Manual testing", "### Screen
reader commands" to "## Automated testing", "## Manual testing", "## Screen
reader commands" (and make "## Common issues by impact" consistent if it isn't
already), ensuring all subsection headings use h2 under the h1 and any nested
sub-sections use h3, etc., so the hierarchy is sequential and consistent.

In `@skills/best-practices/references/REFERENCE.md`:
- Around line 3-55: The file has a heading-level jump (MD001): change the
sibling section headings currently written as "### Valid HTML", "### Semantic
HTML", and "### Image aspect ratios" to H2 so they are promoted from H3 to H2
(replace the leading "###" with "##") to restore a proper hierarchy under the
document H1.

In `@skills/nothing-design/references/platform-mapping.md`:
- Around line 23-30: Add the missing CSS spacing token --space-2xs: 2px to this
token set so it matches the canonical spacing scale in tokens.md; insert the new
declaration (--space-2xs: 2px) in the correct order among the other --space-*
variables (just before --space-xs: 4px) so the list remains ordered and
complete.

In `@skills/nothing-design/SKILL.md`:
- Line 215: Update the text line that reads "Provide reduced-motion friendly
behavior; if animation is used, keep it subtle and removable" to hyphenate the
compound adjective so it reads "Provide reduced-motion-friendly behavior; if
animation is used, keep it subtle and removable" (locate this exact sentence in
SKILL.md and replace the unhyphenated form).

In `@skills/seo/references/REFERENCE.md`:
- Around line 1-3: The headings jump from H1 "Mobile SEO" to H3 "Responsive
design", "Tap targets", and "Font sizes", violating MD001; fix by either
promoting those three subsection headings from H3 (###) to H2 (##) or inserting
an H2 under the H1 (e.g., "## Mobile SEO Overview") and keeping the subsections
as H3—update the headings for "Responsive design", "Tap targets", and "Font
sizes" accordingly so heading levels increment correctly.

In `@skills/skill-creator/SKILL.md`:
- Around line 134-148: The MD022 violations are caused by missing blank lines
around the subheadings in the "Content Guidelines" section; open SKILL.md, find
the "Content Guidelines" heading and ensure there is an empty line before and
after each subheading like "### DO" and "### DON'T" (i.e., add a single blank
line above the "### DO" and below its block, and similarly above "### DON'T" and
below its block) so each subheading is separated from surrounding text by blank
lines to satisfy markdown linting.

---

Outside diff comments:
In `@skills/skill-creator/SKILL.md`:
- Around line 32-40: The fenced code blocks in SKILL.md are missing language
identifiers (triggering MD040); update the directory-tree block and the
frontmatter/example blocks by adding appropriate language tags (e.g., "text" for
the ASCII tree and "markdown" or "yaml" for the frontmatter) so they become
fenced with language identifiers; locate the blocks in the SKILL.md content (the
directory listing and the frontmatter/example starting with "--- name:
{skill-name}") and prefix their opening triple backticks with the chosen
language labels.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1968a113-4021-4ca3-870a-5961724370d4

📥 Commits

Reviewing files that changed from the base of the PR and between b611d98 and 3eac81b.

📒 Files selected for processing (16)
  • .github/workflows/validate-skills.yml
  • CONTRIBUTING.md
  • scripts/install-skills-ref.sh
  • scripts/validate-skills.sh
  • scripts/validate_skills.py
  • skills/accessibility/references/REFERENCE.md
  • skills/best-practices/references/REFERENCE.md
  • skills/cypress-e2e/SKILL.md
  • skills/nothing-design/SKILL.md
  • skills/nothing-design/references/platform-mapping.md
  • skills/nothing-design/references/tokens.md
  • skills/rust-async-patterns/references/REFERENCE.md
  • skills/seo/references/REFERENCE.md
  • skills/skill-creator/SKILL.md
  • skills/skill-creator/assets/SKILL-TEMPLATE.md
  • skills/sql-optimization-patterns/references/REFERENCE.md

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@scripts/validate_skills.py`:
- Around line 119-126: The loop currently appends each validation tuple
one-by-one to failures; replace the per-item appends with a single extend call
to collect all results from validate_skill(skill_dir) at once (e.g.,
failures.extend(validate_skill(skill_dir))) inside the same for skill_dir loop
after confirming SKILL.md exists; this uses validate_skill as the iterable
source and keeps the existing logic around checking skill_file and continuing on
missing SKILL.md.

In `@skills/accessibility/references/REFERENCE.md`:
- Around line 38-57: The three markdown subheadings "### Critical (fix
immediately)", "### Serious (fix before launch)", and "### Moderate (fix soon)"
are missing blank lines after them which triggers MD022; fix by inserting a
single empty line immediately after each of these headings so each numbered list
follows a blank line (i.e., ensure a blank line after the headings in
REFERENCE.md where the headings strings above occur).

In `@skills/best-practices/references/REFERENCE.md`:
- Around line 89-99: Remove the <meta http-equiv="Permissions-Policy"> examples
under the "Permissions policy" section and replace them with guidance and
examples that show setting the Permissions-Policy as an HTTP response header on
the server side (e.g., show nginx/Apache config or an Express/Node setHeader
example), and update the explanatory text to state explicitly that the
Permissions-Policy must be set via HTTP headers rather than meta tags; ensure
references to "Permissions-Policy" in that section and the two meta examples are
replaced by server-side header configuration instructions and examples.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 2c8a89cd-9ccb-4c6e-ba2d-d27c5b5ba2e3

📥 Commits

Reviewing files that changed from the base of the PR and between 3eac81b and 7896965.

📒 Files selected for processing (7)
  • scripts/validate_skills.py
  • skills/accessibility/references/REFERENCE.md
  • skills/best-practices/references/REFERENCE.md
  • skills/nothing-design/SKILL.md
  • skills/nothing-design/references/platform-mapping.md
  • skills/seo/references/REFERENCE.md
  • skills/skill-creator/SKILL.md

@yacosta738 yacosta738 merged commit 1475377 into main Apr 4, 2026
5 of 6 checks passed
@yacosta738 yacosta738 deleted the agents-skills-specs branch April 4, 2026 11:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant