feat(ai): browsable, searchable Agent Skills Directory - #2881
feat(ai): browsable, searchable Agent Skills Directory#2881Erik Osterman (Cloud Posse) (osterman) wants to merge 27 commits into
Conversation
Adds a searchable, category-grouped /ai/skills page (reusing the existing file-browser plugin behind /examples and /gists) with a per-skill detail page for each SKILL.md, replacing the hand-maintained "Available Skills" list in the docs that had drifted to half the real count (25 vs 52). Adds `metadata.category` to every bundled SKILL.md, threads it through `pkg/ai/skills/marketplace`, and exposes it via a new `--format` flag (table/json/yaml/csv/tsv) on `atmos ai skill list`. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…gelog Adds the changelog post and roadmap entry for the browsable Agent Skills Directory shipped in the prior commit, plus follow-up polish: a SkillCount component that renders the live skill count at build time (used on the homepage AI section instead of a hardcoded number), file-browser plugin card icon/CTA options, sidebar nav restructuring under Atmos AI, and doc updates for the new `--format` flag. Also fixes pre-existing EditorConfig indentation violations (3-space markdown list continuations) in several SKILL.md files, surfaced by the affected-file validator once those files were touched by this branch's earlier commit.
|
Tip Atmos Pro
No affected stacks workflow was detected for this pull request. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (4)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThe change adds categories to bundled skills, adds category-aware CLI output formats, and introduces a searchable generated Agent Skills Directory with configurable cards and Markdown copying. Documentation and navigation now reference the directory and dynamic skill counts. ChangesAgent Skills Directory
Estimated code review effort: 3 (Moderate) | ~30 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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. Comment |
Dependency Review✅ No vulnerabilities or license issues found.Scanned Files
|
|
Important Cloud Posse Engineering Team Review RequiredThis pull request modifies files that require Cloud Posse's review. Please be patient, and a core maintainer will review your changes. To expedite this process, reach out to us on Slack in the |
Adds a "Copy as Markdown" button to a skill's root page that concatenates its SKILL.md and every nested reference file into one clipboard-ready Markdown document, so the full context can be grabbed without installing the skill. Ships as an opt-in `enableCopyMarkdown` file-browser plugin option (enabled for the /ai/skills instance only; /examples and /gists render unchanged).
There was a problem hiding this comment.
Actionable comments posted: 6
🧹 Nitpick comments (1)
cmd/ai/skill/list_test.go (1)
451-493: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd table-driven coverage for all advertised formats.
The implementation advertises table, JSON, YAML, CSV, and TSV output. This test covers only JSON and one non-empty case. Add table-driven cases for each structured format and assert exact keys or headers, including
Category.As per coding guidelines, new Go features require comprehensive behavior-focused table-driven tests with at least 85% coverage.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@cmd/ai/skill/list_test.go` around lines 451 - 493, Expand TestListCmd_FormatJSON into table-driven coverage for table, JSON, YAML, CSV, and TSV formats, exercising both the populated skill case and the empty-list case. For each format, assert the exact expected keys or headers, including Category, and verify structured output parses correctly without human-only text; reuse the existing catalog, registry setup, and format flag reset helpers.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@agent-skills/skills/atmos-templates/SKILL.md`:
- Line 231: Update the final performance item in the template-functions list to
end with a period after “calls,” preserving the existing wording and list
punctuation.
In `@cmd/ai/skill/list.go`:
- Around line 203-206: Update the skill-list rendering flow around
renderSkillListStructured so any non-table output format is dispatched before
the empty-list human-readable message. Ensure --format=json, yaml, csv, and tsv
render their format-specific empty result when --installed finds no entries,
while preserving the existing table output behavior.
- Line 80: Validate the Viper-resolved format value before casting it in the
RunE flow around listformat.Format and renderSkillList. Reuse the existing
format validation mechanism for values supplied through config or
ATMOS_AI_SKILL_FORMAT, return a command error for invalid values, and add a
negative test covering ATMOS_AI_SKILL_FORMAT=invalid.
In `@cmd/ai/skill/markdown/atmos_ai_skill_list_usage.md`:
- Around line 21-23: Update the new usage code block in the skill list
documentation to use the shell language identifier and remove the `$` prompt,
keeping the command itself unchanged so it satisfies Markdown lint rules MD040
and MD014.
In `@pkg/ai/skills/marketplace/catalog.go`:
- Line 32: Update the AvailableSkill keyed literal in catalog_test.go to include
the exported Category field with an empty value, keeping the existing expected
fields unchanged so the comparison remains a compile-time check.
In `@website/src/components/FileBrowser/styles.module.css`:
- Around line 356-358: Update the .sidebar/.sidebarInner layout so the inner
file tree has a definite desktop height for scrolling: either assign a fixed or
viewport-based height to .sidebar or move the existing viewport maximum height
to .sidebarInner. Preserve overflow-y: auto on .sidebarInner and ensure long
file trees scroll within the sidebar.
---
Nitpick comments:
In `@cmd/ai/skill/list_test.go`:
- Around line 451-493: Expand TestListCmd_FormatJSON into table-driven coverage
for table, JSON, YAML, CSV, and TSV formats, exercising both the populated skill
case and the empty-list case. For each format, assert the exact expected keys or
headers, including Category, and verify structured output parses correctly
without human-only text; reuse the existing catalog, registry setup, and format
flag reset helpers.
🪄 Autofix
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 7faafa3d-e4da-46dc-a52d-9c2ccafb8e29
📒 Files selected for processing (80)
agent-skills/skills/atmos-ai/SKILL.mdagent-skills/skills/atmos-ansible/SKILL.mdagent-skills/skills/atmos-asciicast/SKILL.mdagent-skills/skills/atmos-auth/SKILL.mdagent-skills/skills/atmos-aws-compliance/SKILL.mdagent-skills/skills/atmos-aws-ecr/SKILL.mdagent-skills/skills/atmos-aws-eks/SKILL.mdagent-skills/skills/atmos-aws-security/SKILL.mdagent-skills/skills/atmos-cache/SKILL.mdagent-skills/skills/atmos-cast/SKILL.mdagent-skills/skills/atmos-ci/SKILL.mdagent-skills/skills/atmos-components/SKILL.mdagent-skills/skills/atmos-compositions/SKILL.mdagent-skills/skills/atmos-config/SKILL.mdagent-skills/skills/atmos-container/SKILL.mdagent-skills/skills/atmos-custom-commands/SKILL.mdagent-skills/skills/atmos-design-patterns/SKILL.mdagent-skills/skills/atmos-devcontainer/SKILL.mdagent-skills/skills/atmos-diagnostics/SKILL.mdagent-skills/skills/atmos-emulator/SKILL.mdagent-skills/skills/atmos-git/SKILL.mdagent-skills/skills/atmos-helm/SKILL.mdagent-skills/skills/atmos-helmfile/SKILL.mdagent-skills/skills/atmos-hooks/SKILL.mdagent-skills/skills/atmos-imports/SKILL.mdagent-skills/skills/atmos-init/SKILL.mdagent-skills/skills/atmos-introspection/SKILL.mdagent-skills/skills/atmos-kubernetes/SKILL.mdagent-skills/skills/atmos-lint/SKILL.mdagent-skills/skills/atmos-migration/SKILL.mdagent-skills/skills/atmos-modernization/SKILL.mdagent-skills/skills/atmos-packer/SKILL.mdagent-skills/skills/atmos-pro/SKILL.mdagent-skills/skills/atmos-profiles/SKILL.mdagent-skills/skills/atmos-project-layout/SKILL.mdagent-skills/skills/atmos-sbom/SKILL.mdagent-skills/skills/atmos-scaffold/SKILL.mdagent-skills/skills/atmos-schemas/SKILL.mdagent-skills/skills/atmos-secrets/SKILL.mdagent-skills/skills/atmos-settings/SKILL.mdagent-skills/skills/atmos-stacks/SKILL.mdagent-skills/skills/atmos-steps/SKILL.mdagent-skills/skills/atmos-stores/SKILL.mdagent-skills/skills/atmos-templates/SKILL.mdagent-skills/skills/atmos-terraform-state-migrations/SKILL.mdagent-skills/skills/atmos-terraform/SKILL.mdagent-skills/skills/atmos-toolchain/SKILL.mdagent-skills/skills/atmos-validation/SKILL.mdagent-skills/skills/atmos-vendoring/SKILL.mdagent-skills/skills/atmos-version/SKILL.mdagent-skills/skills/atmos-workflows/SKILL.mdagent-skills/skills/atmos-yaml-functions/SKILL.mdcmd/ai/skill/list.gocmd/ai/skill/list_test.gocmd/ai/skill/markdown/atmos_ai_skill_list_usage.mdpkg/ai/skills/marketplace/catalog.gowebsite/blog/2026-07-04-native-container-image-ci-summaries.mdxwebsite/blog/2026-08-05-agent-skills-directory.mdxwebsite/docs/ai/agent-skills.mdxwebsite/docs/ai/ai.mdxwebsite/docs/ai/skill-marketplace.mdxwebsite/docs/cli/commands/ai/skill.mdxwebsite/docs/cli/commands/ci/ci.mdxwebsite/docs/cli/configuration/ai/skills.mdxwebsite/docs/cli/configuration/ci/index.mdxwebsite/docs/projects/setup-editor/ai-assistants.mdxwebsite/docs/projects/setup-editor/index.mdxwebsite/docusaurus.config.jswebsite/plugins/file-browser/index.jswebsite/sidebars.jswebsite/src/components/AISection/index.jswebsite/src/components/FileBrowser/CopyMarkdownButton.tsxwebsite/src/components/FileBrowser/DirectoryPage.tsxwebsite/src/components/FileBrowser/FileTree.tsxwebsite/src/components/FileBrowser/IndexPage.tsxwebsite/src/components/FileBrowser/styles.module.csswebsite/src/components/FileBrowser/types.tswebsite/src/components/FileBrowser/utils.tswebsite/src/components/SkillCount/index.tsxwebsite/src/data/roadmap.js
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2881 +/- ##
=======================================
Coverage 82.76% 82.76%
=======================================
Files 1861 1861
Lines 180478 180497 +19
=======================================
+ Hits 149380 149396 +16
- Misses 23311 23313 +2
- Partials 7787 7788 +1
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
Fixes six issues flagged on PR #2881: - cmd/ai/skill/list.go: dispatch structured --format output (json/yaml/csv/tsv) before the "No skills installed" empty-message check, so --installed with zero results stays machine-readable instead of returning prose. - cmd/ai/skill/list.go: validate the Viper-resolved --format value (covers ATMOS_AI_SKILL_FORMAT env/config, not just the CLI flag) before it reaches the renderer. - pkg/ai/skills/marketplace/catalog_test.go: add the missing Category field to the AvailableSkill compile-time sentinel so a future field rename or drop is caught at compile time. - cmd/ai/skill/markdown/atmos_ai_skill_list_usage.md: fix MD040/MD014 lint on the new --format=json example (shell fence, no unshown $ prompt). - agent-skills/skills/atmos-templates/SKILL.md: add missing trailing period. - website/src/components/FileBrowser/styles.module.css: move the viewport max-height constraint from .sidebar onto .sidebarInner so a long file tree scrolls inside the sidebar instead of growing it (shared by /examples, /gists, and /ai/skills). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Two spots linked to /ai/skills using the raw path as the visible link
text ("browsable at /ai/skills") instead of natural language, which
read poorly next to the "Agent Skills Directory" phrasing used
everywhere else this page is linked. Match the established convention.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@cmd/ai/skill/list_test.go`:
- Around line 555-571: Strengthen the empty JSON assertion in the “with nothing
installed and format=json returns an empty array, not prose” test by requiring
the unmarshaled rows slice to be non-nil before asserting it is empty. This must
distinguish a JSON [] response from null while preserving the existing validity
and empty-content checks.
🪄 Autofix
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: fafbd64d-9e6e-477a-b1ee-8fdbe5b120a3
📒 Files selected for processing (6)
agent-skills/skills/atmos-templates/SKILL.mdcmd/ai/skill/list.gocmd/ai/skill/list_test.gocmd/ai/skill/markdown/atmos_ai_skill_list_usage.mdpkg/ai/skills/marketplace/catalog_test.gowebsite/src/components/FileBrowser/styles.module.css
🚧 Files skipped from review as they are similar to previous changes (4)
- cmd/ai/skill/markdown/atmos_ai_skill_list_usage.md
- agent-skills/skills/atmos-templates/SKILL.md
- website/src/components/FileBrowser/styles.module.css
- cmd/ai/skill/list.go
…ance category - file-browser plugin: new enablePerPageMarkdown option writes a raw <name>.md per item at build time (SKILL.md + nested reference files concatenated), extending the sitewide "append .md for raw Markdown" convention to skill pages, which docusaurus-plugin-llms-txt can't see since they're custom routes, not docs/blog content. - new titleAsCode option renders each item's title as a code-formatted `/name` on the index cards and sidebar header, signaling how a skill is invoked. Enabled for the skills instance only. - atmos-aws-compliance: recategorize from "security" to "aws" so it groups with the other AWS integrations instead of Auth/Secrets.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@website/plugins/file-browser/index.js`:
- Around line 730-736: Update addFile to generate a code fence longer than any
consecutive backtick run in node.content, while preserving the existing
Markdown/MDX handling and language annotation. Apply the identical
fence-selection logic in the corresponding utility implementation so copied and
generated Markdown remain equivalent.
🪄 Autofix
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 6fd452e0-1fcd-458e-a3c4-ae0bc8bc36b6
📒 Files selected for processing (8)
agent-skills/skills/atmos-aws-compliance/SKILL.mdwebsite/docusaurus.config.jswebsite/plugins/file-browser/index.jswebsite/src/components/FileBrowser/DirectoryPage.tsxwebsite/src/components/FileBrowser/FilePage.tsxwebsite/src/components/FileBrowser/FileTree.tsxwebsite/src/components/FileBrowser/IndexPage.tsxwebsite/src/components/FileBrowser/types.ts
🚧 Files skipped from review as they are similar to previous changes (4)
- website/src/components/FileBrowser/IndexPage.tsx
- website/src/components/FileBrowser/DirectoryPage.tsx
- website/docusaurus.config.js
- website/src/components/FileBrowser/types.ts
- IndexPage cards get a "Copy as Markdown" icon button in the corner, revealed on hover/focus, so a skill's full context (including nested reference files) can be copied straight from the grid without opening it. Gated by enableCopyMarkdown, so /examples and /gists are unaffected. CopyMarkdownButton gained an iconOnly mode. - Code-formatted titles (titleAsCode) now drop Infima's default inline-code background chip/border, keeping just the monospace font.
The icon-only copy button used a solid circular background with a border and drop shadow, inconsistent with the translucent rounded- rect pill language used everywhere else (.copyMarkdownButton, .githubButton, .filterButton). Same rgba background/hover, 6px radius, no shadow.
…ls docs Nest MCP under the Atmos AI category alongside a flat "Agent Skills" link (previously a top-level sibling behind a nested "Skills" category), and consolidate the redundant agent-skills.mdx and skill-marketplace.mdx pages into the atmos ai skill CLI command reference, updating all cross-references and adding redirects for the removed URLs. Also fixes a duplicate "scaffold" sidebar entry: scaffold.mdx now lives inside the scaffold/ folder as usage.mdx with a _category_.json, matching every other multi-subcommand command (auth, pro, validate, ai, toolchain). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CI's EditorConfig validation requires left-padding in multiples of 2; these list items under a numbered entry used 3 spaces. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
MDX wraps a JSX component's text in a <p> when it sits on its own line inside a block-level context, which overrides the button's centered white/bold styling with muted paragraph styling. Single-line usage (the pattern already used on working pages like auth/usage.mdx) keeps the label as plain inline text. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The intro note and workflow overview implied actions/checkout plus an atmos command was universally sufficient. Status checks, check runs, PR comments, OIDC, SBOM uploads, and github/artifacts planfile storage need additional permissions or the github-runtime action, already documented in the Permissions section below - cross-reference it instead of overclaiming. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Repeated clicks scheduled overlapping setTimeout calls to reset the "Copied!" state; an earlier click's timeout could fire and hide the confirmation before the latest click's 2s window elapsed. Track the timeout in a ref, clear it before scheduling a new one, and clean it up on unmount. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The post claimed atmos ai skill list was a hand-maintained doc that drifted out of sync with the real catalog. It never was -- the listing is generated at runtime from the embedded skill catalog. The actual gap was the missing full-content browse/search/copy/fetch experience, which is what the post now leads with. Also rewritten in short, active, single-idea sentences (ASD-STE100 style). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/test.yml:
- Around line 183-190: Increase the matrix job’s timeout-minutes above the
combined Linux step budgets plus setup overhead, or configure target-specific
job timeouts so no matrix target is capped at its exact step-budget total.
Update the adjacent timeout comment to accurately describe the affected Linux,
Windows, and macOS targets and the added headroom.
In `@website/blog/2026-08-05-agent-skills-directory.mdx`:
- Around line 45-47: Update the curl example in the skill-fetching documentation
to use a shell-safe URL, replacing the unquoted <skill-name> placeholder with
either a concrete skill slug or a quoted/interpolated shell variable while
preserving the fetchable .md endpoint.
In `@website/src/components/CommandBox/index.css`:
- Line 53: Update the font-family declaration in the CommandBox stylesheet to
remove quotes from the Monaco and Menlo font names, while preserving Courier New
and the monospace fallback.
In `@website/src/components/CommandBox/index.tsx`:
- Around line 12-16: Update handleCopy to catch rejected
navigator.clipboard.writeText calls and set an appropriate failure state so
users are informed when copying does not complete; keep the existing success
state and reset behavior unchanged.
🪄 Autofix
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 3b932e1a-3446-4103-bc34-7a3054440a12
📒 Files selected for processing (44)
.github/workflows/test.ymlcmd/ai/skill/list_test.gopkg/list/renderer/renderer.gowebsite/blog/2025-10-20-introducing-atmos-init-and-scaffold.mdwebsite/blog/2026-03-03-ai-agent-skills.mdxwebsite/blog/2026-05-19-mcp-for-ai-coding-assistants.mdxwebsite/blog/2026-06-30-offline-ai-skill-catalog.mdxwebsite/blog/2026-08-05-agent-skills-directory.mdxwebsite/docs/ai/agent-skills.mdxwebsite/docs/ai/ai.mdxwebsite/docs/ai/skill-marketplace.mdxwebsite/docs/ci/ci.mdxwebsite/docs/cli/commands/ai/skill.mdxwebsite/docs/cli/commands/helm/usage.mdxwebsite/docs/cli/commands/init.mdxwebsite/docs/cli/commands/kubernetes/kubernetes-apply.mdxwebsite/docs/cli/commands/kubernetes/kubernetes-delete.mdxwebsite/docs/cli/commands/kubernetes/kubernetes-deploy.mdxwebsite/docs/cli/commands/kubernetes/kubernetes-diff.mdxwebsite/docs/cli/commands/kubernetes/kubernetes-plan.mdxwebsite/docs/cli/commands/kubernetes/kubernetes-render.mdxwebsite/docs/cli/commands/kubernetes/kubernetes-validate.mdxwebsite/docs/cli/commands/kubernetes/usage.mdxwebsite/docs/cli/commands/scaffold/_category_.jsonwebsite/docs/cli/commands/scaffold/list.mdxwebsite/docs/cli/commands/scaffold/usage.mdxwebsite/docs/cli/commands/scaffold/validate.mdxwebsite/docs/cli/configuration/ai/skills.mdxwebsite/docs/learn/why-atmos.mdxwebsite/docs/projects/setup-editor/ai-assistants.mdxwebsite/docs/quick-start/introduction.mdxwebsite/docusaurus.config.jswebsite/plugins/file-browser/index.jswebsite/sidebars.jswebsite/src/components/CommandBox/index.csswebsite/src/components/CommandBox/index.tsxwebsite/src/components/FileBrowser/CopyMarkdownButton.tsxwebsite/src/components/FileBrowser/DirectoryPage.tsxwebsite/src/components/FileBrowser/IndexPage.tsxwebsite/src/components/FileBrowser/styles.module.csswebsite/src/components/FileBrowser/types.tswebsite/src/components/FileBrowser/utils.tswebsite/src/components/landing/Extensibility/index.jswebsite/src/data/roadmap.js
💤 Files with no reviewable changes (4)
- website/docs/ai/skill-marketplace.mdx
- website/docs/ai/agent-skills.mdx
- website/docs/cli/commands/scaffold/usage.mdx
- website/docs/ai/ai.mdx
🚧 Files skipped from review as they are similar to previous changes (9)
- website/src/data/roadmap.js
- website/docs/projects/setup-editor/ai-assistants.mdx
- website/src/components/FileBrowser/utils.ts
- website/sidebars.js
- website/src/components/FileBrowser/IndexPage.tsx
- website/src/components/FileBrowser/CopyMarkdownButton.tsx
- cmd/ai/skill/list_test.go
- website/plugins/file-browser/index.js
- website/src/components/FileBrowser/types.ts
timeout-minutes: 90 matched Linux's timed-step sum exactly (25m registry cache + 60m coverage tests + 5m coverage upload), leaving zero slack for checkout, Go/Atmos setup, and toolchain installs before the job gets force-cancelled. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The unquoted <skill-name> placeholder is parsed as shell redirection syntax, so a reader who copies the command as written fails before curl runs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Stylelint's font-family-name-quotes rule rejects quotes on single- word font names like Monaco and Menlo; Courier New keeps its quotes since it contains a space. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
navigator.clipboard.writeText can reject when the browser denies clipboard access, and the rejection was left unhandled. Catch it and surface a "Copy failed" state instead of letting the click silently do nothing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@website/src/components/CommandBox/index.tsx`:
- Around line 11-21: Update handleCopy so a successful copy clears failed before
setting copied, and a failed copy clears copied before setting failed, keeping
result states mutually exclusive. Preserve both 2-second reset timers and add or
verify regression coverage for rejection, failure-state reset, and existing
success behavior.
🪄 Autofix
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 9198c245-ad2b-407d-8386-0042989906c9
📒 Files selected for processing (7)
.github/workflows/test.ymlwebsite/blog/2026-08-05-agent-skills-directory.mdxwebsite/docs/cli/commands/kubernetes/kubernetes-deploy.mdxwebsite/docs/cli/commands/kubernetes/kubernetes-validate.mdxwebsite/src/components/CommandBox/index.csswebsite/src/components/CommandBox/index.tsxwebsite/src/data/roadmap.js
🚧 Files skipped from review as they are similar to previous changes (5)
- website/docs/cli/commands/kubernetes/kubernetes-deploy.mdx
- website/docs/cli/commands/kubernetes/kubernetes-validate.mdx
- website/blog/2026-08-05-agent-skills-directory.mdx
- website/src/data/roadmap.js
- website/src/components/CommandBox/index.css
Independent copied/failed booleans let a fast retry leave the button showing a checkmark with a "Copy failed" tooltip (or vice versa) until the stale timeout caught up. Replace them with a single CopyStatus value so the two states can't coexist, and extract the clipboard-write outcome into a pure performCopy() function (following the CastPlayer convention: sibling .mjs logic module + node:test .test.mjs) so the success/failure/reset behavior has regression coverage. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…r' into osterman/skills-directory-browser
Bump pnpm overrides to patched versions, all within the major-version ignore policy in .github/dependabot.yml: - js-yaml 3.15.0 -> 3.15.1, 4.3.0 -> 4.3.1: quadratic CPU consumption in !!omap resolution (GHSA-5p4m-2wfm-xmqj / GHSA advisories, alerts #269, #268, high severity) - mermaid 11.16.0 -> 11.16.1: radar-diagram DoS, prototype pollution (config APIs and Architecture diagrams), CSS injection, XY-chart infinite-loop DoS (alerts #267, #266, #265, #264, #263, medium/low) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
what
/ai/skills, replacing the hand-maintained (and drifted) skill table on the Agent Skills doc page.file-browserDocusaurus plugin with category grouping, a search box, configurable card icon/CTA label, and a "Copy as Markdown" button, reused for the new skills instance.SKILL.mdand every nested reference file into one clipboard-ready document, so its full context can be grabbed without installing it.atmos ai skill listgains a--formatflag (table/json/yaml/csv/tsv) and a Category column.SkillCountcomponent that renders the live, build-time skill count inline in prose (homepageAISection, docs), so counts can't drift out of date again.Atmos AI→Skillscategory with Agent Skills, Skill Marketplace, and a link to the new directory) and cleans up a duplicate "Native CI" sidebar/doc link.SKILL.mdfiles surfaced by the affected-file validator.why
references
/blog/agent-skills-directory/ai/skills,/ai/agent-skillsSummary by CodeRabbit
New Features
Bug Fixes
[]instead ofnull.Documentation
Style