diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 689d720..01f9e87 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -1,7 +1,9 @@ { "name": "duyet-claude-plugins", "interface": { - "displayName": "Duyet Claude and Codex Plugins" + "displayName": "Duyet Claude, Codex, and Grok Plugins", + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" }, "plugins": [ { @@ -14,7 +16,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Agents" + "category": "Agents", + "interface": { + "logo": "./team-agents/assets/logo.svg", + "composerIcon": "./team-agents/assets/logo.svg" + } }, { "name": "commit", @@ -26,7 +32,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Git" + "category": "Git", + "interface": { + "logo": "./commit/assets/logo.svg", + "composerIcon": "./commit/assets/logo.svg" + } }, { "name": "frontend-design", @@ -38,7 +48,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Design" + "category": "Design", + "interface": { + "logo": "./frontend-design/assets/logo.svg", + "composerIcon": "./frontend-design/assets/logo.svg" + } }, { "name": "interview", @@ -50,7 +64,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Productivity" + "category": "Productivity", + "interface": { + "logo": "./interview/assets/logo.svg", + "composerIcon": "./interview/assets/logo.svg" + } }, { "name": "statusline", @@ -62,7 +80,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "UI" + "category": "UI", + "interface": { + "logo": "./statusline/assets/logo.svg", + "composerIcon": "./statusline/assets/logo.svg" + } }, { "name": "orchestration", @@ -74,7 +96,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Agents" + "category": "Agents", + "interface": { + "logo": "./orchestration/assets/logo.svg", + "composerIcon": "./orchestration/assets/logo.svg" + } }, { "name": "duyetbot", @@ -86,7 +112,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Productivity" + "category": "Productivity", + "interface": { + "logo": "./duyetbot/assets/logo.svg", + "composerIcon": "./duyetbot/assets/logo.svg" + } }, { "name": "docs-generator", @@ -98,7 +128,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Docs" + "category": "Docs", + "interface": { + "logo": "./docs-generator/assets/logo.svg", + "composerIcon": "./docs-generator/assets/logo.svg" + } }, { "name": "github", @@ -110,7 +144,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Git" + "category": "Git", + "interface": { + "logo": "./github/assets/logo.svg", + "composerIcon": "./github/assets/logo.svg" + } }, { "name": "fix", @@ -122,7 +160,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Productivity" + "category": "Productivity", + "interface": { + "logo": "./fix/assets/logo.svg", + "composerIcon": "./fix/assets/logo.svg" + } }, { "name": "simplify", @@ -134,7 +176,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Productivity" + "category": "Productivity", + "interface": { + "logo": "./simplify/assets/logo.svg", + "composerIcon": "./simplify/assets/logo.svg" + } }, { "name": "clickhouse", @@ -146,7 +192,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Database" + "category": "Database", + "interface": { + "logo": "./clickhouse/assets/logo.svg", + "composerIcon": "./clickhouse/assets/logo.svg" + } }, { "name": "prompt-engineering", @@ -158,7 +208,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Productivity" + "category": "Productivity", + "interface": { + "logo": "./prompt-engineering/assets/logo.svg", + "composerIcon": "./prompt-engineering/assets/logo.svg" + } }, { "name": "clickhouse-monitoring", @@ -170,7 +224,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Monitoring" + "category": "Monitoring", + "interface": { + "logo": "./clickhouse-monitoring/assets/logo.svg", + "composerIcon": "./clickhouse-monitoring/assets/logo.svg" + } }, { "name": "unsloth-training", @@ -182,7 +240,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "ML" + "category": "ML", + "interface": { + "logo": "./unsloth-training/assets/logo.svg", + "composerIcon": "./unsloth-training/assets/logo.svg" + } }, { "name": "good-html", @@ -194,7 +256,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Design" + "category": "Design", + "interface": { + "logo": "./good-html/assets/logo.svg", + "composerIcon": "./good-html/assets/logo.svg" + } }, { "name": "sag-notify", @@ -206,7 +272,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "UI" + "category": "UI", + "interface": { + "logo": "./sag-notify/assets/logo.svg", + "composerIcon": "./sag-notify/assets/logo.svg" + } }, { "name": "anyrouter", @@ -218,7 +288,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "AI" + "category": "AI", + "interface": { + "logo": "./anyrouter/assets/logo.svg", + "composerIcon": "./anyrouter/assets/logo.svg" + } }, { "name": "build-macos-apps", @@ -230,7 +304,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Development" + "category": "Development", + "interface": { + "logo": "./build-macos-apps/assets/logo.svg", + "composerIcon": "./build-macos-apps/assets/logo.svg" + } }, { "name": "build-ios-apps", @@ -242,7 +320,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Development" + "category": "Development", + "interface": { + "logo": "./build-ios-apps/assets/logo.svg", + "composerIcon": "./build-ios-apps/assets/logo.svg" + } }, { "name": "agent-loop", @@ -254,7 +336,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Automation" + "category": "Automation", + "interface": { + "logo": "./agent-loop/assets/logo.svg", + "composerIcon": "./agent-loop/assets/logo.svg" + } }, { "name": "kb", @@ -266,7 +352,11 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Productivity" + "category": "Productivity", + "interface": { + "logo": "./kb/assets/logo.svg", + "composerIcon": "./kb/assets/logo.svg" + } }, { "name": "okf", @@ -278,7 +368,27 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Productivity" + "category": "Productivity", + "interface": { + "logo": "./okf/assets/logo.svg", + "composerIcon": "./okf/assets/logo.svg" + } + }, + { + "name": "command-code", + "source": { + "source": "local", + "path": "./command-code" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "ON_INSTALL" + }, + "category": "Development", + "interface": { + "logo": "./command-code/assets/logo.svg", + "composerIcon": "./command-code/assets/logo.svg" + } } ] } diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 3da9fa6..bd2c7db 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -7,122 +7,146 @@ { "name": "team-agents", "source": "./team-agents", - "description": "Leader and Senior Engineer agents for coordinated parallel task execution. Leader breaks down complex tasks and delegates to multiple senior engineers working in parallel." + "description": "Leader and Senior Engineer agents for coordinated parallel task execution. Leader breaks down complex tasks and delegates to multiple senior engineers working in parallel.", + "logo": "./team-agents/assets/logo.svg" }, { "name": "commit", "source": "./commit", - "description": "Create a Git commit with semantic commit message format" + "description": "Create a Git commit with semantic commit message format", + "logo": "./commit/assets/logo.svg" }, { "name": "frontend-design", "source": "./frontend-design", - "description": "Create distinctive, production-grade frontend interfaces with shadcn/ui and Recharts. Avoids AI slop aesthetics with bold design choices and React best practices." + "description": "Create distinctive, production-grade frontend interfaces with shadcn/ui and Recharts. Avoids AI slop aesthetics with bold design choices and React best practices.", + "logo": "./frontend-design/assets/logo.svg" }, { "name": "interview", "source": "./interview", - "description": "Conduct in-depth requirements interviews using Socratic questioning. Clarifies implementation details, edge cases, and tradeoffs before coding begins." + "description": "Conduct in-depth requirements interviews using Socratic questioning. Clarifies implementation details, edge cases, and tradeoffs before coding begins.", + "logo": "./interview/assets/logo.svg" }, { "name": "statusline", "source": "./statusline", - "description": "Real-time visibility into Claude Code sessions showing context usage, active tools, and task progress. Inspired by claude-hud." + "description": "Real-time visibility into Claude Code sessions showing context usage, active tools, and task progress. Inspired by claude-hud.", + "logo": "./statusline/assets/logo.svg" }, { "name": "orchestration", "source": "./orchestration", - "description": "Orchestrate complex work through parallel agent coordination. Decompose requests into task graphs, spawn background workers, and synthesize results elegantly." + "description": "Orchestrate complex work through parallel agent coordination. Decompose requests into task graphs, spawn background workers, and synthesize results elegantly.", + "logo": "./orchestration/assets/logo.svg" }, { "name": "duyetbot", "source": "./duyetbot", - "description": "Pragmatic software development companion with engineering discipline and transparent execution. Shows reasoning via execution chain, works in iterative loops." + "description": "Pragmatic software development companion with engineering discipline and transparent execution. Shows reasoning via execution chain, works in iterative loops.", + "logo": "./duyetbot/assets/logo.svg" }, { "name": "docs-generator", "source": "./docs-generator", - "description": "Automatically generate and maintain plugin documentation (README.md, CLAUDE.md) from plugin metadata" + "description": "Automatically generate and maintain plugin documentation (README.md, CLAUDE.md) from plugin metadata", + "logo": "./docs-generator/assets/logo.svg" }, { "name": "github", "source": "./github", - "description": "GitHub operations using gh CLI - PRs, workflows, issues, repositories, and smart branch detection for implementation workflows" + "description": "GitHub operations using gh CLI - PRs, workflows, issues, repositories, and smart branch detection for implementation workflows", + "logo": "./github/assets/logo.svg" }, { "name": "fix", "source": "./fix", - "description": "Fix issues, tests, and CI failures with intelligent problem detection and resolution. Supports Python, Node/TS, Rust, and Go projects." + "description": "Fix issues, tests, and CI failures with intelligent problem detection and resolution. Supports Python, Node/TS, Rust, and Go projects.", + "logo": "./fix/assets/logo.svg" }, { "name": "simplify", "source": "./simplify", - "description": "Review changed code for reuse, quality, and efficiency, then simplify issues found." + "description": "Review changed code for reuse, quality, and efficiency, then simplify issues found.", + "logo": "./simplify/assets/logo.svg" }, { "name": "prompt-engineering", "source": "./prompt-engineering", - "description": "Prompt engineering skills for Grok, Claude, and Gemini LLMs with model-specific guidance, universal techniques (zero-shot, few-shot, CoT, ReAct, prompt chaining, Tree of Thoughts), and comprehensive documentation." + "description": "Prompt engineering skills for Grok, Claude, and Gemini LLMs with model-specific guidance, universal techniques (zero-shot, few-shot, CoT, ReAct, prompt chaining, Tree of Thoughts), and comprehensive documentation.", + "logo": "./prompt-engineering/assets/logo.svg" }, { "name": "clickhouse", "source": "./clickhouse", - "description": "Comprehensive ClickHouse knowledge from Altinity KB + official docs. Covers schema design, MergeTree engines, query optimization, cluster management, backups, monitoring, and integrations." + "description": "Comprehensive ClickHouse knowledge from Altinity KB + official docs. Covers schema design, MergeTree engines, query optimization, cluster management, backups, monitoring, and integrations.", + "logo": "./clickhouse/assets/logo.svg" }, { "name": "clickhouse-monitoring", "source": "./clickhouse-monitoring", - "description": "Agent Skill for the ClickHouse Monitor dashboard - a real-time monitoring and observability tool. Covers 45 dashboard pages including query monitoring, table management, merge operations, system metrics, security logs, and API integration." + "description": "Agent Skill for the ClickHouse Monitor dashboard - a real-time monitoring and observability tool. Covers 45 dashboard pages including query monitoring, table management, merge operations, system metrics, security logs, and API integration.", + "logo": "./clickhouse-monitoring/assets/logo.svg" }, { "name": "good-html", "source": "./good-html", - "description": "Generate or review high-density, interactive, self-contained HTML artifacts based on Thariq Shihipar's 'Unreasonable Effectiveness of HTML' patterns." + "description": "Generate or review high-density, interactive, self-contained HTML artifacts based on Thariq Shihipar's 'Unreasonable Effectiveness of HTML' patterns.", + "logo": "./good-html/assets/logo.svg" }, { "name": "anyrouter", "source": "./anyrouter", - "description": "Wire AnyRouter into coding agents. Universal OpenAI-compatible LLM gateway for 150+ models, migration recipes from Anthropic/OpenAI/OpenRouter, and a remote MCP server for keys and credits." + "description": "Wire AnyRouter into coding agents. Universal OpenAI-compatible LLM gateway for 150+ models, migration recipes from Anthropic/OpenAI/OpenRouter, and a remote MCP server for keys and credits.", + "logo": "./anyrouter/assets/logo.svg" }, { "name": "sag-notify", "source": "./sag-notify", - "description": "Spoken voice notifications via sag (ElevenLabs TTS). Skill-driven: Claude calls sag directly to speak a short alert just before it asks you something and a one-line summary when work finishes, naming the project. Configurable voice and language." + "description": "Spoken voice notifications via sag (ElevenLabs TTS). Skill-driven: Claude calls sag directly to speak a short alert just before it asks you something and a one-line summary when work finishes, naming the project. Configurable voice and language.", + "logo": "./sag-notify/assets/logo.svg" }, { "name": "build-macos-apps", "source": "./build-macos-apps", - "description": "Build, debug, instrument, and implement macOS apps with SwiftUI and AppKit guidance, codesigning, packaging, and telemetry workflows." + "description": "Build, debug, instrument, and implement macOS apps with SwiftUI and AppKit guidance, codesigning, packaging, and telemetry workflows.", + "logo": "./build-macos-apps/assets/logo.svg" }, { "name": "build-ios-apps", "source": "./build-ios-apps", - "description": "Build, profile, debug, and refine iOS apps with SwiftUI and Xcode workflows — App Intents, Simulator debugging, performance profiling, memory leak detection, and on-device AI with Apple Intelligence, Foundation Models, and Core AI." + "description": "Build, profile, debug, and refine iOS apps with SwiftUI and Xcode workflows — App Intents, Simulator debugging, performance profiling, memory leak detection, and on-device AI with Apple Intelligence, Foundation Models, and Core AI.", + "logo": "./build-ios-apps/assets/logo.svg" }, { "name": "agent-loop", "source": "./agent-loop", - "description": "Continuous agent loop for overnight/day repo maintenance. Triage, autoreview, browser automation, and parallel agent work. Wake every 5 min, dispatch to threads, land autonomously." + "description": "Continuous agent loop for overnight/day repo maintenance. Triage, autoreview, browser automation, and parallel agent work. Wake every 5 min, dispatch to threads, land autonomously.", + "logo": "./agent-loop/assets/logo.svg" }, { "name": "kb", "source": "./kb", - "description": "Knowledge base maintenance skills. Initialize a shared-brain kb, then consolidate, dedupe, prune, refresh, and forget notes in a markdown KB." + "description": "Knowledge base maintenance skills. Initialize a shared-brain kb, then consolidate, dedupe, prune, refresh, and forget notes in a markdown KB.", + "logo": "./kb/assets/logo.svg" }, { "name": "okf", "source": "./okf", - "description": "Open Knowledge Format (OKF) tooling. Author, initialize, validate, render, and refactor knowledge into vendor-neutral OKF v0.1 bundles: markdown files with YAML frontmatter." + "description": "Open Knowledge Format (OKF) tooling. Author, initialize, validate, render, and refactor knowledge into vendor-neutral OKF v0.1 bundles: markdown files with YAML frontmatter.", + "logo": "./okf/assets/logo.svg" }, { "name": "unsloth-training", "source": "./unsloth-training", - "description": "Fine-tune LLMs with Unsloth using GRPO or SFT. Includes dataset preparation, synthetic data generation, environment flags, MLX (Apple Silicon), FP8, vision models, mobile export, GGUF." + "description": "Fine-tune LLMs with Unsloth using GRPO or SFT. Includes dataset preparation, synthetic data generation, environment flags, MLX (Apple Silicon), FP8, vision models, mobile export, GGUF.", + "logo": "./unsloth-training/assets/logo.svg" }, { "name": "command-code", "source": "./command-code", - "description": "Drive the Command Code CLI (`cmd`) and orchestrate it as a headless sub-agent. Fan out `cmd -p --yolo --max-turns 100000` workers across isolated git worktrees to implement issues and tasks in parallel, each committed to its own branch for review." + "description": "Drive the Command Code CLI (`cmd`) and orchestrate it as a headless sub-agent. Fan out `cmd -p --yolo --max-turns 100000` workers across isolated git worktrees to implement issues and tasks in parallel, each committed to its own branch for review.", + "logo": "./command-code/assets/logo.svg" } ] } diff --git a/.github/workflows/validate-plugins.yml b/.github/workflows/validate-plugins.yml index 6b36129..e6cfa46 100644 --- a/.github/workflows/validate-plugins.yml +++ b/.github/workflows/validate-plugins.yml @@ -1,3 +1,4 @@ +--- name: Validate Plugins on: @@ -7,8 +8,13 @@ on: paths: - "**/.claude-plugin/plugin.json" - "**/.codex-plugin/plugin.json" + - "**/.grok-plugin/plugin.json" + - "**/.grok-build-plugin/plugin.json" + - "**/.antigravity-plugin/plugin.json" + - "**/assets/logo.svg" - ".agents/plugins/marketplace.json" - ".claude-plugin/marketplace.json" + - ".grok-plugin/marketplace.json" - "marketplace.json" - "scripts/validate-plugins.sh" - ".github/workflows/validate-plugins.yml" @@ -17,8 +23,13 @@ on: paths: - "**/.claude-plugin/plugin.json" - "**/.codex-plugin/plugin.json" + - "**/.grok-plugin/plugin.json" + - "**/.grok-build-plugin/plugin.json" + - "**/.antigravity-plugin/plugin.json" + - "**/assets/logo.svg" - ".agents/plugins/marketplace.json" - ".claude-plugin/marketplace.json" + - ".grok-plugin/marketplace.json" - "marketplace.json" - "scripts/validate-plugins.sh" - ".github/workflows/validate-plugins.yml" @@ -31,7 +42,11 @@ jobs: name: Validate plugin.json manifests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 + - name: Checkout code + # actions/checkout v4.2.2 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + with: + persist-credentials: false - name: Validate all plugin manifests run: bash scripts/validate-plugins.sh diff --git a/.grok-plugin/marketplace.json b/.grok-plugin/marketplace.json new file mode 100644 index 0000000..bb74b6c --- /dev/null +++ b/.grok-plugin/marketplace.json @@ -0,0 +1,402 @@ +{ + "name": "duyet-claude-plugins", + "description": "Production-quality plugins for Grok Build and Grok Bot — the same pack as Claude Code and Codex.", + "owner": { + "name": "duyet", + "url": "https://github.com/duyet" + }, + "plugins": [ + { + "name": "team-agents", + "description": "Leader and Senior Engineer agents for coordinated parallel task execution. Leader breaks down complex tasks and delegates to multiple senior engineers working in parallel.", + "category": "agents", + "source": { + "type": "local", + "path": "./team-agents" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["team-agents"], + "logo": "assets/logo.svg", + "version": "1.9.1", + "author": { + "name": "duyet" + } + }, + { + "name": "commit", + "description": "Create a Git commit with semantic commit message format and PR workflow with templates", + "category": "git", + "source": { + "type": "local", + "path": "./commit" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["commit"], + "logo": "assets/logo.svg", + "version": "1.3.2", + "author": { + "name": "duyet" + } + }, + { + "name": "frontend-design", + "description": "Create distinctive, production-grade frontend interfaces avoiding AI slop aesthetics. Emphasizes shadcn/ui, Recharts, and bold design choices.", + "category": "design", + "source": { + "type": "local", + "path": "./frontend-design" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["frontend-design"], + "logo": "assets/logo.svg", + "version": "1.4.0", + "author": { + "name": "duyet", + "email": "me@duyet.net" + } + }, + { + "name": "interview", + "description": "Conduct in-depth requirements interviews using Socratic questioning to clarify implementation details before coding", + "category": "productivity", + "source": { + "type": "local", + "path": "./interview" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["interview"], + "logo": "assets/logo.svg", + "version": "1.0.1", + "author": { + "name": "duyet", + "email": "me@duyet.net" + } + }, + { + "name": "statusline", + "description": "Configurable multi-line status bar with context health, cache hit rate, session duration, API rate limits (Anthropic 5h/7d + z.ai GLM), git branch, and active tools. Supports 1/2/3 line layouts, icon themes, and template presets.", + "category": "ui", + "source": { + "type": "local", + "path": "./statusline" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["statusline"], + "logo": "assets/logo.svg", + "version": "1.9.0", + "author": { + "name": "duyet" + } + }, + { + "name": "orchestration", + "description": "Orchestrator skill for managing parallel agent workstreams. Transform complex requests into coordinated multi-agent execution with elegant result synthesis.", + "category": "agents", + "source": { + "type": "local", + "path": "./orchestration" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["orchestration"], + "logo": "assets/logo.svg", + "version": "1.1.0", + "author": { + "name": "duyet" + } + }, + { + "name": "duyetbot", + "description": "Pragmatic software development companion with engineering discipline and transparent execution.", + "category": "productivity", + "source": { + "type": "local", + "path": "./duyetbot" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["duyetbot"], + "logo": "assets/logo.svg", + "version": "1.8.1", + "author": { + "name": "duyet" + } + }, + { + "name": "docs-generator", + "description": "Automatically generate and maintain plugin documentation (README.md, CLAUDE.md)", + "category": "docs", + "source": { + "type": "local", + "path": "./docs-generator" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["docs-generator"], + "logo": "assets/logo.svg", + "version": "1.0.1", + "author": { + "name": "duyet" + } + }, + { + "name": "github", + "description": "GitHub operations using gh CLI - PRs, workflows, issues, repositories, batch operations, PR babysitting with AI review bot integration, and smart branch detection", + "category": "git", + "source": { + "type": "local", + "path": "./github" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["github"], + "logo": "assets/logo.svg", + "version": "1.4.2", + "author": { + "name": "duyetbot" + } + }, + { + "name": "fix", + "description": "Fix issues, tests, and CI failures with intelligent problem detection and resolution", + "category": "productivity", + "source": { + "type": "local", + "path": "./fix" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["fix"], + "logo": "assets/logo.svg", + "version": "1.0.1", + "author": { + "name": "duyet" + } + }, + { + "name": "simplify", + "description": "Review changed code for reuse, quality, and efficiency, then simplify issues found", + "category": "productivity", + "source": { + "type": "local", + "path": "./simplify" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["simplify"], + "logo": "assets/logo.svg", + "version": "1.0.1", + "author": { + "name": "duyet" + } + }, + { + "name": "clickhouse", + "description": "ClickHouse expertise with 28 atomic review rules + 15 deep reference files. Rules synced with official ClickHouse/agent-skills repository. Schema design, query optimization, insert strategy, cluster management, backups, monitoring, and security best practices.", + "category": "database", + "source": { + "type": "local", + "path": "./clickhouse" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["clickhouse"], + "logo": "assets/logo.svg", + "version": "1.4.1", + "author": { + "name": "duyetbot" + } + }, + { + "name": "prompt-engineering", + "description": "Prompt engineering skills for Grok, Claude, and Gemini LLMs with model-specific guidance and universal techniques", + "category": "productivity", + "source": { + "type": "local", + "path": "./prompt-engineering" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["prompt-engineering"], + "logo": "assets/logo.svg", + "version": "1.1.1", + "author": { + "name": "duyetbot" + } + }, + { + "name": "clickhouse-monitoring", + "description": "Agent Skill for the ClickHouse Monitor dashboard - a real-time monitoring and observability tool for ClickHouse clusters. Covers 45 dashboard pages, query performance analysis, table management, and API integration.", + "category": "monitoring", + "source": { + "type": "local", + "path": "./clickhouse-monitoring" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["clickhouse-monitoring"], + "logo": "assets/logo.svg", + "version": "1.1.1", + "author": { + "name": "duyet" + } + }, + { + "name": "unsloth-training", + "description": "Fine-tune LLMs with Unsloth using GRPO or SFT. Includes dataset preparation, synthetic data generation, environment flags, MLX (Apple Silicon), FP8, vision models, mobile export, GGUF.", + "category": "ml", + "source": { + "type": "local", + "path": "./unsloth-training" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["unsloth-training"], + "logo": "assets/logo.svg", + "version": "1.0.2", + "author": { + "name": "duyet" + } + }, + { + "name": "good-html", + "description": "Generate high-density, interactive, self-contained HTML artifacts based on Thariq Shihipar's patterns. Optimized for engineering tasks, PR reviews, and research reports.", + "category": "design", + "source": { + "type": "local", + "path": "./good-html" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["good-html"], + "logo": "assets/logo.svg", + "version": "1.0.0", + "author": { + "name": "Gemini CLI" + } + }, + { + "name": "anyrouter", + "description": "Wire AnyRouter into Claude Code, Codex, Cursor, and other coding agents. Universal OpenAI-compatible router for 150+ models, with migration recipes from Anthropic, OpenAI, and OpenRouter, plus a remote MCP server for key and credit management.", + "category": "ai", + "source": { + "type": "local", + "path": "./anyrouter" + }, + "homepage": "https://anyrouter.dev", + "keywords": ["anyrouter"], + "logo": "assets/logo.svg", + "version": "1.0.1", + "author": { + "name": "duyet", + "url": "https://github.com/duyet" + } + }, + { + "name": "sag-notify", + "description": "Spoken voice notifications via sag (ElevenLabs TTS). Skill-driven: Claude calls sag directly to speak a short alert just before it asks you something, and a one-line summary when work finishes — naming the project. Configurable voice and language.", + "category": "ui", + "source": { + "type": "local", + "path": "./sag-notify" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["sag-notify"], + "logo": "assets/logo.svg", + "version": "2.1.2", + "author": { + "name": "duyet" + } + }, + { + "name": "build-macos-apps", + "description": "Build, debug, instrument, and implement macOS apps with SwiftUI and AppKit guidance, codesigning, packaging, and telemetry workflows.", + "category": "development", + "source": { + "type": "local", + "path": "./build-macos-apps" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["build-macos-apps"], + "logo": "assets/logo.svg", + "version": "1.0.1", + "author": { + "name": "duyet", + "url": "https://github.com/duyet" + } + }, + { + "name": "build-ios-apps", + "description": "Build, profile, debug, and refine iOS apps with SwiftUI and Xcode workflows — App Intents, Simulator debugging, performance profiling, memory leak detection, and on-device AI with Apple Intelligence, Foundation Models, and Core AI.", + "category": "development", + "source": { + "type": "local", + "path": "./build-ios-apps" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["build-ios-apps"], + "logo": "assets/logo.svg", + "version": "1.0.1", + "author": { + "name": "duyet", + "url": "https://github.com/duyet" + } + }, + { + "name": "agent-loop", + "description": "Continuous agent loop for overnight/day repository maintenance. Auto-detects and resumes from saved state. Orchestrates triage, autoreview, browser automation, and parallel agent work across threads. Wake every 5 min, direct work to threads, land autonomously.", + "category": "automation", + "source": { + "type": "local", + "path": "./agent-loop" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["agent-loop"], + "logo": "assets/logo.svg", + "version": "0.4.0", + "author": { + "name": "duyetbot" + } + }, + { + "name": "kb", + "description": "Knowledge base maintenance skills. Initialize a shared-brain kb, then consolidate, dedupe, prune, refresh, and forget notes in a markdown KB.", + "category": "productivity", + "source": { + "type": "local", + "path": "./kb" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["kb"], + "logo": "assets/logo.svg", + "version": "1.1.0", + "author": { + "name": "duyet", + "url": "https://github.com/duyet" + } + }, + { + "name": "okf", + "description": "Open Knowledge Format (OKF) tooling. Author, initialize, validate, render, and refactor knowledge into vendor-neutral OKF v0.1 bundles: markdown files with YAML frontmatter.", + "category": "productivity", + "source": { + "type": "local", + "path": "./okf" + }, + "homepage": "https://github.com/duyet/codex-claude-plugins", + "keywords": ["okf"], + "logo": "assets/logo.svg", + "version": "1.1.0", + "author": { + "name": "duyet", + "url": "https://github.com/duyet" + } + }, + { + "name": "command-code", + "description": "Drive the Command Code CLI (`cmd`) and orchestrate it as a headless sub-agent. Skill + /command-code:dispatch command + cmd-dispatcher agent for fanning out `cmd -p --yolo --max-turns 100000` workers across isolated git worktrees to implement issues and tasks in parallel.", + "category": "development", + "source": { + "type": "local", + "path": "./command-code" + }, + "homepage": "https://github.com/duyet/claude-plugins", + "keywords": ["command-code"], + "logo": "assets/logo.svg", + "version": "1.0.0", + "author": { + "name": "duyet", + "url": "https://github.com/duyet" + } + } + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 99417f2..2fce288 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Changelog + + All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), @@ -8,6 +10,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added + +- First-class Grok Build and Grok Bot support: `.grok-plugin/plugin.json` and `.grok-build-plugin/plugin.json` on every plugin, plus `.grok-plugin/marketplace.json` +- Plugin logos for Claude Code, Codex, Grok Build, Grok Bot, and Antigravity (`assets/logo.svg` per plugin, wired in manifests and marketplaces) - Marketplace.json for centralized plugin registry - GitHub issue templates (bug report, feature request) - GitHub batch commands: bulk-close-issues, bulk-merge-prs, bulk-label @@ -16,12 +21,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Enhanced GitHub documentation with examples and troubleshooting ### Changed + - Improved documentation consistency across plugins - Better version tracking in plugin manifests - GitHub plugin: Enhanced batch operations and PR workflow - Commit plugin: Added PR template support and draft PR option ### Removed + - terminal-ui-design plugin (consolidated with frontend-design) ### Fixed @@ -29,6 +36,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [1.0.0] - 2026-01-28 ### Added + - team-agents: Leader, Senior Engineer, Junior Engineer for parallel execution - commit: Semantic commit message format with PR workflows - frontend-design: Anti-slop frontend design patterns @@ -42,6 +50,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - clickhouse: Comprehensive ClickHouse knowledge base ### Changed + - Initial release with production-quality plugin ecosystem ## Version History diff --git a/CLAUDE.md b/CLAUDE.md index abf82ad..d0860d4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,6 +9,13 @@ Alternative: `npx skills add duyet/codex-claude-plugins` ([skills.sh](https://skills.sh)) +### Grok Build / Grok Bot + +```bash +grok plugin marketplace add duyet/codex-claude-plugins +grok plugin install --trust +``` + ### Antigravity Installation For Antigravity CLI, install/symlink a plugin locally for development: @@ -23,9 +30,13 @@ Codex plugin metadata is maintained beside Claude metadata in each plugin: - Claude manifest: `.claude-plugin/plugin.json` - Codex manifest: `.codex-plugin/plugin.json` +- Grok Bot / Grok Build manifest: `.grok-plugin/plugin.json` +- Grok Build interface manifest: `.grok-build-plugin/plugin.json` - Antigravity manifest: `.antigravity-plugin/plugin.json` - Claude marketplace: `marketplace.json` and `.claude-plugin/marketplace.json` - Codex marketplace: `.agents/plugins/marketplace.json` +- Grok marketplace: `.grok-plugin/marketplace.json` +- Plugin logo: `assets/logo.svg` (referenced from every harness manifest) ## Versioning @@ -48,12 +59,18 @@ Always update `plugin.json` version when making changes. ## Plugin Structure -``` +```text plugin-name/ ├── .claude-plugin/ -│ └── plugin.json # Manifest (name, version, description) +│ └── plugin.json # Manifest (name, version, description, logo) ├── .codex-plugin/ │ └── plugin.json # Codex manifest and interface metadata +├── .grok-plugin/ +│ └── plugin.json # Grok Bot / Grok Build manifest +├── .grok-build-plugin/ +│ └── plugin.json # Grok Build interface metadata +├── assets/ +│ └── logo.svg # Rendered by every listed harness ├── agents/ # Sub-agent definitions ├── commands/ # Slash commands ├── skills/ # Reusable knowledge/procedures @@ -61,7 +78,7 @@ plugin-name/ └── README.md # Documentation ``` -When changing plugin metadata, keep Claude and Codex manifests in sync and run `bash scripts/validate-plugins.sh`. +When changing plugin metadata, keep Claude, Codex, and Grok manifests in sync and run `bash scripts/validate-plugins.sh`. ## No Personal / Environment-Specific Information @@ -92,7 +109,7 @@ Before committing a plugin, scan for leaks: Use semantic commits with plugin scope: -``` +```text feat(plugin-name): add new feature fix(plugin-name): fix bug docs(plugin-name): update documentation diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ba29161..0d26454 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing -Thanks for your interest in contributing to the Claude and Codex Plugins Marketplace! +Thanks for your interest in contributing to the Claude, Codex, and Grok Plugins Marketplace! ## Quick Start @@ -12,12 +12,18 @@ Thanks for your interest in contributing to the Claude and Codex Plugins Marketp ## Plugin Structure -``` +```text my-plugin/ ├── .claude-plugin/ -│ └── plugin.json # Plugin manifest (name, version, description) +│ └── plugin.json # Plugin manifest (name, version, description, logo) ├── .codex-plugin/ │ └── plugin.json # Codex manifest and interface metadata +├── .grok-plugin/ +│ └── plugin.json # Grok Bot / Grok Build manifest +├── .grok-build-plugin/ +│ └── plugin.json # Grok Build interface metadata +├── assets/ +│ └── logo.svg # Local logo rendered by every listed harness ├── README.md # Plugin documentation ├── CLAUDE.md # Claude-specific instructions (optional, for skills/agents) ├── agents/ # Agent definitions (optional) @@ -37,7 +43,8 @@ my-plugin/ "version": "1.0.0", "author": { "name": "your-username" - } + }, + "logo": "./assets/logo.svg" } ``` @@ -59,28 +66,51 @@ Every plugin also needs a Codex manifest with the same `name`, `version`, `descr "shortDescription": "A brief description of what this plugin does", "developerName": "your-username", "category": "Productivity", - "capabilities": ["Skill"] + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } ``` -### 3. Documentation (README.md) +Copy `assets/logo.svg` from another plugin (or the repo-root `assets/logo.svg`). Point every harness at that local file — remote URLs do not render reliably after install. + +### 3. Grok Bot / Grok Build Manifests + +`.grok-plugin/plugin.json` is the official Grok Bot + Grok Build manifest. `.grok-build-plugin/plugin.json` mirrors the Codex interface metadata for Grok Build. Keep `name`, `version`, `description`, and `author.name` identical across Claude, Codex, Grok, and Grok Build manifests: + +```json +{ + "name": "my-plugin", + "version": "1.0.0", + "description": "A brief description of what this plugin does", + "author": { + "name": "your-username" + }, + "logo": "assets/logo.svg", + "skills": "./skills/" +} +``` + +### 4. Documentation (README.md) Required sections: + - Description of what the plugin does - Installation instructions - Usage examples - Configuration options (if any) - Versioning guidelines (if applicable) -### 4. Claude Instructions (CLAUDE.md) +### 5. Claude Instructions (CLAUDE.md) Required for skills and agents: + - How Claude should use the plugin - When to invoke it - Expected inputs and outputs -### 5. Update Marketplaces +### 6. Update Marketplaces Add your plugin to `marketplace.json`: @@ -91,7 +121,8 @@ Add your plugin to `marketplace.json`: "description": "...", "version": "1.0.0", "type": "skill|command|hook", - "category": "your-category" + "category": "your-category", + "logo": "./my-plugin/assets/logo.svg" } ``` @@ -112,12 +143,29 @@ Also add a Codex entry to `.agents/plugins/marketplace.json`: } ``` -### 6. Update Main README +Also add a Grok entry to `.grok-plugin/marketplace.json` (Grok Build + Grok Bot): + +```json +{ + "name": "my-plugin", + "description": "...", + "category": "productivity", + "source": { + "type": "local", + "path": "./my-plugin" + }, + "logo": "assets/logo.svg" +} +``` + +Include `logo` on the Claude marketplace entry (`./my-plugin/assets/logo.svg`) and Codex marketplace `interface.logo` / `interface.composerIcon`. + +### 7. Update Main README Add your plugin to the main README.md table: -| Plugin | Type | Description | -|--------|------|-------------| +| Plugin | Type | Description | +| ---------------------------- | ---- | ----------- | | [🔧 my-plugin](./my-plugin/) | Type | Description | ## Development Guidelines @@ -131,12 +179,13 @@ Add your plugin to the main README.md table: ### Versioning Follow [Semantic Versioning](https://semver.org/): + - **Patch** (1.0.0 → 1.0.1): Bug fixes, documentation - **Minor** (1.0.0 → 1.1.0): New features, non-breaking changes - **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. +Keep `.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`, `.grok-plugin/plugin.json`, and `.grok-build-plugin/plugin.json` in sync for shared metadata fields. ### Commits @@ -155,7 +204,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 +- Run `bash scripts/validate-plugins.sh` to validate Claude, Codex, Grok, Grok Build, and Antigravity manifests plus marketplace files ## Pull Request Process diff --git a/README.md b/README.md index 475fd82..c5fcf9b 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -# Claude/Codex Plugins +# Claude/Codex/Grok Plugins [![GitHub Release](https://img.shields.io/github/v/duyet/codex-claude-plugins?style=flat-square)](https://github.com/duyet/codex-claude-plugins/releases) [![License](https://img.shields.io/github/license/duyet/codex-claude-plugins?style=flat-square)](LICENSE) [![Plugins](https://img.shields.io/badge/plugins-14-blue?style=flat-square)](#plugins-at-a-glance) -> Extend Claude Code and Codex with specialized agents, commands, and skills from one shared plugin collection. +> Extend Claude Code, Codex, Grok Build, and Grok Bot with specialized agents, commands, and skills from one shared plugin collection. -A collection of production-quality plugins for Claude Code and Codex, including autonomous agents, workflow automation, statusline utilities, prompt engineering guidance, and developer tools. +A collection of production-quality plugins for Claude Code, Codex, Grok Build, and Grok Bot, including autonomous agents, workflow automation, statusline utilities, prompt engineering guidance, and developer tools. **Latest Release:** [v1.0.0](https://github.com/duyet/codex-claude-plugins/releases/tag/v1.0.0) | [CHANGELOG](CHANGELOG.md) | [Issues](https://github.com/duyet/codex-claude-plugins/issues) @@ -42,7 +42,7 @@ Codex support is provided through the repo-local Codex marketplace file: ```bash git clone https://github.com/duyet/codex-claude-plugins.git -cd claude-plugins +cd codex-claude-plugins ``` Then add or import the local Codex marketplace from: @@ -63,7 +63,31 @@ That marketplace points each plugin at the matching local folder, for example: } ``` -After the marketplace is added in Codex, install the plugins you want from the `Duyet Claude and Codex Plugins` marketplace. Codex-facing workflow skills are available under each plugin's `skills/` folder, including wrappers for Claude command-heavy plugins such as `commit`, `github`, `fix`, `statusline`, `team-agents`, and `duyetbot`. +After the marketplace is added in Codex, install the plugins you want from the `Duyet Claude, Codex, and Grok Plugins` marketplace. Codex-facing workflow skills are available under each plugin's `skills/` folder, including wrappers for Claude command-heavy plugins such as `commit`, `github`, `fix`, `statusline`, `team-agents`, and `duyetbot`. + +### Grok Build + +Grok Build reads the same pack through the Grok marketplace index: + +```bash +grok plugin marketplace add duyet/codex-claude-plugins +grok plugin install team-agents --trust +grok plugin install commit --trust +grok plugin install github --trust +``` + +Browse the catalog in the TUI with `/marketplace` or `/plugin`, then press `i` to install. Every plugin folder ships `.grok-plugin/plugin.json` (Grok Bot + Grok Build) and `.grok-build-plugin/plugin.json` (Grok Build interface metadata) beside the Claude and Codex manifests. + +### Grok Bot + +Grok Bot uses the same `.grok-plugin/` marketplace as Grok Build. Add the pack once, then install plugins from the `duyet-claude-plugins` catalog: + +```bash +grok plugin marketplace add duyet/codex-claude-plugins +grok plugin install --trust +``` + +In the Grok Bot app, open **Plugins** and add `duyet/codex-claude-plugins` as a marketplace source if the CLI is not available. Plugin logos render from each plugin's `assets/logo.svg`. ### Alternative: Skills CLI @@ -73,17 +97,22 @@ Install via the open [Skills](https://skills.sh) ecosystem, works with Claude Co npx skills add duyet/codex-claude-plugins ``` -### Codex Metadata +### Harness Metadata -This repository also ships Codex plugin metadata in place: +This repository ships per-harness plugin metadata in place: -- Each plugin has a `.codex-plugin/plugin.json` beside its Claude `.claude-plugin/plugin.json`. -- Codex marketplace entries live in `.agents/plugins/marketplace.json`. +- Claude Code: `.claude-plugin/plugin.json` plus `marketplace.json` and `.claude-plugin/marketplace.json`. +- Codex: `.codex-plugin/plugin.json` plus `.agents/plugins/marketplace.json`. +- Grok Bot: `.grok-plugin/plugin.json`. +- Grok Build: `.grok-build-plugin/plugin.json` plus the shared Grok index at `.grok-plugin/marketplace.json`. +- Antigravity (where present): `.antigravity-plugin/plugin.json`. +- Logos: each plugin's `assets/logo.svg`, referenced from every harness manifest and marketplace so listings render the same mark. - Claude slash commands and agents stay in their original folders; Codex-facing wrapper skills live under `skills/*-workflow/SKILL.md` where a plugin needs a Codex entry point. ## Usage Examples ### Parallel Team Execution + ```bash # Delegate to team agents for parallel work /duyetbot:spawn Implement the frontend dashboard @@ -91,6 +120,7 @@ This repository also ships Codex plugin metadata in place: ``` ### Smart GitHub Workflow + ```bash # Automatically creates feature branch from main /gh-pr create "Add user settings page" @@ -98,6 +128,7 @@ This repository also ships Codex plugin metadata in place: ``` ### PR Babysitting with /goal + ```bash # Set a persistent goal to babysit a PR — auto-fix CI, address reviews, wait for green /goal /github:babysit-pr https://github.com/duyet/clickhouse-monitoring/pull/1355 @@ -110,20 +141,19 @@ This repository also ships Codex plugin metadata in place: ## Plugins at a Glance -| Plugin | Type | What it does | -|--------|------|--------------| -| [👥 team-agents](#👥-team-agents) | Skill | Leader, Senior Engineer, and Junior Engi... | -| [📝 commit](#📝-commit) | Command | Create a Git commit with semantic commit... | -| [🎨 frontend-design](#🎨-frontend-design) | Skill | Create distinctive, production-grade fro... | -| [💬 interview](#💬-interview) | Command | Conduct in-depth requirements interviews... | -| [📊 statusline](#📊-statusline) | Hook | Configurable status bar showing context ... | -| [🎼 orchestration](#🎼-orchestration) | Skill | Orchestrator skill for managing parallel... | -| [🤖 duyetbot](#🤖-duyetbot) | Skill | Pragmatic software development companion... | -| [🎯 docs-generator](#🎯-docs-generator) | Hook | Automatically generate and maintain plug... | -| [🐙 github](#🐙-github) | Skill | GitHub operations using gh CLI - PRs, is... | -| [🔧 fix](#🔧-fix) | Command | Fix issues, tests, and CI failures with ... | -| [📈 clickhouse-monitoring](#📈-clickhouse-monitoring) | Skill | Specialized knowledge for the ClickHouse Mo... | - +| Plugin | Type | What it does | +| ---------------------------------------------------- | ------- | ---------------------------------------------- | +| [👥 team-agents](./team-agents/) | Skill | Leader, Senior Engineer, and Junior Engi... | +| [📝 commit](./commit/) | Command | Create a Git commit with semantic commit... | +| [🎨 frontend-design](./frontend-design/) | Skill | Create distinctive, production-grade fro... | +| [💬 interview](./interview/) | Command | Conduct in-depth requirements interviews... | +| [📊 statusline](./statusline/) | Hook | Configurable status bar showing context ... | +| [🎼 orchestration](./orchestration/) | Skill | Orchestrator skill for managing parallel... | +| [🤖 duyetbot](./duyetbot/) | Skill | Pragmatic software development companion... | +| [🎯 docs-generator](./docs-generator/) | Hook | Automatically generate and maintain plug... | +| [🐙 github](./github/) | Skill | GitHub operations using gh CLI - PRs, is... | +| [🔧 fix](./fix/) | Command | Fix issues, tests, and CI failures with ... | +| [📈 clickhouse-monitoring](./clickhouse-monitoring/) | Skill | Specialized knowledge for the ClickHouse Mo... | --- @@ -136,16 +166,18 @@ This repository also ships Codex plugin metadata in place: **Components:** Agents: - - **junior-engineer** - - **leader** - - **senior-engineer** + +- **junior-engineer** +- **leader** +- **senior-engineer** Skills: - - **backend-api-patterns** - - **quality-gates** - - **react-nextjs-patterns** - - **task-decomposition** - - **typescript-patterns** + +- **backend-api-patterns** +- **quality-gates** +- **react-nextjs-patterns** +- **task-decomposition** +- **typescript-patterns** --- @@ -154,9 +186,9 @@ Skills: **Create a Git commit with semantic commit message format** ```bash - - `/commit:commit`: Create a git commit with semantic commit message format - - `/commit:and-push`: Commit and push to remote - - `/commit:and-create-pr`: Commit, push, and create a pull request +- `/commit:commit`: Create a git commit with semantic commit message format +- `/commit:and-push`: Commit and push to remote +- `/commit:and-create-pr`: Commit, push, and create a pull request ``` --- @@ -168,7 +200,8 @@ Skills: **Components:** Skills: - - **frontend-design** + +- **frontend-design** --- @@ -177,7 +210,7 @@ Skills: **Conduct in-depth requirements interviews using Socratic questioning to clarify implementation details before coding** ```bash - - `/interview`: Conduct in-depth requirements interview using Socratic questioning to clarify implementation details +- `/interview`: Conduct in-depth requirements interview using Socratic questioning to clarify implementation details ``` --- @@ -187,9 +220,9 @@ Skills: **Configurable status bar showing context usage, API rate limits (5h/7d), git branch, and active tools. Supports 1/2/3 line layouts with smart hiding of empty values.** ```bash - - `/config` - - `/disable` - - `/setup` +- `/config` +- `/disable` +- `/setup` ``` --- @@ -201,7 +234,8 @@ Skills: **Components:** Skills: - - **orchestration** + +- **orchestration** --- @@ -210,23 +244,25 @@ Skills: **Pragmatic software development companion with engineering discipline and transparent execution.** ```bash - - `/duyetbot`: Summon duyetbot - pragmatic software development companion with transparent execution - - `/learn`: Learn about @duyet and update knowledge base - - `/orchestrate`: Duyetbot orchestrate - coordinate parallel agent workstreams for complex tasks - - `/spawn`: Duyetbot spawn - delegate tasks to team agents for parallel execution - - `/think`: Duyetbot deep thinking - structured problem analysis with visible reasoning +- `/duyetbot`: Summon duyetbot - pragmatic software development companion with transparent execution +- `/learn`: Learn about @duyet and update knowledge base +- `/orchestrate`: Duyetbot orchestrate - coordinate parallel agent workstreams for complex tasks +- `/spawn`: Duyetbot spawn - delegate tasks to team agents for parallel execution +- `/think`: Duyetbot deep thinking - structured problem analysis with visible reasoning ``` **Components:** Agents: - - **duyetbot** + +- **duyetbot** Skills: - - **duyet-knowledge** - - **engineering-discipline** - - **team-coordination** - - **transparency** + +- **duyet-knowledge** +- **engineering-discipline** +- **team-coordination** +- **transparency** --- @@ -235,7 +271,7 @@ Skills: **Automatically generate and maintain plugin documentation (README.md, CLAUDE.md)** ```bash - - `/generate-docs`: Manually trigger documentation generation for all plugins +- `/generate-docs`: Manually trigger documentation generation for all plugins ``` --- @@ -249,7 +285,8 @@ Automatically detects when you're on main/master and creates feature branches be **Components:** Skills: - - **github** + +- **github** --- @@ -260,12 +297,13 @@ Skills: Auto-detects project type and runs appropriate checks. Spawns parallel agents for complex multi-file fixes. ```bash - - `/fix:and-push`: Fix issues, commit, and push to remote - - `/fix:and-update-pr`: Fix issues and update existing PR - - `/fix:and-create-pr`: Fix issues and create new PR +- `/fix:and-push`: Fix issues, commit, and push to remote +- `/fix:and-update-pr`: Fix issues and update existing PR +- `/fix:and-create-pr`: Fix issues and create new PR ``` **Supported Projects:** + - Python (pytest, ruff, mypy) - Node/TypeScript (jest, vitest, eslint, tsc) - Rust (cargo test, clippy) @@ -274,7 +312,8 @@ Auto-detects project type and runs appropriate checks. Spawns parallel agents fo **Components:** Skills: - - **test-detection** + +- **test-detection** --- @@ -287,16 +326,12 @@ Covers 45 dashboard pages including query monitoring, table management, merge op **Components:** Skills: - - **clickhouse-monitoring** - ---- - - - +- **clickhouse-monitoring** --- +--- ## Manual Installation @@ -319,17 +354,20 @@ Add to `~/.claude/settings.json`: ## Contributing -``` +```text your-plugin/ -├── .claude-plugin/plugin.json # name, version, description -├── .codex-plugin/plugin.json # Codex manifest and interface metadata -├── agents/ # .md with YAML frontmatter -├── commands/ # slash commands -├── skills/ # reusable knowledge -└── hooks/hooks.json # lifecycle hooks +├── .claude-plugin/plugin.json # name, version, description, logo +├── .codex-plugin/plugin.json # Codex manifest, interface, logo +├── .grok-plugin/plugin.json # Grok Bot / Grok Build manifest + logo +├── .grok-build-plugin/plugin.json # Grok Build interface metadata + logo +├── assets/logo.svg # rendered by every listed harness +├── agents/ # .md with YAML frontmatter +├── commands/ # slash commands +├── skills/ # reusable knowledge +└── hooks/hooks.json # lifecycle hooks ``` -Update `marketplace.json`, `.claude-plugin/marketplace.json`, `.agents/plugins/marketplace.json`, and both manifest files. Run `bash scripts/validate-plugins.sh` before opening a PR. +Update `marketplace.json`, `.claude-plugin/marketplace.json`, `.agents/plugins/marketplace.json`, `.grok-plugin/marketplace.json`, and the harness manifests. Run `bash scripts/validate-plugins.sh` before opening a PR. --- diff --git a/agent-loop/.antigravity-plugin/plugin.json b/agent-loop/.antigravity-plugin/plugin.json index 18f7dea..fad7937 100644 --- a/agent-loop/.antigravity-plugin/plugin.json +++ b/agent-loop/.antigravity-plugin/plugin.json @@ -2,7 +2,9 @@ "name": "agent-loop", "version": "0.4.0", "description": "Continuous agent loop for overnight/day repository maintenance. Auto-detects and resumes from saved state. Orchestrates triage, autoreview, browser automation, and parallel agent work across threads. Wake every 5 min, direct work to threads, land autonomously.", - "author": { "name": "duyetbot" }, + "author": { + "name": "duyetbot" + }, "license": "MIT", "skills": "./skills/", "commands": "./commands/", @@ -30,6 +32,8 @@ "shortDescription": "Continuous overnight/day repo maintenance with autonomous agent loops. Triage, autoreview, browser automation, and parallel agent work.", "developerName": "duyetbot", "category": "Automation", - "capabilities": ["Skill", "Command"] + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/agent-loop/.claude-plugin/plugin.json b/agent-loop/.claude-plugin/plugin.json index 7f657f6..0190823 100644 --- a/agent-loop/.claude-plugin/plugin.json +++ b/agent-loop/.claude-plugin/plugin.json @@ -2,6 +2,9 @@ "name": "agent-loop", "version": "0.4.0", "description": "Continuous agent loop for overnight/day repository maintenance. Auto-detects and resumes from saved state. Orchestrates triage, autoreview, browser automation, and parallel agent work across threads. Wake every 5 min, direct work to threads, land autonomously.", - "author": { "name": "duyetbot" }, - "license": "MIT" + "author": { + "name": "duyetbot" + }, + "license": "MIT", + "logo": "./assets/logo.svg" } diff --git a/agent-loop/.codex-plugin/plugin.json b/agent-loop/.codex-plugin/plugin.json index 7afd09f..9197d0e 100644 --- a/agent-loop/.codex-plugin/plugin.json +++ b/agent-loop/.codex-plugin/plugin.json @@ -2,7 +2,9 @@ "name": "agent-loop", "version": "0.4.0", "description": "Continuous agent loop for overnight/day repository maintenance. Auto-detects and resumes from saved state. Orchestrates triage, autoreview, browser automation, and parallel agent work across threads. Wake every 5 min, direct work to threads, land autonomously.", - "author": { "name": "duyetbot" }, + "author": { + "name": "duyetbot" + }, "license": "MIT", "skills": "./skills/", "codex": { @@ -29,6 +31,8 @@ "shortDescription": "Continuous overnight/day repo maintenance with autonomous agent loops. Triage, autoreview, browser automation, and parallel agent work.", "developerName": "duyetbot", "category": "Automation", - "capabilities": ["Skill", "Command"] + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/agent-loop/.grok-build-plugin/plugin.json b/agent-loop/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..75c0a8a --- /dev/null +++ b/agent-loop/.grok-build-plugin/plugin.json @@ -0,0 +1,39 @@ +{ + "name": "agent-loop", + "version": "0.4.0", + "description": "Continuous agent loop for overnight/day repository maintenance. Auto-detects and resumes from saved state. Orchestrates triage, autoreview, browser automation, and parallel agent work across threads. Wake every 5 min, direct work to threads, land autonomously.", + "author": { + "name": "duyetbot" + }, + "license": "MIT", + "skills": "./skills/", + "interface": { + "displayName": "Agent Loop", + "shortDescription": "Continuous overnight/day repo maintenance with autonomous agent loops. Triage, autoreview, browser automation, and parallel agent work.", + "developerName": "duyetbot", + "category": "Automation", + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg", + "grok-build": { + "skills": [ + "agent-loop-orchestrator", + "agent-loop-triage", + "agent-loop-autoreview", + "agent-loop-browser" + ], + "commands": [ + "agent-loop:start", + "agent-loop:stop", + "agent-loop:status", + "agent-loop:inspect", + "agent-loop:reset", + "agent-loop:restore", + "agent-loop:triage", + "agent-loop:autoreview", + "agent-loop:resume" + ] + } +} diff --git a/agent-loop/.grok-plugin/plugin.json b/agent-loop/.grok-plugin/plugin.json new file mode 100644 index 0000000..be9a2ec --- /dev/null +++ b/agent-loop/.grok-plugin/plugin.json @@ -0,0 +1,13 @@ +{ + "name": "agent-loop", + "version": "0.4.0", + "description": "Continuous agent loop for overnight/day repository maintenance. Auto-detects and resumes from saved state. Orchestrates triage, autoreview, browser automation, and parallel agent work across threads. Wake every 5 min, direct work to threads, land autonomously.", + "author": { + "name": "duyetbot" + }, + "license": "MIT", + "logo": "assets/logo.svg", + "keywords": ["agent-loop", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/" +} diff --git a/agent-loop/README.md b/agent-loop/README.md index 9644d7c..5704c4e 100644 --- a/agent-loop/README.md +++ b/agent-loop/README.md @@ -36,27 +36,27 @@ That makes it easy to parallelize + steer work as needed. #### Loop Control -| Command | Description | -| ------------------------ | -------------------------------------------------------- | -| `/agent-loop:start` | Start or resume the continuous maintenance loop | -| `/agent-loop:stop` | Gracefully stop the loop and persist state | -| `/agent-loop:resume` | Resume from persisted state (explicit resume) | +| Command | Description | +| -------------------- | ----------------------------------------------- | +| `/agent-loop:start` | Start or resume the continuous maintenance loop | +| `/agent-loop:stop` | Gracefully stop the loop and persist state | +| `/agent-loop:resume` | Resume from persisted state (explicit resume) | #### State Management -| Command | Description | -| ------------------------ | -------------------------------------------------------- | -| `/agent-loop:status` | Quick status check (running, cycles, metrics) | -| `/agent-loop:inspect` | Deep inspection of state file (history, errors, details) | -| `/agent-loop:reset` | Clear state and start fresh (backs up old state) | -| `/agent-loop:restore` | Recover state from a backup | +| Command | Description | +| --------------------- | -------------------------------------------------------- | +| `/agent-loop:status` | Quick status check (running, cycles, metrics) | +| `/agent-loop:inspect` | Deep inspection of state file (history, errors, details) | +| `/agent-loop:reset` | Clear state and start fresh (backs up old state) | +| `/agent-loop:restore` | Recover state from a backup | #### One-Shot Operations -| Command | Description | -| ------------------------ | -------------------------------------------------------- | -| `/agent-loop:triage` | One-shot repo queue triage (doesn't start loop) | -| `/agent-loop:autoreview` | One-shot PR review and fix (doesn't start loop) | +| Command | Description | +| ------------------------ | ----------------------------------------------- | +| `/agent-loop:triage` | One-shot repo queue triage (doesn't start loop) | +| `/agent-loop:autoreview` | One-shot PR review and fix (doesn't start loop) | ## Skill Sources @@ -105,24 +105,26 @@ The agent-loop automatically saves state to `.agent-loop/state.json` and support ### Startup Behavior When you run `/agent-loop:start`: + 1. **Checks for existing state** — detects `.agent-loop/state.json` 2. **Prompts if found** — asks to resume or start fresh 3. **Backs up on reset** — saves old state to `.agent-loop/backups/` if starting fresh ### State Operations -| Operation | Command | Purpose | -|-----------|---------|---------| -| **Check status** | `/agent-loop:status` | Quick summary (running, cycles, metrics) | -| **Deep inspect** | `/agent-loop:inspect` | View thread history, errors, state details | -| **Validate state** | `/agent-loop:inspect --validate` | Check state file integrity | -| **Reset state** | `/agent-loop:reset` | Clear state, backs up old state | -| **Restore state** | `/agent-loop:restore --list` | Recover from backup | -| **Resume loop** | `/agent-loop:resume` | Continue from saved state | +| Operation | Command | Purpose | +| ------------------ | -------------------------------- | ------------------------------------------ | +| **Check status** | `/agent-loop:status` | Quick summary (running, cycles, metrics) | +| **Deep inspect** | `/agent-loop:inspect` | View thread history, errors, state details | +| **Validate state** | `/agent-loop:inspect --validate` | Check state file integrity | +| **Reset state** | `/agent-loop:reset` | Clear state, backs up old state | +| **Restore state** | `/agent-loop:restore --list` | Recover from backup | +| **Resume loop** | `/agent-loop:resume` | Continue from saved state | ### Recovery Scenarios **If state is corrupted:** + ```bash /agent-loop:inspect --validate # Identify the problem /agent-loop:restore --list # List available backups @@ -131,12 +133,14 @@ When you run `/agent-loop:start`: ``` **If you want to start fresh:** + ```bash /agent-loop:reset # Backs up old state automatically /agent-loop:start --fresh # Starts with clean state ``` **If you accidentally reset:** + ```bash /agent-loop:restore --list # List backups /agent-loop:restore --select # Interactive menu @@ -160,11 +164,17 @@ When you run `/agent-loop:start`: ```text agent-loop/ ├── .antigravity-plugin/ -│ └── plugin.json # Antigravity manifest (version 0.3.0) +│ └── plugin.json # Antigravity manifest ├── .claude-plugin/ -│ └── plugin.json # Manifest (version 0.3.0) +│ └── plugin.json # Claude manifest ├── .codex-plugin/ -│ └── plugin.json # Codex manifest (version 0.3.0) +│ └── plugin.json # Codex manifest +├── .grok-plugin/ +│ └── plugin.json # Grok Bot / Grok Build manifest +├── .grok-build-plugin/ +│ └── plugin.json # Grok Build interface metadata +├── assets/ +│ └── logo.svg ├── commands/ # Slash commands │ ├── start.md │ ├── stop.md diff --git a/agent-loop/assets/logo.svg b/agent-loop/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/agent-loop/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/anyrouter/.claude-plugin/plugin.json b/anyrouter/.claude-plugin/plugin.json index 15940c1..171cc2a 100644 --- a/anyrouter/.claude-plugin/plugin.json +++ b/anyrouter/.claude-plugin/plugin.json @@ -8,5 +8,6 @@ }, "homepage": "https://anyrouter.dev", "repository": "https://github.com/duyet/codex-claude-plugins", - "license": "MIT" + "license": "MIT", + "logo": "./assets/logo.svg" } diff --git a/anyrouter/.codex-plugin/plugin.json b/anyrouter/.codex-plugin/plugin.json index 2299269..0caf5ed 100644 --- a/anyrouter/.codex-plugin/plugin.json +++ b/anyrouter/.codex-plugin/plugin.json @@ -19,6 +19,8 @@ "homepage": "https://anyrouter.dev", "docs": "https://anyrouter.dev/docs", "mcp": "https://anyrouter.dev/docs/mcp" - } + }, + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/anyrouter/.grok-build-plugin/plugin.json b/anyrouter/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..add72ca --- /dev/null +++ b/anyrouter/.grok-build-plugin/plugin.json @@ -0,0 +1,27 @@ +{ + "name": "anyrouter", + "version": "1.0.1", + "description": "Wire AnyRouter into Claude Code, Codex, Cursor, and other coding agents. Universal OpenAI-compatible router for 150+ models, with migration recipes from Anthropic, OpenAI, and OpenRouter, plus a remote MCP server for key and credit management.", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "commands": "./commands/", + "agents": "./agents/", + "mcp": "./.mcp.json", + "interface": { + "displayName": "AnyRouter", + "shortDescription": "Universal OpenAI-compatible LLM router (150+ models). Migrate from Anthropic / OpenAI / OpenRouter; manage keys via MCP.", + "developerName": "duyet", + "category": "AI", + "capabilities": ["Skill", "Command", "Agent", "MCP"], + "links": { + "homepage": "https://anyrouter.dev", + "docs": "https://anyrouter.dev/docs", + "mcp": "https://anyrouter.dev/docs/mcp" + }, + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/anyrouter/.grok-plugin/plugin.json b/anyrouter/.grok-plugin/plugin.json new file mode 100644 index 0000000..85bec2a --- /dev/null +++ b/anyrouter/.grok-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "name": "anyrouter", + "version": "1.0.1", + "description": "Wire AnyRouter into Claude Code, Codex, Cursor, and other coding agents. Universal OpenAI-compatible router for 150+ models, with migration recipes from Anthropic, OpenAI, and OpenRouter, plus a remote MCP server for key and credit management.", + "author": { + "name": "duyet", + "url": "https://github.com/duyet" + }, + "license": "MIT", + "homepage": "https://anyrouter.dev", + "repository": "https://github.com/duyet/codex-claude-plugins", + "logo": "assets/logo.svg", + "keywords": ["anyrouter", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/", + "agents": "./agents/", + "mcpServers": "./.mcp.json" +} diff --git a/anyrouter/README.md b/anyrouter/README.md index 65b343e..2f50038 100644 --- a/anyrouter/README.md +++ b/anyrouter/README.md @@ -2,7 +2,7 @@ Wire [AnyRouter](https://anyrouter.dev) — a universal, OpenAI-compatible LLM gateway for 150+ models across 28+ providers — into Claude Code, Codex, Cursor, and any other coding agent that accepts a custom base URL. -This plugin ships as both a **Claude Code plugin** (`.claude-plugin/`) and a **Codex plugin** (`.codex-plugin/`), and bundles a remote **MCP server** for key and credit management. +This plugin ships as a **Claude Code plugin** (`.claude-plugin/`), a **Codex plugin** (`.codex-plugin/`), and **Grok Build / Grok Bot** manifests (`.grok-plugin/` + `.grok-build-plugin/`), and bundles a remote **MCP server** for key and credit management. ## What you get @@ -11,7 +11,7 @@ This plugin ships as both a **Claude Code plugin** (`.claude-plugin/`) and a **C - **`anyrouter-integrator` agent** — sub-agent that performs surgical migrations on demand. - **MCP server** — remote MCP at `https://anyrouter.dev/api/v1/mcp` for `list_models`, `get_credits`, `list_keys`, `create_key`, `revoke_key`, `list_presets`, `list_conversations`. -There is **no `references/` snapshot** — the skill links to live `.md` URLs (`https://anyrouter.dev/docs/.md`) so the agent always works with current content. The auto-generated index is at https://anyrouter.dev/docs.md. +There is **no `references/` snapshot** — the skill links to live `.md` URLs (`https://anyrouter.dev/docs/.md`) so the agent always works with current content. The auto-generated index is at [anyrouter.dev/docs.md](https://anyrouter.dev/docs.md). ## Install @@ -28,15 +28,22 @@ Then set your key: export ANYROUTER_API_KEY="sk-ar-..." ``` -(Get one at https://anyrouter.dev/dashboard/keys.) +(Get one at [anyrouter.dev/dashboard/keys](https://anyrouter.dev/dashboard/keys).) ### Codex The plugin's `.codex-plugin/plugin.json` declares Skill, Command, Agent, and MCP capabilities. Install via your Codex plugin loader the same way you install other plugins from `duyet/codex-claude-plugins`. +### Grok Build / Grok Bot + +```bash +grok plugin marketplace add duyet/codex-claude-plugins +grok plugin install anyrouter --trust +``` + ### MCP only -If you only want the AnyRouter MCP server in another client (Claude Desktop, Cursor, Claude Code CLI, OpenCode), point it at `https://anyrouter.dev/api/v1/mcp`. Full per-client setup: https://anyrouter.dev/docs/mcp.md. +If you only want the AnyRouter MCP server in another client (Claude Desktop, Cursor, Claude Code CLI, OpenCode), point it at `https://anyrouter.dev/api/v1/mcp`. Full per-client setup: [anyrouter.dev/docs/mcp.md](https://anyrouter.dev/docs/mcp.md). ## Quick usage @@ -51,29 +58,29 @@ After installing, the agent will load the `anyrouter` skill on its own when you You can also invoke the slash command directly: -``` +```text /anyrouter:migrate ``` ## The contract -| Setting | Value | -| --- | --- | -| Base URL | `https://anyrouter.dev/api/v1` | -| API key env | `ANYROUTER_API_KEY` (prefix `sk-ar-`) | -| Model id format | `provider/model` | -| Default model | `openai/gpt-5.4-mini` | +| Setting | Value | +| --------------------- | --------------------------------------------- | +| Base URL | `https://anyrouter.dev/api/v1` | +| API key env | `ANYROUTER_API_KEY` (prefix `sk-ar-`) | +| Model id format | `provider/model` | +| Default model | `openai/gpt-5.4-mini` | | Anthropic-native base | `https://anyrouter.dev/api` (for `/messages`) | -| MCP endpoint | `https://anyrouter.dev/api/v1/mcp` | +| MCP endpoint | `https://anyrouter.dev/api/v1/mcp` | ## Live docs The skill links to live raw-markdown pages. Start with the index — it lists every section and every page: -- https://anyrouter.dev/docs.md — auto-generated index -- https://anyrouter.dev/llms-full.txt — every doc concatenated -- https://anyrouter.dev/llms.txt — short LLM index per `llmstxt.org` -- https://anyrouter.dev/docs/index.json — machine-readable manifest +- [anyrouter.dev/docs.md](https://anyrouter.dev/docs.md) — auto-generated index +- [anyrouter.dev/llms-full.txt](https://anyrouter.dev/llms-full.txt) — every doc concatenated +- [anyrouter.dev/llms.txt](https://anyrouter.dev/llms.txt) — short LLM index per `llmstxt.org` +- [anyrouter.dev/docs/index.json](https://anyrouter.dev/docs/index.json) — machine-readable manifest ## License diff --git a/anyrouter/assets/logo.svg b/anyrouter/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/anyrouter/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/assets/logo.svg b/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/build-ios-apps/.claude-plugin/plugin.json b/build-ios-apps/.claude-plugin/plugin.json index 8653712..2bb8ce4 100644 --- a/build-ios-apps/.claude-plugin/plugin.json +++ b/build-ios-apps/.claude-plugin/plugin.json @@ -8,5 +8,6 @@ }, "homepage": "https://github.com/duyet/codex-claude-plugins", "repository": "https://github.com/duyet/codex-claude-plugins", - "license": "MIT" + "license": "MIT", + "logo": "./assets/logo.svg" } diff --git a/build-ios-apps/.codex-plugin/plugin.json b/build-ios-apps/.codex-plugin/plugin.json index 1ade6e1..1bf8ebe 100644 --- a/build-ios-apps/.codex-plugin/plugin.json +++ b/build-ios-apps/.codex-plugin/plugin.json @@ -15,6 +15,8 @@ "capabilities": ["Skill", "Agent"], "links": { "homepage": "https://github.com/duyet/codex-claude-plugins" - } + }, + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/build-ios-apps/.grok-build-plugin/plugin.json b/build-ios-apps/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..9881ce0 --- /dev/null +++ b/build-ios-apps/.grok-build-plugin/plugin.json @@ -0,0 +1,23 @@ +{ + "name": "build-ios-apps", + "version": "1.0.1", + "description": "Build, profile, debug, and refine iOS apps with SwiftUI and Xcode workflows — App Intents, Simulator debugging, performance profiling, memory leak detection, and on-device AI with Apple Intelligence, Foundation Models, and Core AI.", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "agents": "./agents/", + "interface": { + "displayName": "Build iOS Apps", + "shortDescription": "Build, profile, debug, and refine iOS apps with SwiftUI and Xcode workflows — App Intents, Simulator debugging, performance profiling, memory leak detection, and on-device AI with Apple Intelligence, Foundation Models, and Core AI.", + "developerName": "duyet", + "category": "development", + "capabilities": ["Skill", "Agent"], + "links": { + "homepage": "https://github.com/duyet/codex-claude-plugins" + }, + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/build-ios-apps/.grok-plugin/plugin.json b/build-ios-apps/.grok-plugin/plugin.json new file mode 100644 index 0000000..5696ab2 --- /dev/null +++ b/build-ios-apps/.grok-plugin/plugin.json @@ -0,0 +1,16 @@ +{ + "name": "build-ios-apps", + "version": "1.0.1", + "description": "Build, profile, debug, and refine iOS apps with SwiftUI and Xcode workflows — App Intents, Simulator debugging, performance profiling, memory leak detection, and on-device AI with Apple Intelligence, Foundation Models, and Core AI.", + "author": { + "name": "duyet", + "url": "https://github.com/duyet" + }, + "license": "MIT", + "homepage": "https://github.com/duyet/codex-claude-plugins", + "repository": "https://github.com/duyet/codex-claude-plugins", + "logo": "assets/logo.svg", + "keywords": ["build-ios-apps", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "agents": "./agents/" +} diff --git a/build-ios-apps/assets/logo.svg b/build-ios-apps/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/build-ios-apps/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/build-macos-apps/.claude-plugin/plugin.json b/build-macos-apps/.claude-plugin/plugin.json index 201edea..eddeb75 100644 --- a/build-macos-apps/.claude-plugin/plugin.json +++ b/build-macos-apps/.claude-plugin/plugin.json @@ -8,5 +8,6 @@ }, "homepage": "https://github.com/duyet/codex-claude-plugins", "repository": "https://github.com/duyet/codex-claude-plugins", - "license": "MIT" + "license": "MIT", + "logo": "./assets/logo.svg" } diff --git a/build-macos-apps/.codex-plugin/plugin.json b/build-macos-apps/.codex-plugin/plugin.json index 88fc282..c8eb112 100644 --- a/build-macos-apps/.codex-plugin/plugin.json +++ b/build-macos-apps/.codex-plugin/plugin.json @@ -16,6 +16,8 @@ "capabilities": ["Skill", "Command", "Agent"], "links": { "homepage": "https://github.com/duyet/codex-claude-plugins" - } + }, + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/build-macos-apps/.grok-build-plugin/plugin.json b/build-macos-apps/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..23648f8 --- /dev/null +++ b/build-macos-apps/.grok-build-plugin/plugin.json @@ -0,0 +1,24 @@ +{ + "name": "build-macos-apps", + "version": "1.0.1", + "description": "Build, debug, instrument, and implement macOS apps with SwiftUI and AppKit guidance, codesigning, packaging, and telemetry workflows.", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "commands": "./commands/", + "agents": "./agents/", + "interface": { + "displayName": "Build macOS Apps", + "shortDescription": "Build, debug, instrument, and implement macOS apps with SwiftUI and AppKit guidance", + "developerName": "duyet", + "category": "development", + "capabilities": ["Skill", "Command", "Agent"], + "links": { + "homepage": "https://github.com/duyet/codex-claude-plugins" + }, + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/build-macos-apps/.grok-plugin/plugin.json b/build-macos-apps/.grok-plugin/plugin.json new file mode 100644 index 0000000..d89ab76 --- /dev/null +++ b/build-macos-apps/.grok-plugin/plugin.json @@ -0,0 +1,17 @@ +{ + "name": "build-macos-apps", + "version": "1.0.1", + "description": "Build, debug, instrument, and implement macOS apps with SwiftUI and AppKit guidance, codesigning, packaging, and telemetry workflows.", + "author": { + "name": "duyet", + "url": "https://github.com/duyet" + }, + "license": "MIT", + "homepage": "https://github.com/duyet/codex-claude-plugins", + "repository": "https://github.com/duyet/codex-claude-plugins", + "logo": "assets/logo.svg", + "keywords": ["build-macos-apps", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/", + "agents": "./agents/" +} diff --git a/build-macos-apps/assets/logo.svg b/build-macos-apps/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/build-macos-apps/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/clickhouse-monitoring/.claude-plugin/plugin.json b/clickhouse-monitoring/.claude-plugin/plugin.json index 43be053..6b9c343 100644 --- a/clickhouse-monitoring/.claude-plugin/plugin.json +++ b/clickhouse-monitoring/.claude-plugin/plugin.json @@ -2,5 +2,8 @@ "name": "clickhouse-monitoring", "version": "1.1.1", "description": "Agent Skill for the ClickHouse Monitor dashboard - a real-time monitoring and observability tool for ClickHouse clusters. Covers 45 dashboard pages, query performance analysis, table management, and API integration.", - "author": { "name": "duyet" } + "author": { + "name": "duyet" + }, + "logo": "./assets/logo.svg" } diff --git a/clickhouse-monitoring/.codex-plugin/plugin.json b/clickhouse-monitoring/.codex-plugin/plugin.json index fa9b5ff..c007f88 100644 --- a/clickhouse-monitoring/.codex-plugin/plugin.json +++ b/clickhouse-monitoring/.codex-plugin/plugin.json @@ -11,9 +11,8 @@ "shortDescription": "Agent Skill for the ClickHouse Monitor dashboard - a real-time monitoring and observability tool for ClickHouse clusters. Covers 45 dashboard pages, query performance analysis, table management, and API integration.", "developerName": "duyet", "category": "Monitoring", - "capabilities": [ - "Skill" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/clickhouse-monitoring/.grok-build-plugin/plugin.json b/clickhouse-monitoring/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..632bc18 --- /dev/null +++ b/clickhouse-monitoring/.grok-build-plugin/plugin.json @@ -0,0 +1,19 @@ +{ + "name": "clickhouse-monitoring", + "version": "1.1.1", + "description": "Agent Skill for the ClickHouse Monitor dashboard - a real-time monitoring and observability tool for ClickHouse clusters. Covers 45 dashboard pages, query performance analysis, table management, and API integration.", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "interface": { + "displayName": "Clickhouse Monitoring", + "shortDescription": "Agent Skill for the ClickHouse Monitor dashboard - a real-time monitoring and observability tool for ClickHouse clusters. Covers 45 dashboard pages, query performance analysis, table management, and API integration.", + "developerName": "duyet", + "category": "Monitoring", + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/clickhouse-monitoring/.grok-plugin/plugin.json b/clickhouse-monitoring/.grok-plugin/plugin.json new file mode 100644 index 0000000..56aa9e7 --- /dev/null +++ b/clickhouse-monitoring/.grok-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "clickhouse-monitoring", + "version": "1.1.1", + "description": "Agent Skill for the ClickHouse Monitor dashboard - a real-time monitoring and observability tool for ClickHouse clusters. Covers 45 dashboard pages, query performance analysis, table management, and API integration.", + "author": { + "name": "duyet" + }, + "logo": "assets/logo.svg", + "keywords": ["clickhouse-monitoring", "grok", "grok-build", "grok-bot"], + "skills": "./skills/" +} diff --git a/clickhouse-monitoring/assets/logo.svg b/clickhouse-monitoring/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/clickhouse-monitoring/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/clickhouse/.claude-plugin/plugin.json b/clickhouse/.claude-plugin/plugin.json index c3290ed..cfbffb8 100644 --- a/clickhouse/.claude-plugin/plugin.json +++ b/clickhouse/.claude-plugin/plugin.json @@ -2,5 +2,8 @@ "name": "clickhouse", "version": "1.4.1", "description": "ClickHouse expertise with 28 atomic review rules + 15 deep reference files. Rules synced with official ClickHouse/agent-skills repository. Schema design, query optimization, insert strategy, cluster management, backups, monitoring, and security best practices.", - "author": { "name": "duyetbot" } + "author": { + "name": "duyetbot" + }, + "logo": "./assets/logo.svg" } diff --git a/clickhouse/.codex-plugin/plugin.json b/clickhouse/.codex-plugin/plugin.json index 939535f..b31d1b7 100644 --- a/clickhouse/.codex-plugin/plugin.json +++ b/clickhouse/.codex-plugin/plugin.json @@ -11,9 +11,8 @@ "shortDescription": "ClickHouse expertise with 28 atomic review rules + 15 deep reference files. Rules synced with official ClickHouse/agent-skills repository. Schema design, query optimization, insert strategy, cluster management, backups, monitoring, and security best practices.", "developerName": "duyetbot", "category": "Database", - "capabilities": [ - "Skill" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/clickhouse/.grok-build-plugin/plugin.json b/clickhouse/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..09b55ff --- /dev/null +++ b/clickhouse/.grok-build-plugin/plugin.json @@ -0,0 +1,19 @@ +{ + "name": "clickhouse", + "version": "1.4.1", + "description": "ClickHouse expertise with 28 atomic review rules + 15 deep reference files. Rules synced with official ClickHouse/agent-skills repository. Schema design, query optimization, insert strategy, cluster management, backups, monitoring, and security best practices.", + "author": { + "name": "duyetbot" + }, + "skills": "./skills/", + "interface": { + "displayName": "Clickhouse", + "shortDescription": "ClickHouse expertise with 28 atomic review rules + 15 deep reference files. Rules synced with official ClickHouse/agent-skills repository. Schema design, query optimization, insert strategy, cluster management, backups, monitoring, and security best practices.", + "developerName": "duyetbot", + "category": "Database", + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/clickhouse/.grok-plugin/plugin.json b/clickhouse/.grok-plugin/plugin.json new file mode 100644 index 0000000..4e484b3 --- /dev/null +++ b/clickhouse/.grok-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "clickhouse", + "version": "1.4.1", + "description": "ClickHouse expertise with 28 atomic review rules + 15 deep reference files. Rules synced with official ClickHouse/agent-skills repository. Schema design, query optimization, insert strategy, cluster management, backups, monitoring, and security best practices.", + "author": { + "name": "duyetbot" + }, + "logo": "assets/logo.svg", + "keywords": ["clickhouse", "grok", "grok-build", "grok-bot"], + "skills": "./skills/" +} diff --git a/clickhouse/assets/logo.svg b/clickhouse/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/clickhouse/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/command-code/.claude-plugin/plugin.json b/command-code/.claude-plugin/plugin.json index 8c255d0..07d20ef 100644 --- a/command-code/.claude-plugin/plugin.json +++ b/command-code/.claude-plugin/plugin.json @@ -8,5 +8,6 @@ }, "homepage": "https://github.com/duyet/claude-plugins", "repository": "https://github.com/duyet/codex-claude-plugins", - "license": "MIT" + "license": "MIT", + "logo": "./assets/logo.svg" } diff --git a/command-code/.codex-plugin/plugin.json b/command-code/.codex-plugin/plugin.json index 0c9fc62..772b60a 100644 --- a/command-code/.codex-plugin/plugin.json +++ b/command-code/.codex-plugin/plugin.json @@ -16,6 +16,8 @@ "capabilities": ["Skill", "Command", "Agent"], "links": { "homepage": "https://github.com/duyet/claude-plugins" - } + }, + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/command-code/.grok-build-plugin/plugin.json b/command-code/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..824f88e --- /dev/null +++ b/command-code/.grok-build-plugin/plugin.json @@ -0,0 +1,24 @@ +{ + "name": "command-code", + "version": "1.0.0", + "description": "Drive the Command Code CLI (`cmd`) and orchestrate it as a headless sub-agent. Skill + /command-code:dispatch command + cmd-dispatcher agent for fanning out `cmd -p --yolo --max-turns 100000` workers across isolated git worktrees to implement issues and tasks in parallel.", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "commands": "./commands/", + "agents": "./agents/", + "interface": { + "displayName": "Command Code", + "shortDescription": "Drive & orchestrate the Command Code CLI (`cmd`) as a headless sub-agent.", + "developerName": "duyet", + "category": "Developer Tools", + "capabilities": ["Skill", "Command", "Agent"], + "links": { + "homepage": "https://github.com/duyet/claude-plugins" + }, + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/command-code/.grok-plugin/plugin.json b/command-code/.grok-plugin/plugin.json new file mode 100644 index 0000000..d0b8f3d --- /dev/null +++ b/command-code/.grok-plugin/plugin.json @@ -0,0 +1,17 @@ +{ + "name": "command-code", + "version": "1.0.0", + "description": "Drive the Command Code CLI (`cmd`) and orchestrate it as a headless sub-agent. Skill + /command-code:dispatch command + cmd-dispatcher agent for fanning out `cmd -p --yolo --max-turns 100000` workers across isolated git worktrees to implement issues and tasks in parallel.", + "author": { + "name": "duyet", + "url": "https://github.com/duyet" + }, + "license": "MIT", + "homepage": "https://github.com/duyet/claude-plugins", + "repository": "https://github.com/duyet/codex-claude-plugins", + "logo": "assets/logo.svg", + "keywords": ["command-code", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/", + "agents": "./agents/" +} diff --git a/command-code/assets/logo.svg b/command-code/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/command-code/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/commit/.claude-plugin/plugin.json b/commit/.claude-plugin/plugin.json index 6e7d305..5ea7c6c 100644 --- a/commit/.claude-plugin/plugin.json +++ b/commit/.claude-plugin/plugin.json @@ -4,5 +4,6 @@ "version": "1.3.2", "author": { "name": "duyet" - } + }, + "logo": "./assets/logo.svg" } diff --git a/commit/.codex-plugin/plugin.json b/commit/.codex-plugin/plugin.json index 1e15f49..842e4eb 100644 --- a/commit/.codex-plugin/plugin.json +++ b/commit/.codex-plugin/plugin.json @@ -11,10 +11,8 @@ "shortDescription": "Create a Git commit with semantic commit message format and PR workflow with templates", "developerName": "duyet", "category": "Git", - "capabilities": [ - "Skill", - "Command" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/commit/.grok-build-plugin/plugin.json b/commit/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..090130f --- /dev/null +++ b/commit/.grok-build-plugin/plugin.json @@ -0,0 +1,19 @@ +{ + "name": "commit", + "version": "1.3.2", + "description": "Create a Git commit with semantic commit message format and PR workflow with templates", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "interface": { + "displayName": "Commit", + "shortDescription": "Create a Git commit with semantic commit message format and PR workflow with templates", + "developerName": "duyet", + "category": "Git", + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/commit/.grok-plugin/plugin.json b/commit/.grok-plugin/plugin.json new file mode 100644 index 0000000..3663b59 --- /dev/null +++ b/commit/.grok-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "commit", + "version": "1.3.2", + "description": "Create a Git commit with semantic commit message format and PR workflow with templates", + "author": { + "name": "duyet" + }, + "logo": "assets/logo.svg", + "keywords": ["commit", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/" +} diff --git a/commit/assets/logo.svg b/commit/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/commit/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/docs-generator/.claude-plugin/plugin.json b/docs-generator/.claude-plugin/plugin.json index 7a01b24..5318fc6 100644 --- a/docs-generator/.claude-plugin/plugin.json +++ b/docs-generator/.claude-plugin/plugin.json @@ -4,5 +4,6 @@ "description": "Automatically generate and maintain plugin documentation (README.md, CLAUDE.md)", "author": { "name": "duyet" - } + }, + "logo": "./assets/logo.svg" } diff --git a/docs-generator/.codex-plugin/plugin.json b/docs-generator/.codex-plugin/plugin.json index 3182f51..d2e4a40 100644 --- a/docs-generator/.codex-plugin/plugin.json +++ b/docs-generator/.codex-plugin/plugin.json @@ -13,11 +13,8 @@ "shortDescription": "Automatically generate and maintain plugin documentation (README.md, CLAUDE.md)", "developerName": "duyet", "category": "Docs", - "capabilities": [ - "Skill", - "Command", - "Hook" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill", "Command", "Hook"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/docs-generator/.grok-build-plugin/plugin.json b/docs-generator/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..a8ac158 --- /dev/null +++ b/docs-generator/.grok-build-plugin/plugin.json @@ -0,0 +1,21 @@ +{ + "name": "docs-generator", + "version": "1.0.1", + "description": "Automatically generate and maintain plugin documentation (README.md, CLAUDE.md)", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "commands": "./commands/", + "hooks": "./hooks/hooks.json", + "interface": { + "displayName": "Docs Generator", + "shortDescription": "Automatically generate and maintain plugin documentation (README.md, CLAUDE.md)", + "developerName": "duyet", + "category": "Docs", + "capabilities": ["Skill", "Command", "Hook"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/docs-generator/.grok-plugin/plugin.json b/docs-generator/.grok-plugin/plugin.json new file mode 100644 index 0000000..ac12ba4 --- /dev/null +++ b/docs-generator/.grok-plugin/plugin.json @@ -0,0 +1,13 @@ +{ + "name": "docs-generator", + "version": "1.0.1", + "description": "Automatically generate and maintain plugin documentation (README.md, CLAUDE.md)", + "author": { + "name": "duyet" + }, + "logo": "assets/logo.svg", + "keywords": ["docs-generator", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/", + "hooks": "./hooks/hooks.json" +} diff --git a/docs-generator/assets/logo.svg b/docs-generator/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/docs-generator/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/docs-generator/scripts/generate-docs.sh b/docs-generator/scripts/generate-docs.sh index 381f12c..c9661af 100755 --- a/docs-generator/scripts/generate-docs.sh +++ b/docs-generator/scripts/generate-docs.sh @@ -1,7 +1,7 @@ #!/bin/bash # Main Documentation Generator # Generates root README.md and plugin CLAUDE.md files -# shellcheck disable=SC2034,SC2155 +# shellcheck disable=SC2034,SC2155,SC1091 set -euo pipefail @@ -17,45 +17,47 @@ source "$LIB_DIR/emoji-mapper.sh" # Main generation function generate_all_docs() { - echo "Scanning plugins from marketplace.json..." >&2 + echo "Scanning plugins from marketplace.json..." >&2 - # Get list of all plugins - plugins=$(scan_plugins "$MARKETPLACE_ROOT") + # Get list of all plugins + plugins=$(scan_plugins "$MARKETPLACE_ROOT") - if [[ -z "$plugins" ]]; then - echo "No plugins found in marketplace.json" >&2 - return 1 - fi + if [[ -z "$plugins" ]]; then + echo "No plugins found in marketplace.json" >&2 + return 1 + fi - echo "Found $(echo "$plugins" | wc -l) plugins" >&2 + echo "Found $(echo "$plugins" | wc -l) plugins" >&2 - # Generate root README.md - generate_root_readme + # Generate root README.md + generate_root_readme - # Generate CLAUDE.md for each plugin - for plugin in $plugins; do - local plugin_dir="$MARKETPLACE_ROOT/$plugin" - if [[ -d "$plugin_dir" ]]; then - generate_plugin_claude_md "$plugin_dir" - fi - done + # Generate CLAUDE.md for each plugin + for plugin in $plugins; do + local plugin_dir="$MARKETPLACE_ROOT/$plugin" + if [[ -d "$plugin_dir" ]]; then + generate_plugin_claude_md "$plugin_dir" + fi + done - echo "Documentation generation complete" >&2 + echo "Documentation generation complete" >&2 } # Generate root README.md generate_root_readme() { - local output="$MARKETPLACE_ROOT/README.md" - local plugins=$(scan_plugins "$MARKETPLACE_ROOT") + local output="$MARKETPLACE_ROOT/README.md" + local plugins=$(scan_plugins "$MARKETPLACE_ROOT") - # Start building README - cat > "$output" << 'EOF' -# Claude Plugins Marketplace + # Start building README + cat >"$output" <<'EOF' +# Claude/Codex/Grok Plugins Marketplace -> Extend Claude Code with specialized agents, commands, and skills. +> Extend Claude Code, Codex, Grok Build, and Grok Bot with specialized agents, commands, and skills. ## Quick Install +### Claude Code + ```bash # Add marketplace /plugin marketplace add duyet/codex-claude-plugins @@ -63,48 +65,55 @@ generate_root_readme() { # Install plugins EOF - # Add install commands for each plugin - for plugin in $plugins; do - echo "/plugin install ${plugin}@duyet-claude-plugins" >> "$output" - done + # Add install commands for each plugin + for plugin in $plugins; do + echo "/plugin install ${plugin}@duyet-claude-plugins" >>"$output" + done + + cat >>"$output" <<'EOF' +``` - cat >> "$output" << 'EOF' +### Grok Build / Grok Bot + +```bash +grok plugin marketplace add duyet/codex-claude-plugins +grok plugin install --trust ``` +Codex uses `.agents/plugins/marketplace.json`. Plugin logos live at `assets/logo.svg` in each plugin. + --- ## Plugins at a Glance | Plugin | Type | What it does | -|--------|------|--------------| +| --- | --- | --- | EOF - # Generate table rows - for plugin in $plugins; do - local plugin_dir="$MARKETPLACE_ROOT/$plugin" - local plugin_json="$plugin_dir/.claude-plugin/plugin.json" + # Generate table rows + for plugin in $plugins; do + local plugin_dir="$MARKETPLACE_ROOT/$plugin" + local plugin_json="$plugin_dir/.claude-plugin/plugin.json" - if [[ ! -f "$plugin_json" ]]; then - continue - fi + if [[ ! -f "$plugin_json" ]]; then + continue + fi - local name=$(jq -r '.name // "'"$plugin"'"' "$plugin_json" 2>/dev/null || echo "$plugin") - local description=$(jq -r '.description // ""' "$plugin_json" 2>/dev/null) - local type=$(detect_plugin_type "$plugin_dir") - local emoji=$(assign_emoji "$plugin") + local name=$(jq -r '.name // "'"$plugin"'"' "$plugin_json" 2>/dev/null || echo "$plugin") + local description=$(jq -r '.description // ""' "$plugin_json" 2>/dev/null) + local type=$(detect_plugin_type "$plugin_dir") + local emoji=$(assign_emoji "$plugin") - # Create short description from full description (first 40 chars) - local short_desc=$(echo "$description" | cut -c1-40) - if [[ ${#description} -gt 40 ]]; then - short_desc="${short_desc}..." - fi + # Create short description from full description (first 40 chars) + local short_desc=$(echo "$description" | cut -c1-40) + if [[ ${#description} -gt 40 ]]; then + short_desc="${short_desc}..." + fi - # Escape special markdown characters in link - local anchor_link=$(echo "$name" | sed 's/ /-/g' | sed 's/\([_\*`\[\]()]\)/\\\1/g') - echo "| [$emoji $name](#${emoji}-$(echo "$name" | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g')) | $type | $short_desc |" >> "$output" - done + echo "| [$emoji $name](./${plugin}/) | $type | $short_desc |" >>"$output" + done - cat >> "$output" << 'EOF' + cat >>"$output" <<'EOF' --- @@ -113,58 +122,66 @@ EOF EOF - # Generate plugin detail sections - for plugin in $plugins; do - local plugin_dir="$MARKETPLACE_ROOT/$plugin" - local plugin_json="$plugin_dir/.claude-plugin/plugin.json" - - if [[ ! -f "$plugin_json" ]]; then - continue - fi - - local name=$(jq -r '.name // "'"$plugin"'"' "$plugin_json" 2>/dev/null || echo "$plugin") - local description=$(jq -r '.description // ""' "$plugin_json" 2>/dev/null) - local emoji=$(assign_emoji "$plugin") - - echo "### $emoji $name" >> "$output" - echo "" >> "$output" - echo "**$description**" >> "$output" - echo "" >> "$output" - - # Show example commands - local commands=$(extract_commands "$plugin_dir") - if [[ -n "$commands" ]]; then - echo '```bash' >> "$output" - echo "$commands" | head -3 >> "$output" - echo '```' >> "$output" - echo "" >> "$output" - fi - - # Show components - local agents=$(extract_agents "$plugin_dir") - local skills=$(extract_skills "$plugin_dir") - - if [[ -n "$agents" ]] || [[ -n "$skills" ]]; then - echo "**Components:**" >> "$output" - if [[ -n "$agents" ]]; then - echo "" >> "$output" - echo "Agents:" >> "$output" - echo "$agents" >> "$output" - fi - if [[ -n "$skills" ]]; then - echo "" >> "$output" - echo "Skills:" >> "$output" - echo "$skills" >> "$output" - fi - echo "" >> "$output" - fi - - echo "---" >> "$output" - echo "" >> "$output" - done - - # Add footer sections - cat >> "$output" << 'EOF' + # Generate plugin detail sections + for plugin in $plugins; do + local plugin_dir="$MARKETPLACE_ROOT/$plugin" + local plugin_json="$plugin_dir/.claude-plugin/plugin.json" + + if [[ ! -f "$plugin_json" ]]; then + continue + fi + + local name=$(jq -r '.name // "'"$plugin"'"' "$plugin_json" 2>/dev/null || echo "$plugin") + local description=$(jq -r '.description // ""' "$plugin_json" 2>/dev/null) + local emoji=$(assign_emoji "$plugin") + + { + echo "### $emoji $name" + echo "" + echo "**$description**" + echo "" + } >>"$output" + + # Show example commands + local commands=$(extract_commands "$plugin_dir") + if [[ -n "$commands" ]]; then + { + echo '```bash' + echo "$commands" | head -3 + echo '```' + echo "" + } >>"$output" + fi + + # Show components + local agents=$(extract_agents "$plugin_dir") + local skills=$(extract_skills "$plugin_dir") + + if [[ -n "$agents" ]] || [[ -n "$skills" ]]; then + { + echo "**Components:**" + if [[ -n "$agents" ]]; then + echo "" + echo "Agents:" + echo "${agents// - /- }" + fi + if [[ -n "$skills" ]]; then + echo "" + echo "Skills:" + echo "${skills// - /- }" + fi + echo "" + } >>"$output" + fi + + { + echo "---" + echo "" + } >>"$output" + done + + # Add footer sections + cat >>"$output" <<'EOF' ## Manual Installation @@ -187,43 +204,47 @@ Add to `~/.claude/settings.json`: ## Contributing -``` +```text your-plugin/ -├── .claude-plugin/plugin.json # name, version, description -├── agents/ # .md with YAML frontmatter -├── commands/ # slash commands -├── skills/ # reusable knowledge -└── hooks/hooks.json # lifecycle hooks +├── .claude-plugin/plugin.json # name, version, description, logo +├── .codex-plugin/plugin.json # Codex manifest and interface metadata +├── .grok-plugin/plugin.json # Grok Bot / Grok Build manifest +├── .grok-build-plugin/plugin.json # Grok Build interface metadata +├── assets/logo.svg # rendered by every listed harness +├── agents/ # .md with YAML frontmatter +├── commands/ # slash commands +├── skills/ # reusable knowledge +└── hooks/hooks.json # lifecycle hooks ``` -Update `marketplace.json` → PR → Done +Update `marketplace.json`, `.claude-plugin/marketplace.json`, `.agents/plugins/marketplace.json`, `.grok-plugin/marketplace.json`, and the harness manifests. Run `bash scripts/validate-plugins.sh`. --- MIT License EOF - echo "Generated README.md" >&2 + echo "Generated README.md" >&2 } # Generate CLAUDE.md for a single plugin generate_plugin_claude_md() { - local plugin_dir="$1" - local plugin_json="$plugin_dir/.claude-plugin/plugin.json" - local output="$plugin_dir/CLAUDE.md" + local plugin_dir="$1" + local plugin_json="$plugin_dir/.claude-plugin/plugin.json" + local output="$plugin_dir/CLAUDE.md" - if [[ ! -f "$plugin_json" ]]; then - return - fi + if [[ ! -f "$plugin_json" ]]; then + return + fi - local name=$(jq -r '.name // "unknown"' "$plugin_json" 2>/dev/null) - local version=$(jq -r '.version // "1.0.0"' "$plugin_json" 2>/dev/null) - local description=$(jq -r '.description // ""' "$plugin_json" 2>/dev/null) + local name=$(jq -r '.name // "unknown"' "$plugin_json" 2>/dev/null) + local version=$(jq -r '.version // "1.0.0"' "$plugin_json" 2>/dev/null) + local description=$(jq -r '.description // ""' "$plugin_json" 2>/dev/null) - # Capitalize first letter (portable method for bash 3+) - local name_title="$(echo "$name" | sed 's/./\U&/')" + # Capitalize first letter (bash 4+) + local name_title="${name^}" - cat > "$output" << EOF + cat >"$output" <> "$output" - echo "" >> "$output" - echo "$commands" >> "$output" - echo "" >> "$output" - fi - - # Add agents section - local agents=$(extract_agents "$plugin_dir") - if [[ -n "$agents" ]]; then - echo "### Agents" >> "$output" - echo "" >> "$output" - echo "$agents" >> "$output" - echo "" >> "$output" - fi - - # Add skills section - local skills=$(extract_skills "$plugin_dir") - if [[ -n "$skills" ]]; then - echo "### Skills" >> "$output" - echo "" >> "$output" - echo "$skills" >> "$output" - echo "" >> "$output" - fi - - # Add commit convention - cat >> "$output" << EOF + # Add commands section + local commands=$(extract_commands "$plugin_dir") + if [[ -n "$commands" ]]; then + { + echo "### Commands" + echo "" + echo "${commands// - /- }" + echo "" + } >>"$output" + fi + + # Add agents section + local agents=$(extract_agents "$plugin_dir") + if [[ -n "$agents" ]]; then + { + echo "### Agents" + echo "" + echo "${agents// - /- }" + echo "" + } >>"$output" + fi + + # Add skills section + local skills=$(extract_skills "$plugin_dir") + if [[ -n "$skills" ]]; then + { + echo "### Skills" + echo "" + echo "${skills// - /- }" + echo "" + } >>"$output" + fi + + # Add commit convention + cat >>"$output" <\` **Generated by docs-generator v1.0.0** EOF - echo "Generated CLAUDE.md for $name" >&2 + echo "Generated CLAUDE.md for $name" >&2 } # Run generation diff --git a/duyetbot/.claude-plugin/plugin.json b/duyetbot/.claude-plugin/plugin.json index d02100f..edbf14c 100644 --- a/duyetbot/.claude-plugin/plugin.json +++ b/duyetbot/.claude-plugin/plugin.json @@ -4,5 +4,6 @@ "version": "1.8.1", "author": { "name": "duyet" - } + }, + "logo": "./assets/logo.svg" } diff --git a/duyetbot/.codex-plugin/plugin.json b/duyetbot/.codex-plugin/plugin.json index 963f02a..4ec12df 100644 --- a/duyetbot/.codex-plugin/plugin.json +++ b/duyetbot/.codex-plugin/plugin.json @@ -12,10 +12,8 @@ "shortDescription": "Pragmatic software development companion with engineering discipline and transparent execution.", "developerName": "duyet", "category": "Productivity", - "capabilities": [ - "Skill", - "Command" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/duyetbot/.grok-build-plugin/plugin.json b/duyetbot/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..bc0b11c --- /dev/null +++ b/duyetbot/.grok-build-plugin/plugin.json @@ -0,0 +1,20 @@ +{ + "name": "duyetbot", + "version": "1.8.1", + "description": "Pragmatic software development companion with engineering discipline and transparent execution.", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "commands": "./commands/", + "interface": { + "displayName": "duyetbot", + "shortDescription": "Pragmatic software development companion with engineering discipline and transparent execution.", + "developerName": "duyet", + "category": "Productivity", + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/duyetbot/.grok-plugin/plugin.json b/duyetbot/.grok-plugin/plugin.json new file mode 100644 index 0000000..00132e3 --- /dev/null +++ b/duyetbot/.grok-plugin/plugin.json @@ -0,0 +1,15 @@ +{ + "name": "duyetbot", + "version": "1.8.1", + "description": "Pragmatic software development companion with engineering discipline and transparent execution.", + "author": { + "name": "duyet" + }, + "logo": "assets/logo.svg", + "keywords": ["duyetbot", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/", + "agents": "./agents/", + "hooks": "./hooks/hooks.json", + "mcpServers": "./.mcp.json" +} diff --git a/duyetbot/assets/logo.svg b/duyetbot/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/duyetbot/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/fix/.claude-plugin/plugin.json b/fix/.claude-plugin/plugin.json index f114702..6f7be96 100644 --- a/fix/.claude-plugin/plugin.json +++ b/fix/.claude-plugin/plugin.json @@ -4,5 +4,6 @@ "version": "1.0.1", "author": { "name": "duyet" - } + }, + "logo": "./assets/logo.svg" } diff --git a/fix/.codex-plugin/plugin.json b/fix/.codex-plugin/plugin.json index 644c080..0a7e11e 100644 --- a/fix/.codex-plugin/plugin.json +++ b/fix/.codex-plugin/plugin.json @@ -11,10 +11,8 @@ "shortDescription": "Fix issues, tests, and CI failures with intelligent problem detection and resolution", "developerName": "duyet", "category": "Productivity", - "capabilities": [ - "Skill", - "Command" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/fix/.grok-build-plugin/plugin.json b/fix/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..4ada017 --- /dev/null +++ b/fix/.grok-build-plugin/plugin.json @@ -0,0 +1,19 @@ +{ + "name": "fix", + "version": "1.0.1", + "description": "Fix issues, tests, and CI failures with intelligent problem detection and resolution", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "interface": { + "displayName": "Fix", + "shortDescription": "Fix issues, tests, and CI failures with intelligent problem detection and resolution", + "developerName": "duyet", + "category": "Productivity", + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/fix/.grok-plugin/plugin.json b/fix/.grok-plugin/plugin.json new file mode 100644 index 0000000..f9c1c5d --- /dev/null +++ b/fix/.grok-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "fix", + "version": "1.0.1", + "description": "Fix issues, tests, and CI failures with intelligent problem detection and resolution", + "author": { + "name": "duyet" + }, + "logo": "assets/logo.svg", + "keywords": ["fix", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/" +} diff --git a/fix/assets/logo.svg b/fix/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/fix/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/frontend-design/.claude-plugin/plugin.json b/frontend-design/.claude-plugin/plugin.json index c4cb1d9..57cbf06 100644 --- a/frontend-design/.claude-plugin/plugin.json +++ b/frontend-design/.claude-plugin/plugin.json @@ -5,5 +5,6 @@ "author": { "name": "duyet", "email": "me@duyet.net" - } + }, + "logo": "./assets/logo.svg" } diff --git a/frontend-design/.codex-plugin/plugin.json b/frontend-design/.codex-plugin/plugin.json index 6e1cb86..ae9486a 100644 --- a/frontend-design/.codex-plugin/plugin.json +++ b/frontend-design/.codex-plugin/plugin.json @@ -12,9 +12,8 @@ "shortDescription": "Create distinctive, production-grade frontend interfaces avoiding AI slop aesthetics. Emphasizes shadcn/ui, Recharts, and bold design choices.", "developerName": "duyet", "category": "Design", - "capabilities": [ - "Skill" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/frontend-design/.grok-build-plugin/plugin.json b/frontend-design/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..d1044f1 --- /dev/null +++ b/frontend-design/.grok-build-plugin/plugin.json @@ -0,0 +1,20 @@ +{ + "name": "frontend-design", + "version": "1.4.0", + "description": "Create distinctive, production-grade frontend interfaces avoiding AI slop aesthetics. Emphasizes shadcn/ui, Recharts, and bold design choices.", + "author": { + "name": "duyet", + "email": "me@duyet.net" + }, + "skills": "./skills/", + "interface": { + "displayName": "Frontend Design", + "shortDescription": "Create distinctive, production-grade frontend interfaces avoiding AI slop aesthetics. Emphasizes shadcn/ui, Recharts, and bold design choices.", + "developerName": "duyet", + "category": "Design", + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/frontend-design/.grok-plugin/plugin.json b/frontend-design/.grok-plugin/plugin.json new file mode 100644 index 0000000..b6ac912 --- /dev/null +++ b/frontend-design/.grok-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "frontend-design", + "version": "1.4.0", + "description": "Create distinctive, production-grade frontend interfaces avoiding AI slop aesthetics. Emphasizes shadcn/ui, Recharts, and bold design choices.", + "author": { + "name": "duyet", + "email": "me@duyet.net" + }, + "logo": "assets/logo.svg", + "keywords": ["frontend-design", "grok", "grok-build", "grok-bot"], + "skills": "./skills/" +} diff --git a/frontend-design/assets/logo.svg b/frontend-design/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/frontend-design/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/github/.claude-plugin/plugin.json b/github/.claude-plugin/plugin.json index d990e4e..9b0be32 100644 --- a/github/.claude-plugin/plugin.json +++ b/github/.claude-plugin/plugin.json @@ -2,6 +2,9 @@ "name": "github", "version": "1.4.2", "description": "GitHub operations using gh CLI - PRs, workflows, issues, repositories, batch operations, PR babysitting with AI review bot integration, and smart branch detection", - "author": { "name": "duyetbot" }, - "license": "MIT" + "author": { + "name": "duyetbot" + }, + "license": "MIT", + "logo": "./assets/logo.svg" } diff --git a/github/.codex-plugin/plugin.json b/github/.codex-plugin/plugin.json index 79c71bd..cfbb6a8 100644 --- a/github/.codex-plugin/plugin.json +++ b/github/.codex-plugin/plugin.json @@ -12,10 +12,8 @@ "shortDescription": "GitHub operations using gh CLI - PRs, workflows, issues, repositories, batch operations, PR babysitting with AI review bot integration, and smart branch detection", "developerName": "duyetbot", "category": "Git", - "capabilities": [ - "Skill", - "Command" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/github/.grok-build-plugin/plugin.json b/github/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..d215ffe --- /dev/null +++ b/github/.grok-build-plugin/plugin.json @@ -0,0 +1,20 @@ +{ + "name": "github", + "version": "1.4.2", + "description": "GitHub operations using gh CLI - PRs, workflows, issues, repositories, batch operations, PR babysitting with AI review bot integration, and smart branch detection", + "author": { + "name": "duyetbot" + }, + "license": "MIT", + "skills": "./skills/", + "interface": { + "displayName": "GitHub", + "shortDescription": "GitHub operations using gh CLI - PRs, workflows, issues, repositories, batch operations, PR babysitting with AI review bot integration, and smart branch detection", + "developerName": "duyetbot", + "category": "Git", + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/github/.grok-plugin/plugin.json b/github/.grok-plugin/plugin.json new file mode 100644 index 0000000..24d8e15 --- /dev/null +++ b/github/.grok-plugin/plugin.json @@ -0,0 +1,13 @@ +{ + "name": "github", + "version": "1.4.2", + "description": "GitHub operations using gh CLI - PRs, workflows, issues, repositories, batch operations, PR babysitting with AI review bot integration, and smart branch detection", + "author": { + "name": "duyetbot" + }, + "license": "MIT", + "logo": "assets/logo.svg", + "keywords": ["github", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/" +} diff --git a/github/assets/logo.svg b/github/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/github/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/good-html/.claude-plugin/plugin.json b/good-html/.claude-plugin/plugin.json index 12243a7..71d2f00 100644 --- a/good-html/.claude-plugin/plugin.json +++ b/good-html/.claude-plugin/plugin.json @@ -2,5 +2,8 @@ "name": "good-html", "version": "1.0.0", "description": "Generate high-density, interactive, self-contained HTML artifacts based on Thariq Shihipar's patterns. Optimized for engineering tasks, PR reviews, and research reports.", - "author": { "name": "Gemini CLI" } + "author": { + "name": "Gemini CLI" + }, + "logo": "./assets/logo.svg" } diff --git a/good-html/.codex-plugin/plugin.json b/good-html/.codex-plugin/plugin.json index 6712872..946c946 100644 --- a/good-html/.codex-plugin/plugin.json +++ b/good-html/.codex-plugin/plugin.json @@ -2,13 +2,16 @@ "name": "good-html", "version": "1.0.0", "description": "Generate high-density, interactive, self-contained HTML artifacts based on Thariq Shihipar's patterns. Optimized for engineering tasks, PR reviews, and research reports.", - "author": { "name": "Gemini CLI" }, + "author": { + "name": "Gemini CLI" + }, "interface": { "displayName": "Good HTML", "shortDescription": "High-density interactive HTML artifacts.", "developerName": "Gemini CLI", "category": "Development", "capabilities": ["Skill"], - "logo": "https://raw.githubusercontent.com/thariqs/html-effectiveness/main/assets/logo.svg" + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/good-html/.grok-build-plugin/plugin.json b/good-html/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..cb81623 --- /dev/null +++ b/good-html/.grok-build-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "name": "good-html", + "version": "1.0.0", + "description": "Generate high-density, interactive, self-contained HTML artifacts based on Thariq Shihipar's patterns. Optimized for engineering tasks, PR reviews, and research reports.", + "author": { + "name": "Gemini CLI" + }, + "interface": { + "displayName": "Good HTML", + "shortDescription": "High-density interactive HTML artifacts.", + "developerName": "Gemini CLI", + "category": "Development", + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/good-html/.grok-plugin/plugin.json b/good-html/.grok-plugin/plugin.json new file mode 100644 index 0000000..3d5b603 --- /dev/null +++ b/good-html/.grok-plugin/plugin.json @@ -0,0 +1,10 @@ +{ + "name": "good-html", + "version": "1.0.0", + "description": "Generate high-density, interactive, self-contained HTML artifacts based on Thariq Shihipar's patterns. Optimized for engineering tasks, PR reviews, and research reports.", + "author": { + "name": "Gemini CLI" + }, + "logo": "assets/logo.svg", + "keywords": ["good-html", "grok", "grok-build", "grok-bot"] +} diff --git a/good-html/assets/logo.svg b/good-html/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/good-html/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/interview/.claude-plugin/plugin.json b/interview/.claude-plugin/plugin.json index ef13fa2..8872eb2 100644 --- a/interview/.claude-plugin/plugin.json +++ b/interview/.claude-plugin/plugin.json @@ -5,5 +5,6 @@ "author": { "name": "duyet", "email": "me@duyet.net" - } + }, + "logo": "./assets/logo.svg" } diff --git a/interview/.codex-plugin/plugin.json b/interview/.codex-plugin/plugin.json index df75f3b..31c3eab 100644 --- a/interview/.codex-plugin/plugin.json +++ b/interview/.codex-plugin/plugin.json @@ -13,10 +13,8 @@ "shortDescription": "Conduct in-depth requirements interviews using Socratic questioning to clarify implementation details before coding", "developerName": "duyet", "category": "Productivity", - "capabilities": [ - "Skill", - "Command" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/interview/.grok-build-plugin/plugin.json b/interview/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..13af744 --- /dev/null +++ b/interview/.grok-build-plugin/plugin.json @@ -0,0 +1,21 @@ +{ + "name": "interview", + "version": "1.0.1", + "description": "Conduct in-depth requirements interviews using Socratic questioning to clarify implementation details before coding", + "author": { + "name": "duyet", + "email": "me@duyet.net" + }, + "skills": "./skills/", + "commands": "./commands/", + "interface": { + "displayName": "Interview", + "shortDescription": "Conduct in-depth requirements interviews using Socratic questioning to clarify implementation details before coding", + "developerName": "duyet", + "category": "Productivity", + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/interview/.grok-plugin/plugin.json b/interview/.grok-plugin/plugin.json new file mode 100644 index 0000000..589ce7b --- /dev/null +++ b/interview/.grok-plugin/plugin.json @@ -0,0 +1,13 @@ +{ + "name": "interview", + "version": "1.0.1", + "description": "Conduct in-depth requirements interviews using Socratic questioning to clarify implementation details before coding", + "author": { + "name": "duyet", + "email": "me@duyet.net" + }, + "logo": "assets/logo.svg", + "keywords": ["interview", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/" +} diff --git a/interview/assets/logo.svg b/interview/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/interview/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/kb/.claude-plugin/plugin.json b/kb/.claude-plugin/plugin.json index 5048d89..4cca588 100644 --- a/kb/.claude-plugin/plugin.json +++ b/kb/.claude-plugin/plugin.json @@ -8,5 +8,6 @@ }, "homepage": "https://github.com/duyet/codex-claude-plugins", "repository": "https://github.com/duyet/codex-claude-plugins", - "license": "MIT" + "license": "MIT", + "logo": "./assets/logo.svg" } diff --git a/kb/.codex-plugin/plugin.json b/kb/.codex-plugin/plugin.json index 6409df4..1c1b13e 100644 --- a/kb/.codex-plugin/plugin.json +++ b/kb/.codex-plugin/plugin.json @@ -15,6 +15,8 @@ "capabilities": ["Skill", "Command"], "links": { "homepage": "https://github.com/duyet/codex-claude-plugins" - } + }, + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/kb/.grok-build-plugin/plugin.json b/kb/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..31a05cc --- /dev/null +++ b/kb/.grok-build-plugin/plugin.json @@ -0,0 +1,23 @@ +{ + "name": "kb", + "version": "1.1.0", + "description": "Knowledge base maintenance skills. Initialize a shared-brain kb, then consolidate, dedupe, prune, refresh, and forget notes in a markdown KB.", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "commands": "./commands/", + "interface": { + "displayName": "Knowledge Base", + "shortDescription": "Initialize and maintain a markdown knowledge base: consolidate, dedupe, prune, and forget notes.", + "developerName": "duyet", + "category": "productivity", + "capabilities": ["Skill", "Command"], + "links": { + "homepage": "https://github.com/duyet/codex-claude-plugins" + }, + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/kb/.grok-plugin/plugin.json b/kb/.grok-plugin/plugin.json new file mode 100644 index 0000000..82aa339 --- /dev/null +++ b/kb/.grok-plugin/plugin.json @@ -0,0 +1,16 @@ +{ + "name": "kb", + "version": "1.1.0", + "description": "Knowledge base maintenance skills. Initialize a shared-brain kb, then consolidate, dedupe, prune, refresh, and forget notes in a markdown KB.", + "author": { + "name": "duyet", + "url": "https://github.com/duyet" + }, + "license": "MIT", + "homepage": "https://github.com/duyet/codex-claude-plugins", + "repository": "https://github.com/duyet/codex-claude-plugins", + "logo": "assets/logo.svg", + "keywords": ["kb", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/" +} diff --git a/kb/assets/logo.svg b/kb/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/kb/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/marketplace.json b/marketplace.json index bfad9bd..8daafe9 100644 --- a/marketplace.json +++ b/marketplace.json @@ -1,7 +1,7 @@ { "name": "duyet-claude-plugins", - "description": "A collection of production-quality plugins for Claude Code including autonomous agents, workflow automation, and developer tools.", - "version": "1.0.0", + "description": "A collection of production-quality plugins for Claude Code, Codex, Grok Build, and Grok Bot including autonomous agents, workflow automation, and developer tools.", + "version": "1.1.0", "author": { "name": "duyet", "url": "https://github.com/duyet" @@ -17,7 +17,8 @@ "description": "Leader, Senior Engineer, and Junior Engineer agents for coordinated parallel task execution", "version": "1.9.1", "type": "skill", - "category": "agents" + "category": "agents", + "logo": "./team-agents/assets/logo.svg" }, { "name": "commit", @@ -25,7 +26,8 @@ "description": "Create a Git commit with semantic commit message format and PR workflow with templates", "version": "1.3.2", "type": "command", - "category": "git" + "category": "git", + "logo": "./commit/assets/logo.svg" }, { "name": "frontend-design", @@ -33,7 +35,8 @@ "description": "Create distinctive, production-grade frontend interfaces avoiding AI slop aesthetics", "version": "1.4.0", "type": "skill", - "category": "design" + "category": "design", + "logo": "./frontend-design/assets/logo.svg" }, { "name": "interview", @@ -41,7 +44,8 @@ "description": "Conduct in-depth requirements interviews using Socratic questioning", "version": "1.0.1", "type": "command", - "category": "productivity" + "category": "productivity", + "logo": "./interview/assets/logo.svg" }, { "name": "statusline", @@ -49,7 +53,8 @@ "description": "Configurable status bar showing context usage, API rate limits, git branch, and active tools", "version": "1.9.0", "type": "hook", - "category": "ui" + "category": "ui", + "logo": "./statusline/assets/logo.svg" }, { "name": "orchestration", @@ -57,7 +62,8 @@ "description": "Orchestrator skill for managing parallel agent workstreams", "version": "1.1.0", "type": "skill", - "category": "agents" + "category": "agents", + "logo": "./orchestration/assets/logo.svg" }, { "name": "duyetbot", @@ -65,7 +71,8 @@ "description": "Pragmatic software development companion with engineering discipline", "version": "1.8.1", "type": "skill", - "category": "productivity" + "category": "productivity", + "logo": "./duyetbot/assets/logo.svg" }, { "name": "docs-generator", @@ -73,7 +80,8 @@ "description": "Automatically generate and maintain plugin documentation", "version": "1.0.1", "type": "hook", - "category": "docs" + "category": "docs", + "logo": "./docs-generator/assets/logo.svg" }, { "name": "github", @@ -81,7 +89,8 @@ "description": "GitHub operations using gh CLI - PRs, issues, workflows, batch operations, PR babysitting with AI review bot integration, and smart branch detection", "version": "1.4.2", "type": "skill", - "category": "git" + "category": "git", + "logo": "./github/assets/logo.svg" }, { "name": "fix", @@ -89,7 +98,8 @@ "description": "Fix issues, tests, and CI failures with intelligent problem detection", "version": "1.0.1", "type": "command", - "category": "productivity" + "category": "productivity", + "logo": "./fix/assets/logo.svg" }, { "name": "simplify", @@ -97,7 +107,8 @@ "description": "Review changed code for reuse, quality, and efficiency, then simplify issues found", "version": "1.0.1", "type": "command", - "category": "productivity" + "category": "productivity", + "logo": "./simplify/assets/logo.svg" }, { "name": "clickhouse", @@ -105,7 +116,8 @@ "description": "Comprehensive ClickHouse knowledge base from Altinity KB + official docs", "version": "1.4.1", "type": "skill", - "category": "database" + "category": "database", + "logo": "./clickhouse/assets/logo.svg" }, { "name": "prompt-engineering", @@ -113,7 +125,8 @@ "description": "Prompt engineering techniques for Grok, Claude, and Gemini LLMs", "version": "1.1.1", "type": "skill", - "category": "productivity" + "category": "productivity", + "logo": "./prompt-engineering/assets/logo.svg" }, { "name": "clickhouse-monitoring", @@ -121,7 +134,8 @@ "description": "Agent Skill for the ClickHouse Monitor dashboard - a real-time monitoring and observability tool for ClickHouse clusters", "version": "1.1.1", "type": "skill", - "category": "monitoring" + "category": "monitoring", + "logo": "./clickhouse-monitoring/assets/logo.svg" }, { "name": "unsloth-training", @@ -129,7 +143,8 @@ "description": "Fine-tune LLMs with Unsloth using GRPO or SFT. Dataset prep, synthetic data, environment flags, MLX (Apple Silicon), FP8, vision, mobile export, GGUF.", "version": "1.0.2", "type": "skill", - "category": "ml" + "category": "ml", + "logo": "./unsloth-training/assets/logo.svg" }, { "name": "good-html", @@ -137,7 +152,8 @@ "description": "Generate or review high-density, interactive, self-contained HTML artifacts based on Thariq Shihipar's patterns.", "version": "1.0.0", "type": "skill", - "category": "design" + "category": "design", + "logo": "./good-html/assets/logo.svg" }, { "name": "anyrouter", @@ -145,7 +161,8 @@ "description": "Wire AnyRouter into coding agents. Universal OpenAI-compatible LLM gateway for 150+ models, migration recipes from Anthropic/OpenAI/OpenRouter, and a remote MCP server for keys and credits.", "version": "1.0.1", "type": "skill", - "category": "ai" + "category": "ai", + "logo": "./anyrouter/assets/logo.svg" }, { "name": "sag-notify", @@ -153,7 +170,8 @@ "description": "Spoken voice notifications via sag (ElevenLabs TTS): skill-driven, Claude calls sag directly to speak a short alert just before it asks you something and a one-line summary when work finishes, naming the project. Configurable voice and language.", "version": "2.1.2", "type": "skill", - "category": "ui" + "category": "ui", + "logo": "./sag-notify/assets/logo.svg" }, { "name": "build-macos-apps", @@ -161,7 +179,8 @@ "description": "Build, debug, instrument, and implement macOS apps with SwiftUI and AppKit guidance, codesigning, packaging, and telemetry workflows.", "version": "1.0.1", "type": "skill", - "category": "development" + "category": "development", + "logo": "./build-macos-apps/assets/logo.svg" }, { "name": "build-ios-apps", @@ -169,7 +188,8 @@ "description": "Build, profile, debug, and refine iOS apps with SwiftUI and Xcode workflows — App Intents, Simulator debugging, performance profiling, memory leak detection, and on-device AI with Apple Intelligence, Foundation Models, and Core AI.", "version": "1.0.1", "type": "skill", - "category": "development" + "category": "development", + "logo": "./build-ios-apps/assets/logo.svg" }, { "name": "agent-loop", @@ -177,7 +197,8 @@ "description": "Continuous agent loop for overnight/day repository maintenance. Orchestrates triage, autoreview, browser automation, and parallel agent work across threads. Wake every 5 min, direct work, land autonomously.", "version": "0.4.0", "type": "skill", - "category": "automation" + "category": "automation", + "logo": "./agent-loop/assets/logo.svg" }, { "name": "kb", @@ -185,7 +206,8 @@ "description": "Knowledge base maintenance skills. Initialize a shared-brain kb, then consolidate, dedupe, prune, refresh, and forget notes in a markdown KB.", "version": "1.1.0", "type": "skill", - "category": "productivity" + "category": "productivity", + "logo": "./kb/assets/logo.svg" }, { "name": "okf", @@ -193,7 +215,8 @@ "description": "Open Knowledge Format (OKF) tooling. Author, initialize, validate, render, and refactor knowledge into vendor-neutral OKF v0.1 bundles: markdown files with YAML frontmatter.", "version": "1.1.0", "type": "skill", - "category": "productivity" + "category": "productivity", + "logo": "./okf/assets/logo.svg" }, { "name": "command-code", @@ -201,11 +224,12 @@ "description": "Drive the Command Code CLI (`cmd`) and orchestrate it as a headless sub-agent — fan out `cmd -p --yolo --max-turns 100000` workers across isolated git worktrees to implement issues and tasks in parallel.", "version": "1.0.0", "type": "skill", - "category": "development" + "category": "development", + "logo": "./command-code/assets/logo.svg" } ], "metadata": { - "lastUpdated": "2026-07-05", + "lastUpdated": "2026-09-02", "totalPlugins": 24, "categories": [ "agents", @@ -220,6 +244,7 @@ "ai", "development", "automation" - ] + ], + "logo": "./assets/logo.svg" } } diff --git a/okf/.claude-plugin/plugin.json b/okf/.claude-plugin/plugin.json index 690e261..41aaddb 100644 --- a/okf/.claude-plugin/plugin.json +++ b/okf/.claude-plugin/plugin.json @@ -8,5 +8,6 @@ }, "homepage": "https://github.com/duyet/codex-claude-plugins", "repository": "https://github.com/duyet/codex-claude-plugins", - "license": "MIT" + "license": "MIT", + "logo": "./assets/logo.svg" } diff --git a/okf/.codex-plugin/plugin.json b/okf/.codex-plugin/plugin.json index 355cc66..faa6917 100644 --- a/okf/.codex-plugin/plugin.json +++ b/okf/.codex-plugin/plugin.json @@ -14,6 +14,8 @@ "capabilities": ["Skill"], "links": { "homepage": "https://github.com/duyet/codex-claude-plugins" - } + }, + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/okf/.grok-build-plugin/plugin.json b/okf/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..9574661 --- /dev/null +++ b/okf/.grok-build-plugin/plugin.json @@ -0,0 +1,22 @@ +{ + "name": "okf", + "version": "1.1.0", + "description": "Open Knowledge Format (OKF) tooling. Author, initialize, validate, render, and refactor knowledge into vendor-neutral OKF v0.1 bundles: markdown files with YAML frontmatter.", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "interface": { + "displayName": "Open Knowledge Format", + "shortDescription": "Author, validate, render, and refactor knowledge into OKF v0.1 bundles (markdown + YAML frontmatter).", + "developerName": "duyet", + "category": "productivity", + "capabilities": ["Skill"], + "links": { + "homepage": "https://github.com/duyet/codex-claude-plugins" + }, + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/okf/.grok-plugin/plugin.json b/okf/.grok-plugin/plugin.json new file mode 100644 index 0000000..69c02f1 --- /dev/null +++ b/okf/.grok-plugin/plugin.json @@ -0,0 +1,15 @@ +{ + "name": "okf", + "version": "1.1.0", + "description": "Open Knowledge Format (OKF) tooling. Author, initialize, validate, render, and refactor knowledge into vendor-neutral OKF v0.1 bundles: markdown files with YAML frontmatter.", + "author": { + "name": "duyet", + "url": "https://github.com/duyet" + }, + "license": "MIT", + "homepage": "https://github.com/duyet/codex-claude-plugins", + "repository": "https://github.com/duyet/codex-claude-plugins", + "logo": "assets/logo.svg", + "keywords": ["okf", "grok", "grok-build", "grok-bot"], + "skills": "./skills/" +} diff --git a/okf/assets/logo.svg b/okf/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/okf/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/orchestration/.claude-plugin/plugin.json b/orchestration/.claude-plugin/plugin.json index 5802cf9..abc0c2b 100644 --- a/orchestration/.claude-plugin/plugin.json +++ b/orchestration/.claude-plugin/plugin.json @@ -4,5 +4,6 @@ "version": "1.1.0", "author": { "name": "duyet" - } + }, + "logo": "./assets/logo.svg" } diff --git a/orchestration/.codex-plugin/plugin.json b/orchestration/.codex-plugin/plugin.json index f5e55f7..548df04 100644 --- a/orchestration/.codex-plugin/plugin.json +++ b/orchestration/.codex-plugin/plugin.json @@ -11,9 +11,8 @@ "shortDescription": "Orchestrator skill for managing parallel agent workstreams. Transform complex requests into coordinated multi-agent execution with elegant result synthesis.", "developerName": "duyet", "category": "Agents", - "capabilities": [ - "Skill" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/orchestration/.grok-build-plugin/plugin.json b/orchestration/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..a89ef2f --- /dev/null +++ b/orchestration/.grok-build-plugin/plugin.json @@ -0,0 +1,19 @@ +{ + "name": "orchestration", + "version": "1.1.0", + "description": "Orchestrator skill for managing parallel agent workstreams. Transform complex requests into coordinated multi-agent execution with elegant result synthesis.", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "interface": { + "displayName": "Orchestration", + "shortDescription": "Orchestrator skill for managing parallel agent workstreams. Transform complex requests into coordinated multi-agent execution with elegant result synthesis.", + "developerName": "duyet", + "category": "Agents", + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/orchestration/.grok-plugin/plugin.json b/orchestration/.grok-plugin/plugin.json new file mode 100644 index 0000000..ea44b2d --- /dev/null +++ b/orchestration/.grok-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "orchestration", + "version": "1.1.0", + "description": "Orchestrator skill for managing parallel agent workstreams. Transform complex requests into coordinated multi-agent execution with elegant result synthesis.", + "author": { + "name": "duyet" + }, + "logo": "assets/logo.svg", + "keywords": ["orchestration", "grok", "grok-build", "grok-bot"], + "skills": "./skills/" +} diff --git a/orchestration/assets/logo.svg b/orchestration/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/orchestration/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/prompt-engineering/.claude-plugin/plugin.json b/prompt-engineering/.claude-plugin/plugin.json index 95852ec..26d4ea5 100644 --- a/prompt-engineering/.claude-plugin/plugin.json +++ b/prompt-engineering/.claude-plugin/plugin.json @@ -2,5 +2,8 @@ "name": "prompt-engineering", "version": "1.1.1", "description": "Prompt engineering skills for Grok, Claude, and Gemini LLMs with model-specific guidance and universal techniques", - "author": { "name": "duyetbot" } + "author": { + "name": "duyetbot" + }, + "logo": "./assets/logo.svg" } diff --git a/prompt-engineering/.codex-plugin/plugin.json b/prompt-engineering/.codex-plugin/plugin.json index 2e6cc8a..716515a 100644 --- a/prompt-engineering/.codex-plugin/plugin.json +++ b/prompt-engineering/.codex-plugin/plugin.json @@ -11,9 +11,8 @@ "shortDescription": "Prompt engineering skills for Grok, Claude, and Gemini LLMs with model-specific guidance and universal techniques", "developerName": "duyetbot", "category": "Productivity", - "capabilities": [ - "Skill" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/prompt-engineering/.grok-build-plugin/plugin.json b/prompt-engineering/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..3843262 --- /dev/null +++ b/prompt-engineering/.grok-build-plugin/plugin.json @@ -0,0 +1,19 @@ +{ + "name": "prompt-engineering", + "version": "1.1.1", + "description": "Prompt engineering skills for Grok, Claude, and Gemini LLMs with model-specific guidance and universal techniques", + "author": { + "name": "duyetbot" + }, + "skills": "./skills/", + "interface": { + "displayName": "Prompt Engineering", + "shortDescription": "Prompt engineering skills for Grok, Claude, and Gemini LLMs with model-specific guidance and universal techniques", + "developerName": "duyetbot", + "category": "Productivity", + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/prompt-engineering/.grok-plugin/plugin.json b/prompt-engineering/.grok-plugin/plugin.json new file mode 100644 index 0000000..9295966 --- /dev/null +++ b/prompt-engineering/.grok-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "prompt-engineering", + "version": "1.1.1", + "description": "Prompt engineering skills for Grok, Claude, and Gemini LLMs with model-specific guidance and universal techniques", + "author": { + "name": "duyetbot" + }, + "logo": "assets/logo.svg", + "keywords": ["prompt-engineering", "grok", "grok-build", "grok-bot"], + "skills": "./skills/" +} diff --git a/prompt-engineering/assets/logo.svg b/prompt-engineering/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/prompt-engineering/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/sag-notify/.claude-plugin/plugin.json b/sag-notify/.claude-plugin/plugin.json index 20ae05a..271caaf 100644 --- a/sag-notify/.claude-plugin/plugin.json +++ b/sag-notify/.claude-plugin/plugin.json @@ -4,5 +4,6 @@ "description": "Spoken voice notifications via sag (ElevenLabs TTS). Skill-driven: Claude calls sag directly to speak a short alert just before it asks you something, and a one-line summary when work finishes — naming the project. Configurable voice and language.", "author": { "name": "duyet" - } + }, + "logo": "./assets/logo.svg" } diff --git a/sag-notify/.codex-plugin/plugin.json b/sag-notify/.codex-plugin/plugin.json index ddb390c..7b4100f 100644 --- a/sag-notify/.codex-plugin/plugin.json +++ b/sag-notify/.codex-plugin/plugin.json @@ -12,10 +12,8 @@ "shortDescription": "Spoken voice notifications via sag (ElevenLabs TTS). Claude speaks a short alert before asking you something and a one-line summary when work finishes.", "developerName": "duyet", "category": "UI", - "capabilities": [ - "Skill", - "Command" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/sag-notify/.grok-build-plugin/plugin.json b/sag-notify/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..ad47eea --- /dev/null +++ b/sag-notify/.grok-build-plugin/plugin.json @@ -0,0 +1,20 @@ +{ + "name": "sag-notify", + "version": "2.1.2", + "description": "Spoken voice notifications via sag (ElevenLabs TTS). Skill-driven: Claude calls sag directly to speak a short alert just before it asks you something, and a one-line summary when work finishes — naming the project. Configurable voice and language.", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "commands": "./commands/", + "interface": { + "displayName": "sag-notify", + "shortDescription": "Spoken voice notifications via sag (ElevenLabs TTS). Claude speaks a short alert before asking you something and a one-line summary when work finishes.", + "developerName": "duyet", + "category": "UI", + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/sag-notify/.grok-plugin/plugin.json b/sag-notify/.grok-plugin/plugin.json new file mode 100644 index 0000000..ca50473 --- /dev/null +++ b/sag-notify/.grok-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "sag-notify", + "version": "2.1.2", + "description": "Spoken voice notifications via sag (ElevenLabs TTS). Skill-driven: Claude calls sag directly to speak a short alert just before it asks you something, and a one-line summary when work finishes — naming the project. Configurable voice and language.", + "author": { + "name": "duyet" + }, + "logo": "assets/logo.svg", + "keywords": ["sag-notify", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/" +} diff --git a/sag-notify/assets/logo.svg b/sag-notify/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/sag-notify/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/scripts/validate-plugins.sh b/scripts/validate-plugins.sh index 4d35627..c0d03ef 100755 --- a/scripts/validate-plugins.sh +++ b/scripts/validate-plugins.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash -# Validate Claude and Codex plugin manifests plus marketplace files. -# Exits 1 if any plugin or marketplace fails validation. +# Validate Claude, Codex, Antigravity, Grok, and Grok Build plugin +# manifests plus marketplace files. Exits 1 if any plugin or marketplace +# fails validation. set -euo pipefail @@ -11,12 +12,12 @@ TMP_ERR="${TMPDIR:-/tmp}/plugin-validate-err.$$" trap 'rm -f "$TMP_ERR"' EXIT validate_manifest() { - local manifest="$1" - local mode="$2" - local plugin_dir - plugin_dir="$(dirname "$(dirname "$manifest")")" + local manifest="$1" + local mode="$2" + local plugin_dir + plugin_dir="$(dirname "$(dirname "$manifest")")" - python3 - "$manifest" "$plugin_dir" "$mode" <<'PYEOF' + python3 - "$manifest" "$plugin_dir" "$mode" <<'PYEOF' import json import os import re @@ -68,7 +69,28 @@ if isinstance(skills, list): elif not os.path.isfile(os.path.join(plugin_dir, path_value)): errors.append(f"skills[{i}]: path '{path_value}' does not exist") -if mode in ("codex", "antigravity"): +INTERFACE_MODES = ("codex", "antigravity", "grok-build") +PATH_MODES = ("codex", "antigravity", "grok", "grok-build") + +def resolve_asset(plugin_dir, value): + if not isinstance(value, str) or not value.strip(): + return None + if value.startswith(("http://", "https://")): + return value + return os.path.normpath(os.path.join(plugin_dir, value)) + +def require_local_logo(label, value): + if not isinstance(value, str) or not value.strip(): + errors.append(f"{label} must be a non-empty string") + return + if value.startswith(("http://", "https://")): + errors.append(f"{label} must be a repo-local path so it renders after install, got URL") + return + target = resolve_asset(plugin_dir, value) + if not os.path.isfile(target): + errors.append(f"{label} path does not exist: {value}") + +if mode in PATH_MODES: for field in ("skills", "hooks", "mcpServers", "apps", "commands", "agents"): value = data.get(field) if value is None: @@ -80,7 +102,7 @@ if mode in ("codex", "antigravity"): if not os.path.exists(target): errors.append(f"'{field}' path does not exist: {value}") -if mode in ("codex", "antigravity"): +if mode in INTERFACE_MODES: interface = data.get("interface") if interface is None: errors.append("missing required field: 'interface'") @@ -94,6 +116,8 @@ if mode in ("codex", "antigravity"): if capabilities is not None: if not isinstance(capabilities, list) or not all(isinstance(item, str) and item.strip() for item in capabilities): errors.append("'interface.capabilities' must be an array of non-empty strings") + require_local_logo("interface.logo", interface.get("logo")) + require_local_logo("interface.composerIcon", interface.get("composerIcon")) mode_obj = data.get(mode) if mode_obj is not None: @@ -106,6 +130,11 @@ if mode in ("codex", "antigravity"): if not isinstance(val, list) or not all(isinstance(item, str) and item.strip() for item in val): errors.append(f"'{mode}.{field}' must be an array of non-empty strings") +if mode in ("claude", "grok"): + require_local_logo("logo", data.get("logo")) +elif mode == "grok-build": + require_local_logo("logo", data.get("logo")) + if errors: for error in errors: print(f" - {error}", file=sys.stderr) @@ -114,22 +143,22 @@ PYEOF } check() { - local label="$1" - shift - CHECKED=$((CHECKED + 1)) - if "$@" 2>"$TMP_ERR"; then - echo "✅ $label" - else - echo "❌ $label" - while IFS= read -r line; do - echo " $line" - done < "$TMP_ERR" - FAILED=$((FAILED + 1)) - fi + local label="$1" + shift + CHECKED=$((CHECKED + 1)) + if "$@" 2>"$TMP_ERR"; then + echo "✅ $label" + else + echo "❌ $label" + while IFS= read -r line; do + echo " $line" + done <"$TMP_ERR" + FAILED=$((FAILED + 1)) + fi } validate_cross_manifest() { - python3 - "$REPO_ROOT" <<'PYEOF' + python3 - "$REPO_ROOT" <<'PYEOF' import json import os import sys @@ -142,36 +171,43 @@ plugin_dirs = sorted( if ( os.path.isfile(os.path.join(repo_root, name, ".claude-plugin", "plugin.json")) or os.path.isfile(os.path.join(repo_root, name, ".codex-plugin", "plugin.json")) + or os.path.isfile(os.path.join(repo_root, name, ".grok-plugin", "plugin.json")) + or os.path.isfile(os.path.join(repo_root, name, ".grok-build-plugin", "plugin.json")) ) ) +def compare(label, other): + for field in ("name", "version", "description"): + if claude.get(field) != other.get(field): + errors.append(f"{plugin}: {field} differs between Claude and {label} manifests") + if claude.get("author", {}).get("name") != other.get("author", {}).get("name"): + errors.append(f"{plugin}: author.name differs between Claude and {label} manifests") + for plugin in plugin_dirs: claude_path = os.path.join(repo_root, plugin, ".claude-plugin", "plugin.json") - codex_path = os.path.join(repo_root, plugin, ".codex-plugin", "plugin.json") if not os.path.isfile(claude_path): errors.append(f"{plugin}: missing .claude-plugin/plugin.json") continue with open(claude_path) as f: claude = json.load(f) - if os.path.isfile(codex_path): - with open(codex_path) as f: - codex = json.load(f) - for field in ("name", "version", "description"): - if claude.get(field) != codex.get(field): - errors.append(f"{plugin}: {field} differs between Claude and Codex manifests") - if claude.get("author", {}).get("name") != codex.get("author", {}).get("name"): - errors.append(f"{plugin}: author.name differs between Claude and Codex manifests") + required_harnesses = ( + (".codex-plugin/plugin.json", "Codex"), + (".grok-plugin/plugin.json", "Grok"), + (".grok-build-plugin/plugin.json", "Grok Build"), + ) + for relpath, label in required_harnesses: + path = os.path.join(repo_root, plugin, relpath) + if not os.path.isfile(path): + errors.append(f"{plugin}: missing {relpath}") + continue + with open(path) as f: + compare(label, json.load(f)) antigravity_path = os.path.join(repo_root, plugin, ".antigravity-plugin", "plugin.json") if os.path.isfile(antigravity_path): with open(antigravity_path) as f: - antigravity = json.load(f) - for field in ("name", "version", "description"): - if claude.get(field) != antigravity.get(field): - errors.append(f"{plugin}: {field} differs between Claude and Antigravity manifests") - if claude.get("author", {}).get("name") != antigravity.get("author", {}).get("name"): - errors.append(f"{plugin}: author.name differs between Claude and Antigravity manifests") + compare("Antigravity", json.load(f)) if errors: for error in errors: @@ -181,7 +217,7 @@ PYEOF } validate_marketplaces() { - python3 - "$REPO_ROOT" <<'PYEOF' + python3 - "$REPO_ROOT" <<'PYEOF' import json import os import sys @@ -219,6 +255,10 @@ for plugin in root_marketplace.get("plugins", []): value = plugin.get(field) require(isinstance(value, str) and value.strip(), f"marketplace.json {name}: missing {field}") require(plugin.get("id") == f"{name}@{root_marketplace.get('name')}", f"marketplace.json {name}: id does not match marketplace name") + logo = plugin.get("logo") + require(isinstance(logo, str) and logo.strip(), f"marketplace.json {name}: missing logo") + if isinstance(logo, str) and not logo.startswith(("http://", "https://")): + require(os.path.isfile(os.path.normpath(os.path.join(repo_root, logo))), f"marketplace.json {name}: logo path does not exist") claude_marketplace = load_json(".claude-plugin/marketplace.json") if claude_marketplace is None: @@ -231,6 +271,10 @@ for plugin in claude_marketplace.get("plugins", []): require(isinstance(source, str) and source.startswith("./"), f".claude-plugin/marketplace.json {name}: source must be relative string") if isinstance(source, str): require(os.path.isdir(os.path.join(repo_root, source)), f".claude-plugin/marketplace.json {name}: source path does not exist") + logo = plugin.get("logo") + require(isinstance(logo, str) and logo.strip(), f".claude-plugin/marketplace.json {name}: missing logo") + if isinstance(logo, str) and not logo.startswith(("http://", "https://")): + require(os.path.isfile(os.path.normpath(os.path.join(repo_root, logo))), f".claude-plugin/marketplace.json {name}: logo path does not exist") codex_marketplace = load_json(".agents/plugins/marketplace.json") if codex_marketplace is None: @@ -256,6 +300,49 @@ for plugin in codex_marketplace.get("plugins", []): require(policy.get("authentication") in {"ON_INSTALL", "ON_USE"}, f".agents/plugins/marketplace.json {name}: invalid policy.authentication") category = plugin.get("category") require(isinstance(category, str) and category.strip(), f".agents/plugins/marketplace.json {name}: missing category") + iface = plugin.get("interface") + require(isinstance(iface, dict), f".agents/plugins/marketplace.json {name}: missing interface") + if isinstance(iface, dict): + for field in ("logo", "composerIcon"): + value = iface.get(field) + require(isinstance(value, str) and value.strip(), f".agents/plugins/marketplace.json {name}: missing interface.{field}") + if isinstance(value, str) and not value.startswith(("http://", "https://")): + require(os.path.isfile(os.path.normpath(os.path.join(repo_root, value))), f".agents/plugins/marketplace.json {name}: interface.{field} path does not exist") + +codex_iface = codex_marketplace.get("interface", {}) +require(isinstance(codex_iface.get("logo"), str) and codex_iface["logo"].strip(), ".agents/plugins/marketplace.json missing interface.logo") +if isinstance(codex_iface.get("logo"), str) and not codex_iface["logo"].startswith(("http://", "https://")): + require(os.path.isfile(os.path.normpath(os.path.join(repo_root, codex_iface["logo"]))), ".agents/plugins/marketplace.json interface.logo path does not exist") + +grok_marketplace = load_json(".grok-plugin/marketplace.json") +if grok_marketplace is None: + grok_marketplace = {"plugins": []} +grok_names = [plugin.get("name") for plugin in grok_marketplace.get("plugins", [])] +require(len(grok_names) == len(set(grok_names)), ".grok-plugin/marketplace.json contains duplicate plugin names") +require(set(grok_names) == plugin_set, ".grok-plugin/marketplace.json plugin names must match plugin directories") +require(isinstance(grok_marketplace.get("owner", {}).get("name"), str), ".grok-plugin/marketplace.json missing owner.name") +for plugin in grok_marketplace.get("plugins", []): + name = plugin.get("name") + source = plugin.get("source") + require(isinstance(plugin.get("description"), str) and plugin["description"].strip(), f".grok-plugin/marketplace.json {name}: missing description") + require(isinstance(plugin.get("category"), str) and plugin["category"].strip(), f".grok-plugin/marketplace.json {name}: missing category") + require(isinstance(plugin.get("logo"), str) and plugin["logo"].strip(), f".grok-plugin/marketplace.json {name}: missing logo") + path_value = None + if isinstance(source, str) and source.startswith("./"): + path_value = source + elif isinstance(source, dict): + path_value = source.get("path") + require( + source.get("type") == "local" or source.get("source") == "local", + f".grok-plugin/marketplace.json {name}: source must be local", + ) + require(isinstance(path_value, str) and path_value.startswith("./"), f".grok-plugin/marketplace.json {name}: source path must be relative string") + if isinstance(path_value, str): + plugin_root = os.path.join(repo_root, path_value) + require(os.path.isdir(plugin_root), f".grok-plugin/marketplace.json {name}: source path does not exist") + logo = plugin.get("logo") + if isinstance(logo, str) and not logo.startswith(("http://", "https://")): + require(os.path.isfile(os.path.normpath(os.path.join(plugin_root, logo))), f".grok-plugin/marketplace.json {name}: logo path does not exist") if errors: for error in errors: @@ -268,29 +355,41 @@ echo "Validating plugin manifests..." echo "" while IFS= read -r -d '' manifest; do - plugin_dir="$(dirname "$(dirname "$manifest")")" - plugin_name="$(basename "$plugin_dir")" - check "Claude manifest: $plugin_name" validate_manifest "$manifest" claude + plugin_dir="$(dirname "$(dirname "$manifest")")" + plugin_name="$(basename "$plugin_dir")" + check "Claude manifest: $plugin_name" validate_manifest "$manifest" claude done < <(find "$REPO_ROOT" -path "*/.claude-plugin/plugin.json" -not -path "*/node_modules/*" -print0 | sort -z) while IFS= read -r -d '' manifest; do - plugin_dir="$(dirname "$(dirname "$manifest")")" - plugin_name="$(basename "$plugin_dir")" - check "Codex manifest: $plugin_name" validate_manifest "$manifest" codex + plugin_dir="$(dirname "$(dirname "$manifest")")" + plugin_name="$(basename "$plugin_dir")" + check "Codex manifest: $plugin_name" validate_manifest "$manifest" codex done < <(find "$REPO_ROOT" -path "*/.codex-plugin/plugin.json" -not -path "*/node_modules/*" -print0 | sort -z) while IFS= read -r -d '' manifest; do - plugin_dir="$(dirname "$(dirname "$manifest")")" - plugin_name="$(basename "$plugin_dir")" - check "Antigravity manifest: $plugin_name" validate_manifest "$manifest" antigravity + plugin_dir="$(dirname "$(dirname "$manifest")")" + plugin_name="$(basename "$plugin_dir")" + check "Antigravity manifest: $plugin_name" validate_manifest "$manifest" antigravity done < <(find "$REPO_ROOT" -path "*/.antigravity-plugin/plugin.json" -not -path "*/node_modules/*" -print0 | sort -z) -check "Claude/Codex/Antigravity manifest parity" validate_cross_manifest +while IFS= read -r -d '' manifest; do + plugin_dir="$(dirname "$(dirname "$manifest")")" + plugin_name="$(basename "$plugin_dir")" + check "Grok manifest: $plugin_name" validate_manifest "$manifest" grok +done < <(find "$REPO_ROOT" -path "*/.grok-plugin/plugin.json" -not -path "*/node_modules/*" -print0 | sort -z) + +while IFS= read -r -d '' manifest; do + plugin_dir="$(dirname "$(dirname "$manifest")")" + plugin_name="$(basename "$plugin_dir")" + check "Grok Build manifest: $plugin_name" validate_manifest "$manifest" grok-build +done < <(find "$REPO_ROOT" -path "*/.grok-build-plugin/plugin.json" -not -path "*/node_modules/*" -print0 | sort -z) + +check "Claude/Codex/Grok/Antigravity manifest parity" validate_cross_manifest check "Marketplace files" validate_marketplaces echo "" echo "Checked $CHECKED item(s). $FAILED failed." if [[ $FAILED -gt 0 ]]; then - exit 1 + exit 1 fi diff --git a/simplify/.claude-plugin/plugin.json b/simplify/.claude-plugin/plugin.json index cdca317..55b9635 100644 --- a/simplify/.claude-plugin/plugin.json +++ b/simplify/.claude-plugin/plugin.json @@ -4,5 +4,6 @@ "version": "1.0.1", "author": { "name": "duyet" - } + }, + "logo": "./assets/logo.svg" } diff --git a/simplify/.codex-plugin/plugin.json b/simplify/.codex-plugin/plugin.json index e7dcb31..d65ea35 100644 --- a/simplify/.codex-plugin/plugin.json +++ b/simplify/.codex-plugin/plugin.json @@ -12,10 +12,8 @@ "shortDescription": "Review changed code for reuse, quality, and efficiency, then simplify issues found", "developerName": "duyet", "category": "Productivity", - "capabilities": [ - "Skill", - "Command" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/simplify/.grok-build-plugin/plugin.json b/simplify/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..05d6a5e --- /dev/null +++ b/simplify/.grok-build-plugin/plugin.json @@ -0,0 +1,20 @@ +{ + "name": "simplify", + "version": "1.0.1", + "description": "Review changed code for reuse, quality, and efficiency, then simplify issues found", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "commands": "./commands/", + "interface": { + "displayName": "Simplify", + "shortDescription": "Review changed code for reuse, quality, and efficiency, then simplify issues found", + "developerName": "duyet", + "category": "Productivity", + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/simplify/.grok-plugin/plugin.json b/simplify/.grok-plugin/plugin.json new file mode 100644 index 0000000..8524ead --- /dev/null +++ b/simplify/.grok-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "simplify", + "version": "1.0.1", + "description": "Review changed code for reuse, quality, and efficiency, then simplify issues found", + "author": { + "name": "duyet" + }, + "logo": "assets/logo.svg", + "keywords": ["simplify", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/" +} diff --git a/simplify/assets/logo.svg b/simplify/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/simplify/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/statusline/.claude-plugin/plugin.json b/statusline/.claude-plugin/plugin.json index 6299f28..d6a10f8 100644 --- a/statusline/.claude-plugin/plugin.json +++ b/statusline/.claude-plugin/plugin.json @@ -4,5 +4,6 @@ "description": "Configurable multi-line status bar with context health, cache hit rate, session duration, API rate limits (Anthropic 5h/7d + z.ai GLM), git branch, and active tools. Supports 1/2/3 line layouts, icon themes, and template presets.", "author": { "name": "duyet" - } + }, + "logo": "./assets/logo.svg" } diff --git a/statusline/.codex-plugin/plugin.json b/statusline/.codex-plugin/plugin.json index e7c9ffe..c73f358 100644 --- a/statusline/.codex-plugin/plugin.json +++ b/statusline/.codex-plugin/plugin.json @@ -12,10 +12,8 @@ "shortDescription": "Configurable multi-line status bar with context health, cache hit rate, session duration, API rate limits (Anthropic 5h/7d + z.ai GLM), git branch, and active tools. Supports 1/2/3 line layouts, icon themes, and template presets.", "developerName": "duyet", "category": "UI", - "capabilities": [ - "Skill", - "Command" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/statusline/.grok-build-plugin/plugin.json b/statusline/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..5356c07 --- /dev/null +++ b/statusline/.grok-build-plugin/plugin.json @@ -0,0 +1,20 @@ +{ + "name": "statusline", + "version": "1.9.0", + "description": "Configurable multi-line status bar with context health, cache hit rate, session duration, API rate limits (Anthropic 5h/7d + z.ai GLM), git branch, and active tools. Supports 1/2/3 line layouts, icon themes, and template presets.", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "commands": "./commands/", + "interface": { + "displayName": "Statusline", + "shortDescription": "Configurable multi-line status bar with context health, cache hit rate, session duration, API rate limits (Anthropic 5h/7d + z.ai GLM), git branch, and active tools. Supports 1/2/3 line layouts, icon themes, and template presets.", + "developerName": "duyet", + "category": "UI", + "capabilities": ["Skill", "Command"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/statusline/.grok-plugin/plugin.json b/statusline/.grok-plugin/plugin.json new file mode 100644 index 0000000..c01b725 --- /dev/null +++ b/statusline/.grok-plugin/plugin.json @@ -0,0 +1,13 @@ +{ + "name": "statusline", + "version": "1.9.0", + "description": "Configurable multi-line status bar with context health, cache hit rate, session duration, API rate limits (Anthropic 5h/7d + z.ai GLM), git branch, and active tools. Supports 1/2/3 line layouts, icon themes, and template presets.", + "author": { + "name": "duyet" + }, + "logo": "assets/logo.svg", + "keywords": ["statusline", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/", + "hooks": "./hooks/hooks.json" +} diff --git a/statusline/assets/logo.svg b/statusline/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/statusline/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/team-agents/.claude-plugin/plugin.json b/team-agents/.claude-plugin/plugin.json index cf3b01f..bc5dbea 100644 --- a/team-agents/.claude-plugin/plugin.json +++ b/team-agents/.claude-plugin/plugin.json @@ -4,5 +4,6 @@ "version": "1.9.1", "author": { "name": "duyet" - } + }, + "logo": "./assets/logo.svg" } diff --git a/team-agents/.codex-plugin/plugin.json b/team-agents/.codex-plugin/plugin.json index e6715c1..9e4e597 100644 --- a/team-agents/.codex-plugin/plugin.json +++ b/team-agents/.codex-plugin/plugin.json @@ -11,11 +11,8 @@ "shortDescription": "Leader and Senior Engineer agents for coordinated parallel task execution. Leader breaks down complex tasks and delegates to multiple senior engineers working in parallel.", "developerName": "duyet", "category": "Agents", - "capabilities": [ - "Skill", - "Command", - "Agent" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill", "Command", "Agent"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/team-agents/.grok-build-plugin/plugin.json b/team-agents/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..1c744b5 --- /dev/null +++ b/team-agents/.grok-build-plugin/plugin.json @@ -0,0 +1,19 @@ +{ + "name": "team-agents", + "version": "1.9.1", + "description": "Leader and Senior Engineer agents for coordinated parallel task execution. Leader breaks down complex tasks and delegates to multiple senior engineers working in parallel.", + "author": { + "name": "duyet" + }, + "skills": "./skills/", + "interface": { + "displayName": "Team Agents", + "shortDescription": "Leader and Senior Engineer agents for coordinated parallel task execution. Leader breaks down complex tasks and delegates to multiple senior engineers working in parallel.", + "developerName": "duyet", + "category": "Agents", + "capabilities": ["Skill", "Command", "Agent"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/team-agents/.grok-plugin/plugin.json b/team-agents/.grok-plugin/plugin.json new file mode 100644 index 0000000..16df461 --- /dev/null +++ b/team-agents/.grok-plugin/plugin.json @@ -0,0 +1,13 @@ +{ + "name": "team-agents", + "version": "1.9.1", + "description": "Leader and Senior Engineer agents for coordinated parallel task execution. Leader breaks down complex tasks and delegates to multiple senior engineers working in parallel.", + "author": { + "name": "duyet" + }, + "logo": "assets/logo.svg", + "keywords": ["team-agents", "grok", "grok-build", "grok-bot"], + "skills": "./skills/", + "commands": "./commands/", + "agents": "./agents/" +} diff --git a/team-agents/assets/logo.svg b/team-agents/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/team-agents/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file diff --git a/unsloth-training/.claude-plugin/plugin.json b/unsloth-training/.claude-plugin/plugin.json index d42ece0..e482e6a 100644 --- a/unsloth-training/.claude-plugin/plugin.json +++ b/unsloth-training/.claude-plugin/plugin.json @@ -5,5 +5,6 @@ "author": { "name": "duyet" }, - "license": "MIT" + "license": "MIT", + "logo": "./assets/logo.svg" } diff --git a/unsloth-training/.codex-plugin/plugin.json b/unsloth-training/.codex-plugin/plugin.json index cbf2575..b495602 100644 --- a/unsloth-training/.codex-plugin/plugin.json +++ b/unsloth-training/.codex-plugin/plugin.json @@ -12,9 +12,8 @@ "shortDescription": "Fine-tune LLMs with Unsloth using GRPO or SFT. Includes dataset preparation, synthetic data generation, environment flags, MLX (Apple Silicon), FP8, vision models, mobile export, GGUF.", "developerName": "duyet", "category": "ML", - "capabilities": [ - "Skill" - ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" } } diff --git a/unsloth-training/.grok-build-plugin/plugin.json b/unsloth-training/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..67b54e1 --- /dev/null +++ b/unsloth-training/.grok-build-plugin/plugin.json @@ -0,0 +1,20 @@ +{ + "name": "unsloth-training", + "version": "1.0.2", + "description": "Fine-tune LLMs with Unsloth using GRPO or SFT. Includes dataset preparation, synthetic data generation, environment flags, MLX (Apple Silicon), FP8, vision models, mobile export, GGUF.", + "author": { + "name": "duyet" + }, + "license": "MIT", + "skills": "./skills/", + "interface": { + "displayName": "Unsloth Training", + "shortDescription": "Fine-tune LLMs with Unsloth using GRPO or SFT. Includes dataset preparation, synthetic data generation, environment flags, MLX (Apple Silicon), FP8, vision models, mobile export, GGUF.", + "developerName": "duyet", + "category": "ML", + "capabilities": ["Skill"], + "logo": "./assets/logo.svg", + "composerIcon": "./assets/logo.svg" + }, + "logo": "assets/logo.svg" +} diff --git a/unsloth-training/.grok-plugin/plugin.json b/unsloth-training/.grok-plugin/plugin.json new file mode 100644 index 0000000..873fd60 --- /dev/null +++ b/unsloth-training/.grok-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "unsloth-training", + "version": "1.0.2", + "description": "Fine-tune LLMs with Unsloth using GRPO or SFT. Includes dataset preparation, synthetic data generation, environment flags, MLX (Apple Silicon), FP8, vision models, mobile export, GGUF.", + "author": { + "name": "duyet" + }, + "license": "MIT", + "logo": "assets/logo.svg", + "keywords": ["unsloth-training", "grok", "grok-build", "grok-bot"], + "skills": "./skills/" +} diff --git a/unsloth-training/assets/logo.svg b/unsloth-training/assets/logo.svg new file mode 100644 index 0000000..b18c35b --- /dev/null +++ b/unsloth-training/assets/logo.svg @@ -0,0 +1 @@ + Face/ 9 Nose/ 6 Mouth/ 0 Eyes/ 4 Eyebrows/ 0 Glasses/ 10 Accessories/ 0 Details/ 0 Beard/ 0 \ No newline at end of file