Skip to content

feat: cross-platform support for Claude Code, Cursor, and Copilot (v0.3.0)#12

Merged
siracusa5 merged 19 commits intomainfrom
feat/cross-platform-support
Mar 13, 2026
Merged

feat: cross-platform support for Claude Code, Cursor, and Copilot (v0.3.0)#12
siracusa5 merged 19 commits intomainfrom
feat/cross-platform-support

Conversation

@siracusa5
Copy link
Collaborator

@siracusa5 siracusa5 commented Mar 13, 2026

Summary

  • New skill: /harness-compile — Compiles a single harness.yaml to native config files for Claude Code, Cursor, and GitHub Copilot. Handles instruction files (with section markers for safe re-compilation), MCP server configs, skill file deployment with frontmatter adaptation, and permissions. Supports --target, --dry-run, and --clean flags.
  • New skill: /harness-sync — Bidirectional sync across platforms. Inventories skills, instruction blocks, and MCP configs; detects divergence; supports push (Claude Code or Cursor → other platforms) or pull (native changes → harness.yaml → recompile). Never silently overwrites — all conflicts shown side-by-side.
  • Updated /harness-import — Now detects Cursor/Copilot at import time and optionally copies skills, writes MCP configs, and compiles instructions to those platforms. New Steps 5.5 and 9.5.
  • Updated /harness-export — Now scans .cursor/skills/, .github/skills/, and .agents/skills/ in addition to ~/.claude/skills/. Steps 2.5 and 2.6 detect harness instruction content and MCP configs from cross-platform files for reverse-engineering into harness.yaml.
  • Version bump: harness-share 0.2.00.3.0 (both plugin.json and marketplace.json)
  • Spec update: harness-protocol/extensions/compiler-targets.md — added Skills section documenting the agentskills.io compilation mapping and frontmatter adaptation rules
  • Marketplace app — Full Next.js marketplace with Supabase backend, dense list-row UI, /plugins and /profiles routes, sort controls, two-column detail pages with sticky sidebar, search API, install tracking, GitHub webhook sync, and shared types package
  • Website docs — Reorganized plugin docs into category subdirectories (code-quality, data-engineering, devops, documentation, productivity, research-knowledge)

Changes

  • Added marketplace/ Next.js 15 app with Supabase integration
  • Added packages/shared/ for cross-package TypeScript types
  • Added pnpm workspace configuration (root package.json, pnpm-workspace.yaml)
  • Added profiles/ directory with YAML definitions (data-engineer, full-stack-engineer, research-knowledge)
  • Renamed /components routes to /plugins across the marketplace app
  • Replaced card grid with dense list rows on browse pages (plugins + profiles)
  • Added two-column detail layout with sticky sidebar (author card, GitHub link, install command, related items)
  • Added sort controls (Installs | Recent) on plugin browse page
  • Updated all plugin manifests with cross-platform metadata
  • Reorganized website docs into category-based subdirectories

Test Plan

  • pnpm --filter harness-kit-marketplace build succeeds
  • /plugins route loads, /components 404s
  • No remaining /components references in app code
  • /harness-compile with --target cursor on a project with .cursor/ — only Cursor files written
  • /harness-compile --dry-run — no files written, preview shown
  • /harness-sync on a project where one platform has an extra skill — divergence detected
  • CI checks pass

Notes

  • Marketplace requires NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY env vars for data; gracefully renders empty states without them
  • dangerouslySetInnerHTML used for markdown rendering is trusted content from our own Supabase database only
  • packages/shared/dist/ excluded via .gitignore — consumers build from source via workspace

🤖 Generated with Claude Code

