maintain-cross-platform
Use when preparing releases, validating cross-platform compatibility, or updating installation infrastructure. Meta-skill for maintaining awesome-slash's 3-platform architecture.
Install
mkdir -p .claude/skills/maintain-cross-platform && curl -L -o skill.zip "https://mcp.directory/api/skills/download/3992" && unzip -o skill.zip -d .claude/skills/maintain-cross-platform && rm skill.zipInstalls to .claude/skills/maintain-cross-platform
About this skill
Maintain Cross-Platform Architecture
Purpose: Comprehensive knowledge of AgentSys's cross-platform infrastructure for release preparation, validation, and maintenance.
Scope: LOCAL skill for this repository only. Contains specific file locations, transformation rules, and automation patterns for maintaining Claude Code + OpenCode + Codex CLI compatibility.
Critical Rules
- 3 platforms MUST work - Claude Code, OpenCode, Codex CLI. No exceptions.
- Validation before every push - Pre-push hook runs 6 validators automatically.
- All version fields must align - 11 files total (package.json + 10 plugin.json files).
- Documentation must be accurate - Counts, paths, and platform references validated by CI.
- Update this skill - If you find misalignments or automation opportunities, update this file.
Platform Differences (The Complete Matrix)
Configuration
| Aspect | Claude Code | OpenCode | Codex CLI |
|---|---|---|---|
| Config format | JSON | JSON/JSONC | TOML |
| Config location | ~/.claude/settings.json | ~/.config/opencode/opencode.json | ~/.codex/config.toml |
| State directory | .claude/ | .opencode/ | .codex/ |
| Command prefix | / | / | $ |
| Project instructions | CLAUDE.md | AGENTS.md (reads CLAUDE.md) | AGENTS.md |
Component Locations
| Component | Claude Code | OpenCode | Codex CLI |
|---|---|---|---|
| Commands | Plugin commands/ | ~/.config/opencode/commands/ | N/A (use skills) |
| Agents | Plugin agents/ | ~/.config/opencode/agents/ | N/A (use MCP) |
| Skills | Plugin skills/ | .opencode/skills/ (singular) | ~/.codex/skills/ |
| Hooks | Plugin hooks/ | Plugin hooks/ | Plugin hooks/ |
Install Locations (This Repo)
| Platform | Package Copy | Commands | Agents | Skills | Config |
|---|---|---|---|---|---|
| Claude Code | Via marketplace | Plugin bundled | Plugin bundled | Plugin bundled | N/A |
| OpenCode | ~/.agentsys/ | ~/.config/opencode/commands/ | ~/.config/opencode/agents/ (29 files) | N/A | ~/.config/opencode/opencode.json |
| Codex CLI | ~/.agentsys/ | N/A | N/A | ~/.codex/skills/ (9 directories) | ~/.codex/config.toml |
Frontmatter Differences
Command Frontmatter:
# Claude Code
---
description: Task description
argument-hint: "[args]"
allowed-tools: Bash(git:*), Read, Task
---
# OpenCode (transformed by installer)
---
description: Task description
agent: general
# model field REMOVED (uses user's default model)
---
# Codex (skills use different format)
---
name: skill-name
description: "Use when user asks to \"trigger\". Does X."
---
Agent Frontmatter:
# Claude Code
---
name: agent-name
description: Agent description
tools: Bash(git:*), Read, Edit, Task
model: sonnet
---
# OpenCode (transformed by installer)
---
name: agent-name
description: Agent description
mode: subagent
# model field REMOVED (OpenCode doesn't support per-agent models yet)
permission:
read: allow
edit: allow
bash: ask
task: allow
---
Transformation Rules (bin/cli.js handles this):
| Claude Code | OpenCode |
|---|---|
tools: Bash(git:*) | permission: { bash: "allow" } |
tools: Read | permission: { read: "allow" } |
tools: Edit, Write | permission: { edit: "allow" } |
tools: Task | permission: { task: "allow" } |
model: sonnet/opus/haiku | REMOVED (OpenCode uses user default) |
CRITICAL: The --strip-models flag in bin/cli.js removes model specifications for OpenCode users who don't have access to all three model tiers.
File Locations (This Repository)
Installation Infrastructure
| File | Purpose |
|---|---|
bin/cli.js | Main installer (811 lines) - handles all 3 platforms |
scripts/setup-hooks.js | Git hooks installer (pre-commit, pre-push) |
adapters/opencode-plugin/ | Native OpenCode TypeScript plugin |
adapters/opencode/ | OpenCode install script (legacy) |
adapters/codex/ | Codex install script (legacy) |
mcp-server/index.js | Cross-platform MCP server |
Validation Scripts (All in CI + Pre-Push)
| Script | What It Validates | Exit 1 If |
|---|---|---|
scripts/validate-plugins.js | Plugin structure, plugin.json validity | Invalid plugin.json |
scripts/validate-cross-platform.js | 3-platform compatibility | Platform-specific code |
scripts/validate-repo-consistency.js | Repo integrity | Inconsistencies |
scripts/check-hardcoded-paths.js | No hardcoded .claude/ paths | Hardcoded paths found |
scripts/validate-counts.js | Doc accuracy (agents, plugins, skills, versions) | Count mismatches |
scripts/validate-cross-platform-docs.js | Platform docs consistency | Doc conflicts |
Transformation Mappings (bin/cli.js)
Search markers in bin/cli.js:
PLUGINS_ARRAY- Line 138 - Plugins to install for Claude CodeOPENCODE_COMMAND_MAPPINGS- Line 242 - Commands to copy for OpenCodeCODEX_SKILL_MAPPINGS- Line ~280 - Skills to create for Codex
OPENCODE_COMMAND_MAPPINGS format:
['dest-file.md', 'plugin-name', 'source-file.md']
CODEX_SKILL_MAPPINGS format:
['skill-name', 'plugin-name', 'source-file.md', 'Trigger description with "phrases"']
Version Fields (11 Files Total)
All must have SAME version for releases:
package.json- Line 3.claude-plugin/plugin.json- Root plugin.claude-plugin/marketplace.json- 9 plugin entriesmcp-server/index.js- Search:MCP_SERVER_VERSION5-13.plugins/*/. claude-plugin/plugin.json- All 9 plugins
Quick check:
grep -r '"version"' package.json plugins/*/.claude-plugin/plugin.json .claude-plugin/plugin.json
Release Process (RC and Production)
RC Release (3.X.0-rc.N)
Step 1: Update Versions
# Bump to RC version in ALL 11 files
NEW_VERSION="3.6.0-rc.1"
# package.json
npm version $NEW_VERSION --no-git-tag-version
# All plugin.json files (9 plugins + root)
find . -name "plugin.json" -path "*/.claude-plugin/*" -exec sed -i '' "s/\"version\": \".*\"/\"version\": \"$NEW_VERSION\"/" {} \;
# mcp-server/index.js
sed -i '' "s/version: '.*'/version: '$NEW_VERSION'/" mcp-server/index.js
Step 2: Update CHANGELOG.md
## [3.6.0-rc.1] - 2026-01-30
### Added
- Feature description
### Changed
- Change description
### Fixed
- Bug fix description
Step 3: Validate
npm run validate # All 6 validators
npm test # All tests
npm pack --dry-run # Package builds
Step 4: Commit and Tag
git add -A
git commit -m "chore: release v3.6.0-rc.1"
git tag v3.6.0-rc.1
git push origin main --tags
Step 5: Verify
# Wait for GitHub Actions
npm view agentsys@rc version # Should show 3.6.0-rc.1
Production Release (3.X.0)
Same as RC but:
- Remove
-rc.Nsuffix from version - Tag with
v3.X.0(no suffix) - npm publishes to
latesttag automatically
What Changes Per Release
Always Update
- Version fields (11 files) - See "Version Fields" section above
- CHANGELOG.md - Add new entry at top
- Run validation -
npm run validate(includes all 6 validators) - Run tests -
npm test(1400+ tests) - Package build -
npm pack --dry-run
If New Command Added
- Convention-based discovery - Plugins auto-discovered from
plugins/*/with.claude-plugin/plugin.json - Commands auto-discovered - From
plugins/*/commands/*.mdfiles - Codex trigger phrases - Use
codex-descriptionfrontmatter in command files - docs/INSTALLATION.md - Add
/plugin install <name>@agentsysline - .claude-plugin/marketplace.json - Add plugin entry to
pluginsarray - README.md - Add to commands table
- Validation will catch - If counts don't match (plugins count)
If New Agent Added
- No changes needed - Installer auto-copies agents to OpenCode
~/.config/opencode/agents/ - Codex uses MCP - Agents not directly supported, use MCP tools instead
- Validation will catch - If file-based agent count changes
If New Skill Added
- Codex requires trigger phrases - Description must include "Use when user asks to..."
- Validation will catch - If skill count doesn't match
If New MCP Tool Added
- mcp-server/index.js - Add to TOOLS array and toolHandlers
- .claude-plugin/marketplace.json - Add to
mcpServer.toolsarray - bin/cli.js - Update MCP tools console output (OpenCode + Codex)
- README.md - Add to MCP tools table if user-facing
If Library Module Changed
- lib/{module}/ - Make changes
- lib/index.js - Export if new module
- Run sync -
./scripts/sync-lib.sh(oragentsys-dev sync-lib) copies lib/ to all 9 plugins - Commit both - Source in lib/ AND copies in plugins/*/lib/
Platform-Specific Transformations (What bin/cli.js Does)
OpenCode Transformations
1. Remove Model Specifications (if --strip-models)
// Original (Claude Code):
model: sonnet
// Transformed (OpenCode):
(field removed entirely)
Why: Not all OpenCode users have access to all three model tiers. Uses user's default model instead.
2. Transform Tools to Permissions
// Original:
tools: Bash(git:*), Read, Edit, Task
// Transformed:
permission:
bash: allow
read: allow
edit: allow
task: allow
3. Replace Environment Variables
// Original:
${CLAUDE_PLUGIN_ROOT}
// Transformed:
${PLUGIN_ROOT}
4. Normalize Windows Paths in require()
// Original:
require('${CLAUDE_PLUGIN_ROOT}/lib/module.js')
// Transformed:
require('${PLUGIN_ROOT}'.replace(/\\/g, '/') + '/lib/module.js')
Why: Windows backslashes (C:\Users\...) break JavaSc
Content truncated.
More by avifenesh
View all skills by avifenesh →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversVizro creates and validates data-visualization dashboards from natural language, auto-generating chart code and interact
Boost your productivity by managing Azure DevOps projects, pipelines, and repos in VS Code. Streamline dev workflows wit
Rtfmbro is an MCP server for config management tools—get real-time, version-specific docs from GitHub for Python, Node.j
Sanity CMS offers powerful content management software for creating, querying, and managing documents, datasets, schemas
RSS Feed Parser is a powerful rss feed generator and rss link generator with RSSHub integration, perfect for creating cu
Analyze and decompile Java class files online with our Java decompiler software, featuring JD decompiler and JD GUI inte
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.