Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 176 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
{
"name": "duyet-claude-plugins",
"interface": {
"displayName": "Duyet Claude and Codex Plugins"
},
Comment on lines +2 to +5
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The marketplace name and display name still refer to "Claude Plugins", but this file is specifically for the Codex marketplace (as documented in CLAUDE.md). It should be updated to reflect Codex to avoid confusion for users on that platform.

Suggested change
"name": "duyet-claude-plugins",
"interface": {
"displayName": "Duyet Claude Plugins"
},
"name": "duyet-codex-plugins",
"interface": {
"displayName": "Duyet Codex Plugins"
},

"plugins": [
{
"name": "team-agents",
"source": {
"source": "local",
"path": "./team-agents"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Agents"
},
{
"name": "commit",
"source": {
"source": "local",
"path": "./commit"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Git"
},
{
"name": "frontend-design",
"source": {
"source": "local",
"path": "./frontend-design"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Design"
},
{
"name": "interview",
"source": {
"source": "local",
"path": "./interview"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
},
{
"name": "statusline",
"source": {
"source": "local",
"path": "./statusline"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "UI"
},
{
"name": "orchestration",
"source": {
"source": "local",
"path": "./orchestration"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Agents"
},
{
"name": "duyetbot",
"source": {
"source": "local",
"path": "./duyetbot"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
},
{
"name": "docs-generator",
"source": {
"source": "local",
"path": "./docs-generator"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Docs"
},
{
"name": "github",
"source": {
"source": "local",
"path": "./github"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Git"
},
{
"name": "fix",
"source": {
"source": "local",
"path": "./fix"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
},
{
"name": "clickhouse",
"source": {
"source": "local",
"path": "./clickhouse"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Database"
},
{
"name": "prompt-engineering",
"source": {
"source": "local",
"path": "./prompt-engineering"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
},
{
"name": "clickhouse-monitoring",
"source": {
"source": "local",
"path": "./clickhouse-monitoring"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Monitoring"
},
{
"name": "unsloth-training",
"source": {
"source": "local",
"path": "./unsloth-training"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "ML"
}
]
}
16 changes: 8 additions & 8 deletions .github/workflows/pr-automation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,36 +34,36 @@ jobs:

# Area labels based on file paths
if echo "$FILES" | grep -q "^src/api/\|^api/"; then
gh pr edit "$PR_NUMBER" --add-label "area:api"
gh pr edit "$PR_NUMBER" --add-label "area:api" || true
fi

if echo "$FILES" | grep -q "^src/frontend/\|^components/\|^ui/"; then
gh pr edit "$PR_NUMBER" --add-label "area:frontend"
gh pr edit "$PR_NUMBER" --add-label "area:frontend" || true
fi

if echo "$FILES" | grep -q "^src/backend/\|^server/"; then
gh pr edit "$PR_NUMBER" --add-label "area:backend"
gh pr edit "$PR_NUMBER" --add-label "area:backend" || true
fi

if echo "$FILES" | grep -q "^docs/\|\.md$"; then
gh pr edit "$PR_NUMBER" --add-label "area:docs"
gh pr edit "$PR_NUMBER" --add-label "area:docs" || true
fi

if echo "$FILES" | grep -q "^tests/\|^test/"; then
gh pr edit "$PR_NUMBER" --add-label "area:tests"
gh pr edit "$PR_NUMBER" --add-label "area:tests" || true
fi

# Check for breaking changes in commits
COMMITS=$(gh api repos/${{ github.repository }}/pulls/$PR_NUMBER/commits --jq '.[].commit.message' | grep -i "BREAKING CHANGE" || true)
if [ -n "$COMMITS" ]; then
gh pr edit "$PR_NUMBER" --add-label "type:breaking"
gh pr edit "$PR_NUMBER" --add-label "type:breaking" || true
fi

# Documentation only
if echo "$FILES" | grep -v "^docs/\|\.md$" | grep -q .; then
:
else
gh pr edit "$PR_NUMBER" --add-label "documentation"
gh pr edit "$PR_NUMBER" --add-label "documentation" || true
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down Expand Up @@ -101,7 +101,7 @@ jobs:
PR_COUNT=$(gh pr list --author "$AUTHOR" --state all --limit 1 --json number --jq 'length')

if [ "$PR_COUNT" -eq 1 ]; then
gh pr edit "$PR_NUMBER" --add-label "first-time-contributor"
gh pr edit "$PR_NUMBER" --add-label "first-time-contributor" || true

gh pr comment "$PR_NUMBER" --body '## Welcome! 👋

Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/validate-plugins.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,20 @@ on:
branches: [main, master, "claude/**"]
paths:
- "**/.claude-plugin/plugin.json"
- "**/.codex-plugin/plugin.json"
- ".agents/plugins/marketplace.json"
- ".claude-plugin/marketplace.json"
- "marketplace.json"
- "scripts/validate-plugins.sh"
- ".github/workflows/validate-plugins.yml"
pull_request:
branches: [main, master]
paths:
- "**/.claude-plugin/plugin.json"
- "**/.codex-plugin/plugin.json"
- ".agents/plugins/marketplace.json"
- ".claude-plugin/marketplace.json"
- "marketplace.json"
- "scripts/validate-plugins.sh"
- ".github/workflows/validate-plugins.yml"

Expand Down
13 changes: 13 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@

Alternative: `npx skills add duyet/claude-plugins` ([skills.sh](https://skills.sh))

## Plugin Metadata

Codex plugin metadata is maintained beside Claude metadata in each plugin:

- Claude manifest: `.claude-plugin/plugin.json`
- Codex manifest: `.codex-plugin/plugin.json`
- Claude marketplace: `marketplace.json` and `.claude-plugin/marketplace.json`
- Codex marketplace: `.agents/plugins/marketplace.json`

## Versioning

Follow semantic versioning (semver) for all plugins:
Expand All @@ -33,13 +42,17 @@ Always update `plugin.json` version when making changes.
plugin-name/
├── .claude-plugin/
│ └── plugin.json # Manifest (name, version, description)
├── .codex-plugin/
│ └── plugin.json # Codex manifest and interface metadata
├── agents/ # Sub-agent definitions
├── commands/ # Slash commands
├── skills/ # Reusable knowledge/procedures
├── hooks/ # Hook configurations
└── README.md # Documentation
```

When changing plugin metadata, keep Claude and Codex manifests in sync and run `bash scripts/validate-plugins.sh`.

## Commit Convention

Use semantic commits with plugin scope:
Expand Down
54 changes: 49 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Contributing

Thanks for your interest in contributing to the Claude Plugins Marketplace!
Thanks for your interest in contributing to the Claude and Codex Plugins Marketplace!

## Quick Start

Expand All @@ -16,6 +16,8 @@ Thanks for your interest in contributing to the Claude Plugins Marketplace!
my-plugin/
├── .claude-plugin/
│ └── plugin.json # Plugin manifest (name, version, description)
├── .codex-plugin/
│ └── plugin.json # Codex manifest and interface metadata
├── README.md # Plugin documentation
├── CLAUDE.md # Claude-specific instructions (optional, for skills/agents)
├── agents/ # Agent definitions (optional)
Expand All @@ -39,7 +41,30 @@ my-plugin/
}
```

### 2. Documentation (README.md)
### 2. Codex Manifest (.codex-plugin/plugin.json)

Every plugin also needs a Codex manifest with the same `name`, `version`, `description`, and `author.name` as the Claude manifest:

```json
{
"name": "my-plugin",
"version": "1.0.0",
"description": "A brief description of what this plugin does",
"author": {
"name": "your-username"
},
"skills": "./skills/",
"interface": {
"displayName": "My Plugin",
"shortDescription": "A brief description of what this plugin does",
"developerName": "your-username",
"category": "Productivity",
"capabilities": ["Skill"]
}
}
```

### 3. Documentation (README.md)

Required sections:
- Description of what the plugin does
Expand All @@ -48,14 +73,14 @@ Required sections:
- Configuration options (if any)
- Versioning guidelines (if applicable)

### 3. Claude Instructions (CLAUDE.md)
### 4. Claude Instructions (CLAUDE.md)

Required for skills and agents:
- How Claude should use the plugin
- When to invoke it
- Expected inputs and outputs

### 4. Update Marketplace
### 5. Update Marketplaces

Add your plugin to `marketplace.json`:

Expand All @@ -70,7 +95,24 @@ Add your plugin to `marketplace.json`:
}
```

### 5. Update Main README
Also add a Codex entry to `.agents/plugins/marketplace.json`:

```json
{
"name": "my-plugin",
"source": {
"source": "local",
"path": "./my-plugin"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
}
```

### 6. Update Main README

Add your plugin to the main README.md table:

Expand All @@ -94,6 +136,7 @@ Follow [Semantic Versioning](https://semver.org/):
- **Major** (1.0.0 → 2.0.0): Breaking changes

Update plugin.json version on every change.
Keep `.claude-plugin/plugin.json` and `.codex-plugin/plugin.json` in sync for shared metadata fields.

### Commits

Expand All @@ -112,6 +155,7 @@ refactor(my-plugin): refactor code
- Test your plugin thoroughly before submitting
- Include usage examples in README
- Consider edge cases and error handling
- Run `bash scripts/validate-plugins.sh` to validate Claude manifests, Codex manifests, and marketplace files

## Pull Request Process

Expand Down
Loading
Loading