siracusa5 and others added 19 commits March 13, 2026 18:12
Adds /harness-compile skill to the harness-share plugin. Compiles a
harness.yaml into native config files for Claude Code, Cursor, and
GitHub Copilot — instruction files, MCP server configs, skill files,
and permissions. Supports --target, --dry-run, and --clean flags.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add --verbose flag to Step 1 flag list
- Make MCP collision warning use dynamic target file path

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Inventories skills, MCP configs, and harness instruction blocks across
Claude Code, Cursor, and Copilot; reports divergence; and executes push
or pull sync with explicit conflict resolution. Push path delegates to
harness-compile logic; pull path updates harness.yaml then recompiles.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
After generating Claude Code install commands, harness-import now
detects Cursor and Copilot in the project and offers to copy skill
files, write platform-specific MCP configs, and compile instructions
to each tool's native format (Step 5.5, extended Step 6, extended
Step 8, Step 9.5 report).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Extend Step 1 to scan Cursor, Copilot, and agentskills.io skill directories
in addition to ~/.claude/skills/, with deduplication and combined display.

Add Step 2.5 to detect harness-generated instruction blocks in cross-platform
files (.cursor/rules/harness.mdc, .github/copilot-instructions.md) and offer
to include them in the export.

Add Step 2.6 to detect MCP servers from .mcp.json, .cursor/mcp.json, and
.vscode/mcp.json, merge with deduplication, and offer to include them.

Add harness-compile and harness-sync to the known-plugins table in Step 3.

Update Step 4 rules to reference content collected in Steps 2.5 and 2.6.

Update Step 5 to mention /harness-compile as the next step after export.

Update README to reflect cross-platform sourcing, v1 output format, and
/harness-compile next step.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nventory

- Fix broken plugins/stage/ link → plugins/capture-session/
- Fix contradictory "Requires Claude Code" header → lists all three platforms
- Add --verbose to harness-compile README flags table
- Add .agents/skills/ (shared) to harness-sync skill inventory table
- Clarify harness-compile reference in harness-sync related skills

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- harness-import README: note MCP configs are written to Cursor/Copilot
- harness-sync README: clarify pull modifies harness.yaml source of truth

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix dead link in README.md (cross-harness setup guide) → harnessprotocol.io
- Correct compiler-targets.md: platform-specific dirs are default, .agents/skills/ is opt-in
- Add disable-model-invocation: true to harness-import (consistent with other 3 skills)
- Fix harness-import README cross-platform report to show slot names per SKILL.md Step 9.5

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…iles

Scaffold the full marketplace Next.js app with Supabase backend:
- Dense list-row layout for plugins and profiles (not card grid)
- Two-column plugin detail page with sticky sidebar
- Sort controls (installs/recent), sidebar filters, inline metadata
- Routes: /plugins, /plugins/[slug], /profiles, /profiles/[slug]
- API routes: search, install tracking, registration, GitHub sync
- Shared types package (@harness-kit/shared)
- pnpm workspace with marketplace + shared packages
- Profile YAML definitions and website doc reorganization

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… naming

- Apply category and tag filters to plugin browse query (were parsed but ignored)
- Sanitize PostgREST filter metacharacters in search API .or() fallback
- Add atomic increment_install_count RPC to avoid read-then-write race
- Use constant-time comparison for webhook signature verification
- Reject webhook requests when GITHUB_WEBHOOK_SECRET is unset
- Rename remaining "components" → "plugins" in metadata and profile detail

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…plugin docs

All 10 plugin docs had marketplace links pointing to the old /components/
route. Updated to /plugins/ to match the marketplace route rename.
Also added missing language tag on overview install code block.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add missing harness-validate SKILL.md embed to harness-share doc
- Add Profiles section to plugin overview with role-based profile table
- Clarify secrets management links (schema vs setup guide)
- Explain empty matcher field in capture-session Stop hook example

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add API key auth to /api/register endpoint (prevents spam registration)
- Sanitize tsquery operators and ilike wildcards in search API
- Add disable-model-invocation to harness-validate SKILL.md frontmatter
- Create missing harness-validate README.md
- Fix harness-share.mdx section ordering (group Runtime Config, then Plugin Docs)
- Replace siracusa5 org references with harnessprotocol in validate and import skills

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@siracusa5 siracusa5 force-pushed the feat/cross-platform-support branch from 41ea053 to 43ec1d7 Compare March 13, 2026 22:16
@siracusa5 siracusa5 merged commit da67736 into main Mar 13, 2026
2 checks passed
@siracusa5 siracusa5 deleted the feat/cross-platform-support branch March 13, 2026 22:19
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