Skip to content

feat(opencode): add first-class OpenCode integration#81

Open
JasonOA888 wants to merge 1 commit intohuggingface:mainfrom
JasonOA888:feat/issue-74-opencode-integration
Open

feat(opencode): add first-class OpenCode integration#81
JasonOA888 wants to merge 1 commit intohuggingface:mainfrom
JasonOA888:feat/issue-74-opencode-integration

Conversation

@JasonOA888
Copy link

Implements #74

Summary

This PR adds comprehensive OpenCode integration following the same architecture as Claude/Cursor/Gemini integrations. All changes are production-ready with complete documentation and CI support.


🏗️ Architecture

Design Philosophy

  • Consistency: Follows existing generation pattern (Claude/Cursor/Gemini)
  • Automation: Auto-generated from existing metadata sources
  • Validation: Built-in --check mode for CI pipelines
  • Documentation: Complete integration guide

Data Flow

.claude-plugin/plugin.json  ──┐
gemini-extension.json      ──┼──> scripts/generate_opencode_config.py ──> opencode.json
skills/*/SKILL.md          ──┘

📦 Changes

New Files (336 lines)

File Purpose
scripts/generate_opencode_config.py Auto-generate opencode.json (205 lines)
opencode.json Generated OpenCode configuration (131 lines)
docs/opencode.md Integration documentation

Modified Files

File Changes
scripts/publish.sh Add opencode.json to generation pipeline
README.md Add OpenCode setup section

📋 opencode.json Structure

{
  "name": "huggingface-skills",
  "description": "Agent Skills for AI/ML tasks...",
  "version": "1.0.0",
  "context": {
    "agents": "agents/AGENTS.md",
    "skills": "skills/"
  },
  "mcpServers": {
    "huggingface-skills": {
      "url": "https://huggingface.co/mcp?login"
    }
  },
  "skills": ["gradio", "hf-cli", ...],
  "skillDetails": [
    {"name": "gradio", "path": "skills/huggingface-gradio", "description": "..."},
    ...
  ],
  "metadata": {
    "author": {"name": "Hugging Face"},
    "homepage": "https://github.com/huggingface/skills",
    "repository": "https://github.com/huggingface/skills",
    "license": "Apache-2.0",
    "keywords": ["huggingface", "machine-learning", ...]
  }
}

✅ Key Features

1. Auto-Discovery

  • Automatically discovers all skills from skills/*/SKILL.md
  • Parses frontmatter for metadata (name, description)
  • Falls back to directory name if no frontmatter

2. MCP Integration

  • Reuses MCP configuration from gemini-extension.json
  • Consistent authentication via Hugging Face Hub

3. Metadata Reuse

  • Sources base metadata from .claude-plugin/plugin.json
  • No duplication, single source of truth

4. CI Support

# Validate generated artifacts
./scripts/publish.sh --check

5. Complete Documentation

  • Quick start guide
  • Architecture diagram
  • Contributing instructions
  • Related integrations

🧪 Testing

Manual Testing

# Generate config
python3 scripts/generate_opencode_config.py

# Verify output
cat opencode.json

# Validate all artifacts
./scripts/publish.sh

CI Integration

# .github/workflows/ci.yml
- name: Check generated artifacts
  run: ./scripts/publish.sh --check

📊 Impact

Metric Before After
Agent integrations 3 (Claude, Cursor, Gemini) 4 (+OpenCode)
Generated artifacts 4 5
Documentation 3 agents 4 agents

🔗 Related


📝 Reviewer Notes

Design Decisions

  1. Why skillDetails array?

    • Provides full metadata (path + description) for advanced use cases
    • Simple skills array for basic discovery
    • Both available in one config file
  2. Why reuse .claude-plugin/plugin.json?

    • Single source of truth for metadata
    • Prevents drift between agent integrations
    • Follows established pattern
  3. Why separate generate script?

    • Matches architecture of generate_cursor_plugin.py
    • Easier to maintain and test
    • Clear separation of concerns

Future Improvements

  • Add OpenCode-specific skill triggers
  • Support custom MCP server configurations
  • Add usage analytics (optional)

This PR provides production-ready OpenCode integration with complete documentation, testing, and CI support.

Implements huggingface#74

## Changes

### New Files
- `scripts/generate_opencode_config.py`: Auto-generate opencode.json
- `docs/opencode.md`: Complete OpenCode integration documentation
- `opencode.json`: Generated OpenCode configuration

### Modified Files
- `scripts/publish.sh`: Add opencode.json to generation pipeline
- `README.md`: Add OpenCode setup section

## Architecture

The OpenCode integration follows the same pattern as Claude/Cursor/Gemini:
- Auto-discovers skills from skills/*/SKILL.md
- Reuses MCP config from gemini-extension.json
- Reuses metadata from .claude-plugin/plugin.json
- Supports --check mode for CI validation

## opencode.json Structure

```json
{
  "name": "huggingface-skills",
  "context": {
    "agents": "agents/AGENTS.md",
    "skills": "skills/"
  },
  "mcpServers": {...},
  "skills": ["gradio", "hf-cli", ...],
  "skillDetails": [...],
  "metadata": {...}
}
```

## Benefits

- ✅ First-class OpenCode support (consistent with other agents)
- ✅ Auto-generated, no manual drift
- ✅ CI validation via --check mode
- ✅ Complete documentation

## Testing

```bash
# Generate config
python3 scripts/generate_opencode_config.py

# Validate in CI
./scripts/publish.sh --check
```
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