Skip to content

feat: support claude cowork#2369

Closed
muratkeremozcan wants to merge 3 commits intomainfrom
feat/support-claude-cowork
Closed

feat: support claude cowork#2369
muratkeremozcan wants to merge 3 commits intomainfrom
feat/support-claude-cowork

Conversation

@muratkeremozcan
Copy link
Copy Markdown
Contributor

What

Adds Claude Cowork support via the Claude Code plugin marketplace and a CI guardrail that keeps the marketplace manifest in sync with the canonical skill sources.

Why

The regular npx bmad-method install flow writes to the project's .claude/skills/, which Cowork's sandboxed VM mounts read-only — making skills invisible to Cowork sessions. The plugin marketplace is Cowork's first-class injection
point, and this repo already ships .claude-plugin/marketplace.json. This PR wires up the missing pieces: a validator to prevent silent drift, CI enforcement, and documentation.

(BMAD-METHOD only: also adds 3 skills that existed in src/ but were missing from marketplace.json: bmad-customize, bmad-prfaq, bmad-checkpoint-preview.)

How

  • tools/validate-marketplace.js — walks src/**/SKILL.md, cross-checks every skill is declared in a marketplace.json plugin (and every declared path exists on disk). Handles Windows path normalization, segment-aware plugin
    suggestions, --strict exit-code mode for CI.
  • .github/workflows/quality.yaml — adds Validate marketplace manifest step to the validate job so drift is caught at PR time.
  • README / docs — Cowork install instructions (install, update, uninstall, why it differs from npx, known RPM persistence bug with open issue links).

Testing

Validator passes locally (42 declared / 42 on disk for BMAD, 10/10 for TEA) and negative-tested: dropping a declared skill exits 1 with a plugin suggestion; a brand-new module produces no misleading suggestion. Full docs build
succeeds (npm run docs:build). Cowork live test pending before merge — verify slash commands appear and persist across session restarts.

@augmentcode
Copy link
Copy Markdown

augmentcode Bot commented May 8, 2026

🤖 Augment PR Summary

Summary: Adds first-class Claude Cowork support by distributing skills via the Claude Code plugin marketplace and enforcing manifest/source sync in CI.

Changes:

  • Updated .claude-plugin/marketplace.json to include additional skills so Cowork sessions see the full catalog.
  • Added tools/validate-marketplace.js to detect drift between on-disk src/**/SKILL.md skills and marketplace declarations (missing/orphan/duplicate paths).
  • Introduced validate:marketplace and wired it into the quality script and the GitHub Actions validate job.
  • Added Cowork-specific installation documentation and linked it from the README and Getting Started tutorial.

Technical Notes: The validator normalizes paths for Windows, supports human/JSON output, and has a strict mode intended for CI.

🤖 Was this summary useful? React with 👍 or 👎

Copy link
Copy Markdown

@augmentcode augmentcode Bot left a comment

Choose a reason for hiding this comment

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

Review completed. 2 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Comment thread docs/tutorials/getting-started.md Outdated
- **AI-powered IDE** — Claude Code, Cursor, or similar
- **A project idea** — Even a simple one works for learning
:::
:::
Copy link
Copy Markdown

@augmentcode augmentcode Bot May 8, 2026

Choose a reason for hiding this comment

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

The closing ::: for this admonition is indented ( :::), which may be parsed as part of the preceding list item instead of closing the container, potentially breaking the rest of the page rendering.

Other locations where this applies: docs/tutorials/getting-started.md:288.

Severity: medium

Other Locations
  • docs/tutorials/getting-started.md:288

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

const JSON_OUTPUT = args.has('--json');

function findSkillPaths(dir, acc = []) {
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
Copy link
Copy Markdown

@augmentcode augmentcode Bot May 8, 2026

Choose a reason for hiding this comment

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

If dir (or src/) is missing/unreadable, fs.readdirSync will throw and the script will exit with an unhandled stack trace rather than a controlled fatal result; consider handling that so CI output stays consistent. (Guideline: script_error_handling)

Severity: medium

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 8, 2026

Review Change Stack

📝 Walkthrough

Walkthrough

Adds marketplace skill validation tooling that detects synchronization drift between plugin skill declarations and on-disk SKILL.md files, integrates validation into CI, registers three new skills in the marketplace configuration, and provides comprehensive documentation for Claude Cowork marketplace-based installation.

Changes

Marketplace Skill Validation and Cowork Installation

Layer / File(s) Summary
Validation Tool
tools/validate-marketplace.js
New Node.js validator discovers on-disk SKILL.md files under src/, parses plugin declarations from marketplace.json, detects missing/orphaned/duplicate skill entries, and outputs human-readable or JSON drift reports with optional strict-mode exit codes.
Marketplace Entries
.claude-plugin/marketplace.json
Three new skills registered: ./src/core-skills/bmad-customize in bmad-pro-skills; ./src/bmm-skills/1-analysis/bmad-prfaq and ./src/bmm-skills/4-implementation/bmad-checkpoint-preview in bmad-method-lifecycle.
CI Integration
.github/workflows/quality.yaml, package.json
Quality workflow adds marketplace validation step; quality script runs validate:marketplace --strict alongside existing validators.
User Documentation
docs/how-to/install-claude-cowork.md, docs/tutorials/getting-started.md, README.md
New Cowork installation guide with marketplace registration, install, update, uninstall, and troubleshooting; getting-started and README updated with Cowork-specific notes explaining npx installer limitation and marketplace alternative.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • bmad-code-org/BMAD-METHOD#2136: Directly modifies the same .claude-plugin/marketplace.json file; adds three additional skill entries to existing plugin catalogs in the same manifest.
  • bmad-code-org/BMAD-METHOD#2223: Also modifies .claude-plugin/marketplace.json and introduces installer/UI logic that reads marketplace.json for module versions.
  • bmad-code-org/BMAD-METHOD#2137: Consolidated plugin metadata into .claude-plugin/marketplace.json; related to same marketplace configuration file and plugin structure.
🚥 Pre-merge checks | ✅ 4 | ❌ 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 (4 passed)
Check name Status Explanation
Title check ✅ Passed The PR title 'feat: support claude cowork' clearly and concisely describes the main objective of the changeset, which is to add Claude Cowork support.
Description check ✅ Passed The PR description is comprehensive, well-structured, and directly addresses what changes are made, why they are needed, and how they work, all in relation to adding Claude Cowork support.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/support-claude-cowork

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.

🧹 Nitpick comments (1)
tools/validate-marketplace.js (1)

78-98: ⚡ Quick win

Add error handling for SRC_DIR to match the pattern used for MARKETPLACE_PATH.

MARKETPLACE_PATH absence is caught and returned as a structured { ok: false, fatal: '...' } result, but findSkillPaths(SRC_DIR) on line 98 is unguarded — a missing or unreadable src/ directory throws an unhandled exception instead of producing the same clean output.

As per coding guidelines, tools/** scripts require proper error handling.

♻️ Proposed fix — wrap the scan call in a try/catch
-  const onDisk = new Set(findSkillPaths(SRC_DIR));
+  let onDisk;
+  try {
+    onDisk = new Set(findSkillPaths(SRC_DIR));
+  } catch (error) {
+    return { ok: false, fatal: `Failed to scan src/ directory: ${error.message}` };
+  }
🤖 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 `@tools/validate-marketplace.js` around lines 78 - 98, findSkillPaths(SRC_DIR)
is called without error handling so a missing/unreadable SRC_DIR will throw
instead of returning the same structured error as MARKETPLACE_PATH; wrap the
call to findSkillPaths(SRC_DIR) in a try/catch, catch any error and return { ok:
false, fatal: `src directory error: ${error.message}` } (or similar) so onDisk
(the Set created from findSkillPaths) is only initialized on success and
failures mirror the MARKETPLACE_PATH pattern; reference the SRC_DIR constant,
the findSkillPaths function, and the onDisk variable when applying the change.
🤖 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.

Nitpick comments:
In `@tools/validate-marketplace.js`:
- Around line 78-98: findSkillPaths(SRC_DIR) is called without error handling so
a missing/unreadable SRC_DIR will throw instead of returning the same structured
error as MARKETPLACE_PATH; wrap the call to findSkillPaths(SRC_DIR) in a
try/catch, catch any error and return { ok: false, fatal: `src directory error:
${error.message}` } (or similar) so onDisk (the Set created from findSkillPaths)
is only initialized on success and failures mirror the MARKETPLACE_PATH pattern;
reference the SRC_DIR constant, the findSkillPaths function, and the onDisk
variable when applying the change.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: f22f6d1e-0746-4d00-9b8b-fff3bb299f64

📥 Commits

Reviewing files that changed from the base of the PR and between e36f219 and 0227b55.

📒 Files selected for processing (7)
  • .claude-plugin/marketplace.json
  • .github/workflows/quality.yaml
  • README.md
  • docs/how-to/install-claude-cowork.md
  • docs/tutorials/getting-started.md
  • package.json
  • tools/validate-marketplace.js

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