From 6a5bbe185914087b181acfbac1e4b9b42b2686cc Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 2 Sep 2026 18:24:44 +0000 Subject: [PATCH 1/3] feat(marketplace): add Grok harnesses and render logos on every agent Ship first-class Grok Build and Grok Bot support next to Claude Code and Codex: per-plugin .grok-plugin/ and .grok-build-plugin/ manifests, a .grok-plugin/marketplace.json index, and local assets/logo.svg wired through Claude, Codex, Grok, Grok Build, and Antigravity listings. Validator and CI now cover Grok manifests, marketplace parity, and repo-local logo paths. Also registers command-code in the Codex marketplace so every plugin directory is listed. Fixes https://github.com/duyet/codex-claude-plugins/issues/84 Fixes https://github.com/duyet/codex-claude-plugins/issues/85 Co-Authored-By: duyetbot --- .agents/plugins/marketplace.json | 158 +++++- .claude-plugin/marketplace.json | 72 ++- .github/workflows/validate-plugins.yml | 10 + .grok-plugin/marketplace.json | 450 ++++++++++++++++++ agent-loop/.antigravity-plugin/plugin.json | 11 +- agent-loop/.claude-plugin/plugin.json | 7 +- agent-loop/.codex-plugin/plugin.json | 11 +- agent-loop/.grok-build-plugin/plugin.json | 42 ++ agent-loop/.grok-plugin/plugin.json | 18 + agent-loop/assets/logo.svg | 1 + anyrouter/.claude-plugin/plugin.json | 3 +- anyrouter/.codex-plugin/plugin.json | 11 +- anyrouter/.grok-build-plugin/plugin.json | 32 ++ anyrouter/.grok-plugin/plugin.json | 23 + anyrouter/assets/logo.svg | 1 + assets/logo.svg | 1 + build-ios-apps/.claude-plugin/plugin.json | 3 +- build-ios-apps/.codex-plugin/plugin.json | 9 +- build-ios-apps/.grok-build-plugin/plugin.json | 26 + build-ios-apps/.grok-plugin/plugin.json | 21 + build-ios-apps/assets/logo.svg | 1 + build-macos-apps/.claude-plugin/plugin.json | 3 +- build-macos-apps/.codex-plugin/plugin.json | 10 +- .../.grok-build-plugin/plugin.json | 28 ++ build-macos-apps/.grok-plugin/plugin.json | 22 + build-macos-apps/assets/logo.svg | 1 + .../.claude-plugin/plugin.json | 5 +- .../.codex-plugin/plugin.json | 3 +- .../.grok-build-plugin/plugin.json | 21 + .../.grok-plugin/plugin.json | 16 + clickhouse-monitoring/assets/logo.svg | 1 + clickhouse/.claude-plugin/plugin.json | 5 +- clickhouse/.codex-plugin/plugin.json | 3 +- clickhouse/.grok-build-plugin/plugin.json | 21 + clickhouse/.grok-plugin/plugin.json | 16 + clickhouse/assets/logo.svg | 1 + command-code/.claude-plugin/plugin.json | 3 +- command-code/.codex-plugin/plugin.json | 10 +- command-code/.grok-build-plugin/plugin.json | 28 ++ command-code/.grok-plugin/plugin.json | 22 + command-code/assets/logo.svg | 1 + commit/.claude-plugin/plugin.json | 3 +- commit/.codex-plugin/plugin.json | 3 +- commit/.grok-build-plugin/plugin.json | 22 + commit/.grok-plugin/plugin.json | 17 + commit/assets/logo.svg | 1 + docs-generator/.claude-plugin/plugin.json | 3 +- docs-generator/.codex-plugin/plugin.json | 3 +- docs-generator/.grok-build-plugin/plugin.json | 25 + docs-generator/.grok-plugin/plugin.json | 18 + docs-generator/assets/logo.svg | 1 + duyetbot/.claude-plugin/plugin.json | 3 +- duyetbot/.codex-plugin/plugin.json | 3 +- duyetbot/.grok-build-plugin/plugin.json | 23 + duyetbot/.grok-plugin/plugin.json | 20 + duyetbot/assets/logo.svg | 1 + fix/.claude-plugin/plugin.json | 3 +- fix/.codex-plugin/plugin.json | 3 +- fix/.grok-build-plugin/plugin.json | 22 + fix/.grok-plugin/plugin.json | 17 + fix/assets/logo.svg | 1 + frontend-design/.claude-plugin/plugin.json | 3 +- frontend-design/.codex-plugin/plugin.json | 3 +- .../.grok-build-plugin/plugin.json | 22 + frontend-design/.grok-plugin/plugin.json | 17 + frontend-design/assets/logo.svg | 1 + github/.claude-plugin/plugin.json | 7 +- github/.codex-plugin/plugin.json | 3 +- github/.grok-build-plugin/plugin.json | 23 + github/.grok-plugin/plugin.json | 18 + github/assets/logo.svg | 1 + good-html/.claude-plugin/plugin.json | 5 +- good-html/.codex-plugin/plugin.json | 11 +- good-html/.grok-build-plugin/plugin.json | 20 + good-html/.grok-plugin/plugin.json | 15 + good-html/assets/logo.svg | 1 + interview/.claude-plugin/plugin.json | 3 +- interview/.codex-plugin/plugin.json | 3 +- interview/.grok-build-plugin/plugin.json | 24 + interview/.grok-plugin/plugin.json | 18 + interview/assets/logo.svg | 1 + kb/.claude-plugin/plugin.json | 3 +- kb/.codex-plugin/plugin.json | 9 +- kb/.grok-build-plugin/plugin.json | 26 + kb/.grok-plugin/plugin.json | 21 + kb/assets/logo.svg | 1 + marketplace.json | 81 ++-- okf/.claude-plugin/plugin.json | 3 +- okf/.codex-plugin/plugin.json | 8 +- okf/.grok-build-plugin/plugin.json | 24 + okf/.grok-plugin/plugin.json | 20 + okf/assets/logo.svg | 1 + orchestration/.claude-plugin/plugin.json | 3 +- orchestration/.codex-plugin/plugin.json | 3 +- orchestration/.grok-build-plugin/plugin.json | 21 + orchestration/.grok-plugin/plugin.json | 16 + orchestration/assets/logo.svg | 1 + prompt-engineering/.claude-plugin/plugin.json | 5 +- prompt-engineering/.codex-plugin/plugin.json | 3 +- .../.grok-build-plugin/plugin.json | 21 + prompt-engineering/.grok-plugin/plugin.json | 16 + prompt-engineering/assets/logo.svg | 1 + sag-notify/.claude-plugin/plugin.json | 3 +- sag-notify/.codex-plugin/plugin.json | 3 +- sag-notify/.grok-build-plugin/plugin.json | 23 + sag-notify/.grok-plugin/plugin.json | 17 + sag-notify/assets/logo.svg | 1 + scripts/validate-plugins.sh | 139 +++++- simplify/.claude-plugin/plugin.json | 3 +- simplify/.codex-plugin/plugin.json | 3 +- simplify/.grok-build-plugin/plugin.json | 23 + simplify/.grok-plugin/plugin.json | 17 + simplify/assets/logo.svg | 1 + statusline/.claude-plugin/plugin.json | 3 +- statusline/.codex-plugin/plugin.json | 3 +- statusline/.grok-build-plugin/plugin.json | 23 + statusline/.grok-plugin/plugin.json | 18 + statusline/assets/logo.svg | 1 + team-agents/.claude-plugin/plugin.json | 3 +- team-agents/.codex-plugin/plugin.json | 3 +- team-agents/.grok-build-plugin/plugin.json | 23 + team-agents/.grok-plugin/plugin.json | 18 + team-agents/assets/logo.svg | 1 + unsloth-training/.claude-plugin/plugin.json | 3 +- unsloth-training/.codex-plugin/plugin.json | 3 +- .../.grok-build-plugin/plugin.json | 22 + unsloth-training/.grok-plugin/plugin.json | 17 + unsloth-training/assets/logo.svg | 1 + 128 files changed, 2027 insertions(+), 157 deletions(-) create mode 100644 .grok-plugin/marketplace.json create mode 100644 agent-loop/.grok-build-plugin/plugin.json create mode 100644 agent-loop/.grok-plugin/plugin.json create mode 100644 agent-loop/assets/logo.svg create mode 100644 anyrouter/.grok-build-plugin/plugin.json create mode 100644 anyrouter/.grok-plugin/plugin.json create mode 100644 anyrouter/assets/logo.svg create mode 100644 assets/logo.svg create mode 100644 build-ios-apps/.grok-build-plugin/plugin.json create mode 100644 build-ios-apps/.grok-plugin/plugin.json create mode 100644 build-ios-apps/assets/logo.svg create mode 100644 build-macos-apps/.grok-build-plugin/plugin.json create mode 100644 build-macos-apps/.grok-plugin/plugin.json create mode 100644 build-macos-apps/assets/logo.svg create mode 100644 clickhouse-monitoring/.grok-build-plugin/plugin.json create mode 100644 clickhouse-monitoring/.grok-plugin/plugin.json create mode 100644 clickhouse-monitoring/assets/logo.svg create mode 100644 clickhouse/.grok-build-plugin/plugin.json create mode 100644 clickhouse/.grok-plugin/plugin.json create mode 100644 clickhouse/assets/logo.svg create mode 100644 command-code/.grok-build-plugin/plugin.json create mode 100644 command-code/.grok-plugin/plugin.json create mode 100644 command-code/assets/logo.svg create mode 100644 commit/.grok-build-plugin/plugin.json create mode 100644 commit/.grok-plugin/plugin.json create mode 100644 commit/assets/logo.svg create mode 100644 docs-generator/.grok-build-plugin/plugin.json create mode 100644 docs-generator/.grok-plugin/plugin.json create mode 100644 docs-generator/assets/logo.svg create mode 100644 duyetbot/.grok-build-plugin/plugin.json create mode 100644 duyetbot/.grok-plugin/plugin.json create mode 100644 duyetbot/assets/logo.svg create mode 100644 fix/.grok-build-plugin/plugin.json create mode 100644 fix/.grok-plugin/plugin.json create mode 100644 fix/assets/logo.svg create mode 100644 frontend-design/.grok-build-plugin/plugin.json create mode 100644 frontend-design/.grok-plugin/plugin.json create mode 100644 frontend-design/assets/logo.svg create mode 100644 github/.grok-build-plugin/plugin.json create mode 100644 github/.grok-plugin/plugin.json create mode 100644 github/assets/logo.svg create mode 100644 good-html/.grok-build-plugin/plugin.json create mode 100644 good-html/.grok-plugin/plugin.json create mode 100644 good-html/assets/logo.svg create mode 100644 interview/.grok-build-plugin/plugin.json create mode 100644 interview/.grok-plugin/plugin.json create mode 100644 interview/assets/logo.svg create mode 100644 kb/.grok-build-plugin/plugin.json create mode 100644 kb/.grok-plugin/plugin.json create mode 100644 kb/assets/logo.svg create mode 100644 okf/.grok-build-plugin/plugin.json create mode 100644 okf/.grok-plugin/plugin.json create mode 100644 okf/assets/logo.svg create mode 100644 orchestration/.grok-build-plugin/plugin.json create mode 100644 orchestration/.grok-plugin/plugin.json create mode 100644 orchestration/assets/logo.svg create mode 100644 prompt-engineering/.grok-build-plugin/plugin.json create mode 100644 prompt-engineering/.grok-plugin/plugin.json create mode 100644 prompt-engineering/assets/logo.svg create mode 100644 sag-notify/.grok-build-plugin/plugin.json create mode 100644 sag-notify/.grok-plugin/plugin.json create mode 100644 sag-notify/assets/logo.svg create mode 100644 simplify/.grok-build-plugin/plugin.json create mode 100644 simplify/.grok-plugin/plugin.json create mode 100644 simplify/assets/logo.svg create mode 100644 statusline/.grok-build-plugin/plugin.json create mode 100644 statusline/.grok-plugin/plugin.json create mode 100644 statusline/assets/logo.svg create mode 100644 team-agents/.grok-build-plugin/plugin.json create mode 100644 team-agents/.grok-plugin/plugin.json create mode 100644 team-agents/assets/logo.svg create mode 100644 unsloth-training/.grok-build-plugin/plugin.json create mode 100644 unsloth-training/.grok-plugin/plugin.json create mode 100644 unsloth-training/assets/logo.svg 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..618a381 100644 --- a/.github/workflows/validate-plugins.yml +++ b/.github/workflows/validate-plugins.yml @@ -7,8 +7,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 +22,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" diff --git a/.grok-plugin/marketplace.json b/.grok-plugin/marketplace.json new file mode 100644 index 0000000..08ea145 --- /dev/null +++ b/.grok-plugin/marketplace.json @@ -0,0 +1,450 @@ +{ + "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/agent-loop/.antigravity-plugin/plugin.json b/agent-loop/.antigravity-plugin/plugin.json index 18f7dea..75611ae 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,11 @@ "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..dda4848 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,11 @@ "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..e67ab45 --- /dev/null +++ b/agent-loop/.grok-build-plugin/plugin.json @@ -0,0 +1,42 @@ +{ + "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..958e363 --- /dev/null +++ b/agent-loop/.grok-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "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/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..3d4f9da 100644 --- a/anyrouter/.codex-plugin/plugin.json +++ b/anyrouter/.codex-plugin/plugin.json @@ -14,11 +14,18 @@ "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"], + "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" } } diff --git a/anyrouter/.grok-build-plugin/plugin.json b/anyrouter/.grok-build-plugin/plugin.json new file mode 100644 index 0000000..2820a46 --- /dev/null +++ b/anyrouter/.grok-build-plugin/plugin.json @@ -0,0 +1,32 @@ +{ + "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..b43bc81 --- /dev/null +++ b/anyrouter/.grok-plugin/plugin.json @@ -0,0 +1,23 @@ +{ + "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/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..cadc124 100644 --- a/build-ios-apps/.codex-plugin/plugin.json +++ b/build-ios-apps/.codex-plugin/plugin.json @@ -12,9 +12,14 @@ "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"], + "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..d7f67db --- /dev/null +++ b/build-ios-apps/.grok-build-plugin/plugin.json @@ -0,0 +1,26 @@ +{ + "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..da74c8e --- /dev/null +++ b/build-ios-apps/.grok-plugin/plugin.json @@ -0,0 +1,21 @@ +{ + "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..223acf9 100644 --- a/build-macos-apps/.codex-plugin/plugin.json +++ b/build-macos-apps/.codex-plugin/plugin.json @@ -13,9 +13,15 @@ "shortDescription": "Build, debug, instrument, and implement macOS apps with SwiftUI and AppKit guidance", "developerName": "duyet", "category": "development", - "capabilities": ["Skill", "Command", "Agent"], + "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..00e721b --- /dev/null +++ b/build-macos-apps/.grok-build-plugin/plugin.json @@ -0,0 +1,28 @@ +{ + "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..adae623 --- /dev/null +++ b/build-macos-apps/.grok-plugin/plugin.json @@ -0,0 +1,22 @@ +{ + "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..76c3c96 100644 --- a/clickhouse-monitoring/.codex-plugin/plugin.json +++ b/clickhouse-monitoring/.codex-plugin/plugin.json @@ -14,6 +14,7 @@ "capabilities": [ "Skill" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..3397f64 --- /dev/null +++ b/clickhouse-monitoring/.grok-build-plugin/plugin.json @@ -0,0 +1,21 @@ +{ + "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..1e71235 --- /dev/null +++ b/clickhouse-monitoring/.grok-plugin/plugin.json @@ -0,0 +1,16 @@ +{ + "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..8dbf56b 100644 --- a/clickhouse/.codex-plugin/plugin.json +++ b/clickhouse/.codex-plugin/plugin.json @@ -14,6 +14,7 @@ "capabilities": [ "Skill" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..f3d47ec --- /dev/null +++ b/clickhouse/.grok-build-plugin/plugin.json @@ -0,0 +1,21 @@ +{ + "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..be05ff7 --- /dev/null +++ b/clickhouse/.grok-plugin/plugin.json @@ -0,0 +1,16 @@ +{ + "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..424720e 100644 --- a/command-code/.codex-plugin/plugin.json +++ b/command-code/.codex-plugin/plugin.json @@ -13,9 +13,15 @@ "shortDescription": "Drive & orchestrate the Command Code CLI (`cmd`) as a headless sub-agent.", "developerName": "duyet", "category": "Developer Tools", - "capabilities": ["Skill", "Command", "Agent"], + "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..538f751 --- /dev/null +++ b/command-code/.grok-build-plugin/plugin.json @@ -0,0 +1,28 @@ +{ + "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..dcdd08f --- /dev/null +++ b/command-code/.grok-plugin/plugin.json @@ -0,0 +1,22 @@ +{ + "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..466010c 100644 --- a/commit/.codex-plugin/plugin.json +++ b/commit/.codex-plugin/plugin.json @@ -15,6 +15,7 @@ "Skill", "Command" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..7e037c3 --- /dev/null +++ b/commit/.grok-build-plugin/plugin.json @@ -0,0 +1,22 @@ +{ + "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..01b47c1 --- /dev/null +++ b/commit/.grok-plugin/plugin.json @@ -0,0 +1,17 @@ +{ + "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..879df17 100644 --- a/docs-generator/.codex-plugin/plugin.json +++ b/docs-generator/.codex-plugin/plugin.json @@ -18,6 +18,7 @@ "Command", "Hook" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..844a6a3 --- /dev/null +++ b/docs-generator/.grok-build-plugin/plugin.json @@ -0,0 +1,25 @@ +{ + "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..48405ec --- /dev/null +++ b/docs-generator/.grok-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "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/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..60fbce9 100644 --- a/duyetbot/.codex-plugin/plugin.json +++ b/duyetbot/.codex-plugin/plugin.json @@ -16,6 +16,7 @@ "Skill", "Command" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..c433655 --- /dev/null +++ b/duyetbot/.grok-build-plugin/plugin.json @@ -0,0 +1,23 @@ +{ + "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..250ddb6 --- /dev/null +++ b/duyetbot/.grok-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" + }, + "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..db167f1 100644 --- a/fix/.codex-plugin/plugin.json +++ b/fix/.codex-plugin/plugin.json @@ -15,6 +15,7 @@ "Skill", "Command" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..f3cc6c6 --- /dev/null +++ b/fix/.grok-build-plugin/plugin.json @@ -0,0 +1,22 @@ +{ + "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..890d385 --- /dev/null +++ b/fix/.grok-plugin/plugin.json @@ -0,0 +1,17 @@ +{ + "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..57c44bb 100644 --- a/frontend-design/.codex-plugin/plugin.json +++ b/frontend-design/.codex-plugin/plugin.json @@ -15,6 +15,7 @@ "capabilities": [ "Skill" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..2a1fdcd --- /dev/null +++ b/frontend-design/.grok-build-plugin/plugin.json @@ -0,0 +1,22 @@ +{ + "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..ea984e9 --- /dev/null +++ b/frontend-design/.grok-plugin/plugin.json @@ -0,0 +1,17 @@ +{ + "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..6893ce6 100644 --- a/github/.codex-plugin/plugin.json +++ b/github/.codex-plugin/plugin.json @@ -16,6 +16,7 @@ "Skill", "Command" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..dd89cb4 --- /dev/null +++ b/github/.grok-build-plugin/plugin.json @@ -0,0 +1,23 @@ +{ + "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..ef590d2 --- /dev/null +++ b/github/.grok-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "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..abd8e4e 100644 --- a/good-html/.codex-plugin/plugin.json +++ b/good-html/.codex-plugin/plugin.json @@ -2,13 +2,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" }, + "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" + "capabilities": [ + "Skill" + ], + "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..f373f9c --- /dev/null +++ b/good-html/.grok-build-plugin/plugin.json @@ -0,0 +1,20 @@ +{ + "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..332bc82 --- /dev/null +++ b/good-html/.grok-plugin/plugin.json @@ -0,0 +1,15 @@ +{ + "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..3c128d6 100644 --- a/interview/.codex-plugin/plugin.json +++ b/interview/.codex-plugin/plugin.json @@ -17,6 +17,7 @@ "Skill", "Command" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..0fd9ac8 --- /dev/null +++ b/interview/.grok-build-plugin/plugin.json @@ -0,0 +1,24 @@ +{ + "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..67ccbf5 --- /dev/null +++ b/interview/.grok-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "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..6b64e54 100644 --- a/kb/.codex-plugin/plugin.json +++ b/kb/.codex-plugin/plugin.json @@ -12,9 +12,14 @@ "shortDescription": "Initialize and maintain a markdown knowledge base: consolidate, dedupe, prune, and forget notes.", "developerName": "duyet", "category": "productivity", - "capabilities": ["Skill", "Command"], + "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..c35d33e --- /dev/null +++ b/kb/.grok-build-plugin/plugin.json @@ -0,0 +1,26 @@ +{ + "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..c2fbf10 --- /dev/null +++ b/kb/.grok-plugin/plugin.json @@ -0,0 +1,21 @@ +{ + "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..95ffde1 100644 --- a/okf/.codex-plugin/plugin.json +++ b/okf/.codex-plugin/plugin.json @@ -11,9 +11,13 @@ "shortDescription": "Author, validate, render, and refactor knowledge into OKF v0.1 bundles (markdown + YAML frontmatter).", "developerName": "duyet", "category": "productivity", - "capabilities": ["Skill"], + "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..da9365c --- /dev/null +++ b/okf/.grok-build-plugin/plugin.json @@ -0,0 +1,24 @@ +{ + "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..a5e5912 --- /dev/null +++ b/okf/.grok-plugin/plugin.json @@ -0,0 +1,20 @@ +{ + "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..88354f6 100644 --- a/orchestration/.codex-plugin/plugin.json +++ b/orchestration/.codex-plugin/plugin.json @@ -14,6 +14,7 @@ "capabilities": [ "Skill" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..3d0953e --- /dev/null +++ b/orchestration/.grok-build-plugin/plugin.json @@ -0,0 +1,21 @@ +{ + "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..d98cc95 --- /dev/null +++ b/orchestration/.grok-plugin/plugin.json @@ -0,0 +1,16 @@ +{ + "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..7c4e701 100644 --- a/prompt-engineering/.codex-plugin/plugin.json +++ b/prompt-engineering/.codex-plugin/plugin.json @@ -14,6 +14,7 @@ "capabilities": [ "Skill" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..dbc5f8b --- /dev/null +++ b/prompt-engineering/.grok-build-plugin/plugin.json @@ -0,0 +1,21 @@ +{ + "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..2101fee --- /dev/null +++ b/prompt-engineering/.grok-plugin/plugin.json @@ -0,0 +1,16 @@ +{ + "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..379d5ff 100644 --- a/sag-notify/.codex-plugin/plugin.json +++ b/sag-notify/.codex-plugin/plugin.json @@ -16,6 +16,7 @@ "Skill", "Command" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..23352a7 --- /dev/null +++ b/sag-notify/.grok-build-plugin/plugin.json @@ -0,0 +1,23 @@ +{ + "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..ebe7d58 --- /dev/null +++ b/sag-notify/.grok-plugin/plugin.json @@ -0,0 +1,17 @@ +{ + "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..06705f4 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 @@ -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) @@ -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: @@ -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: @@ -285,7 +372,19 @@ while IFS= read -r -d '' manifest; do 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 "" 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..7a59e93 100644 --- a/simplify/.codex-plugin/plugin.json +++ b/simplify/.codex-plugin/plugin.json @@ -16,6 +16,7 @@ "Skill", "Command" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..86d8885 --- /dev/null +++ b/simplify/.grok-build-plugin/plugin.json @@ -0,0 +1,23 @@ +{ + "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..7126228 --- /dev/null +++ b/simplify/.grok-plugin/plugin.json @@ -0,0 +1,17 @@ +{ + "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..68f1618 100644 --- a/statusline/.codex-plugin/plugin.json +++ b/statusline/.codex-plugin/plugin.json @@ -16,6 +16,7 @@ "Skill", "Command" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..51fc6fc --- /dev/null +++ b/statusline/.grok-build-plugin/plugin.json @@ -0,0 +1,23 @@ +{ + "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..613fc23 --- /dev/null +++ b/statusline/.grok-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "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..6976876 100644 --- a/team-agents/.codex-plugin/plugin.json +++ b/team-agents/.codex-plugin/plugin.json @@ -16,6 +16,7 @@ "Command", "Agent" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..c91d972 --- /dev/null +++ b/team-agents/.grok-build-plugin/plugin.json @@ -0,0 +1,23 @@ +{ + "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..6fd5f11 --- /dev/null +++ b/team-agents/.grok-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "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..93f30ef 100644 --- a/unsloth-training/.codex-plugin/plugin.json +++ b/unsloth-training/.codex-plugin/plugin.json @@ -15,6 +15,7 @@ "capabilities": [ "Skill" ], - "logo": "https://raw.githubusercontent.com/duyet/monorepo/refs/heads/master/packages/components/logo.svg" + "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..231b23a --- /dev/null +++ b/unsloth-training/.grok-build-plugin/plugin.json @@ -0,0 +1,22 @@ +{ + "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..1b9b4be --- /dev/null +++ b/unsloth-training/.grok-plugin/plugin.json @@ -0,0 +1,17 @@ +{ + "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 From b8e2e2f58683d7a4c6f8d9417e7c0f3f0b83a327 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 2 Sep 2026 18:24:50 +0000 Subject: [PATCH 2/3] docs: document Grok Build, Grok Bot, and plugin logos Install paths, harness metadata, and contributing steps now cover Grok Build and Grok Bot the same way as Claude Code and Codex, including local assets/logo.svg on every listed harness. Co-Authored-By: duyetbot Co-authored-by: duyet --- CHANGELOG.md | 2 + CLAUDE.md | 21 +++++++- CONTRIBUTING.md | 68 +++++++++++++++++++++---- README.md | 63 +++++++++++++++++------ agent-loop/README.md | 12 +++-- anyrouter/README.md | 9 +++- docs-generator/scripts/generate-docs.sh | 31 ++++++++--- 7 files changed, 165 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99417f2..1edfcb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ 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 diff --git a/CLAUDE.md b/CLAUDE.md index abf82ad..581e9be 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 @@ -51,9 +62,15 @@ Always update `plugin.json` version when making changes. ``` 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 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ba29161..e5118b7 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 @@ -15,9 +15,15 @@ Thanks for your interest in contributing to the Claude and Codex Plugins Marketp ``` 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,12 +66,33 @@ 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 @@ -73,14 +101,14 @@ Required sections: - 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 +119,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,7 +141,24 @@ 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: @@ -136,7 +182,7 @@ Follow [Semantic Versioning](https://semver.org/): - **Major** (1.0.0 → 2.0.0): Breaking changes Update plugin.json version on every change. -Keep `.claude-plugin/plugin.json` and `.codex-plugin/plugin.json` in sync for shared metadata fields. +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 +201,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..ada396a 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,12 +97,16 @@ 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 @@ -321,15 +349,18 @@ Add to `~/.claude/settings.json`: ``` 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/README.md b/agent-loop/README.md index 9644d7c..7315f14 100644 --- a/agent-loop/README.md +++ b/agent-loop/README.md @@ -160,11 +160,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/anyrouter/README.md b/anyrouter/README.md index 65b343e..4659857 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 @@ -34,6 +34,13 @@ export ANYROUTER_API_KEY="sk-ar-..." 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. diff --git a/docs-generator/scripts/generate-docs.sh b/docs-generator/scripts/generate-docs.sh index 381f12c..2601088 100755 --- a/docs-generator/scripts/generate-docs.sh +++ b/docs-generator/scripts/generate-docs.sh @@ -50,12 +50,14 @@ generate_root_readme() { # Start building README cat > "$output" << 'EOF' -# Claude Plugins Marketplace +# 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 @@ -71,6 +73,15 @@ 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 @@ -189,14 +200,18 @@ Add to `~/.claude/settings.json`: ``` 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`. --- From 4ebbb0416c11e80f893cd4b5fb57490ca8ca3c7f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 2 Sep 2026 18:35:52 +0000 Subject: [PATCH 3/3] fix(ci): make Grok harness and logo files Super-linter clean Format plugin JSON with Prettier, retab shell scripts with shfmt, pin the validate-plugins checkout action, and fix markdown/shellcheck issues Super-linter reported on the Grok + logo PR files. Co-Authored-By: duyetbot --- .github/workflows/validate-plugins.yml | 7 +- .grok-plugin/marketplace.json | 96 ++---- CHANGELOG.md | 7 + CLAUDE.md | 4 +- CONTRIBUTING.md | 9 +- README.md | 115 ++++--- agent-loop/.antigravity-plugin/plugin.json | 5 +- agent-loop/.codex-plugin/plugin.json | 5 +- agent-loop/.grok-build-plugin/plugin.json | 5 +- agent-loop/.grok-plugin/plugin.json | 7 +- agent-loop/README.md | 50 +-- anyrouter/.codex-plugin/plugin.json | 7 +- anyrouter/.grok-build-plugin/plugin.json | 7 +- anyrouter/.grok-plugin/plugin.json | 7 +- anyrouter/README.md | 30 +- build-ios-apps/.codex-plugin/plugin.json | 5 +- build-ios-apps/.grok-build-plugin/plugin.json | 5 +- build-ios-apps/.grok-plugin/plugin.json | 7 +- build-macos-apps/.codex-plugin/plugin.json | 6 +- .../.grok-build-plugin/plugin.json | 6 +- build-macos-apps/.grok-plugin/plugin.json | 7 +- .../.codex-plugin/plugin.json | 4 +- .../.grok-build-plugin/plugin.json | 4 +- .../.grok-plugin/plugin.json | 7 +- clickhouse/.codex-plugin/plugin.json | 4 +- clickhouse/.grok-build-plugin/plugin.json | 4 +- clickhouse/.grok-plugin/plugin.json | 7 +- command-code/.codex-plugin/plugin.json | 6 +- command-code/.grok-build-plugin/plugin.json | 6 +- command-code/.grok-plugin/plugin.json | 7 +- commit/.codex-plugin/plugin.json | 5 +- commit/.grok-build-plugin/plugin.json | 5 +- commit/.grok-plugin/plugin.json | 7 +- docs-generator/.codex-plugin/plugin.json | 6 +- docs-generator/.grok-build-plugin/plugin.json | 6 +- docs-generator/.grok-plugin/plugin.json | 7 +- docs-generator/scripts/generate-docs.sh | 308 +++++++++--------- duyetbot/.codex-plugin/plugin.json | 5 +- duyetbot/.grok-build-plugin/plugin.json | 5 +- duyetbot/.grok-plugin/plugin.json | 7 +- fix/.codex-plugin/plugin.json | 5 +- fix/.grok-build-plugin/plugin.json | 5 +- fix/.grok-plugin/plugin.json | 7 +- frontend-design/.codex-plugin/plugin.json | 4 +- .../.grok-build-plugin/plugin.json | 4 +- frontend-design/.grok-plugin/plugin.json | 7 +- github/.codex-plugin/plugin.json | 5 +- github/.grok-build-plugin/plugin.json | 5 +- github/.grok-plugin/plugin.json | 7 +- good-html/.codex-plugin/plugin.json | 4 +- good-html/.grok-build-plugin/plugin.json | 4 +- good-html/.grok-plugin/plugin.json | 7 +- interview/.codex-plugin/plugin.json | 5 +- interview/.grok-build-plugin/plugin.json | 5 +- interview/.grok-plugin/plugin.json | 7 +- kb/.codex-plugin/plugin.json | 5 +- kb/.grok-build-plugin/plugin.json | 5 +- kb/.grok-plugin/plugin.json | 7 +- okf/.codex-plugin/plugin.json | 4 +- okf/.grok-build-plugin/plugin.json | 4 +- okf/.grok-plugin/plugin.json | 7 +- orchestration/.codex-plugin/plugin.json | 4 +- orchestration/.grok-build-plugin/plugin.json | 4 +- orchestration/.grok-plugin/plugin.json | 7 +- prompt-engineering/.codex-plugin/plugin.json | 4 +- .../.grok-build-plugin/plugin.json | 4 +- prompt-engineering/.grok-plugin/plugin.json | 7 +- sag-notify/.codex-plugin/plugin.json | 5 +- sag-notify/.grok-build-plugin/plugin.json | 5 +- sag-notify/.grok-plugin/plugin.json | 7 +- scripts/validate-plugins.sh | 70 ++-- simplify/.codex-plugin/plugin.json | 5 +- simplify/.grok-build-plugin/plugin.json | 5 +- simplify/.grok-plugin/plugin.json | 7 +- statusline/.codex-plugin/plugin.json | 5 +- statusline/.grok-build-plugin/plugin.json | 5 +- statusline/.grok-plugin/plugin.json | 7 +- team-agents/.codex-plugin/plugin.json | 6 +- team-agents/.grok-build-plugin/plugin.json | 6 +- team-agents/.grok-plugin/plugin.json | 7 +- unsloth-training/.codex-plugin/plugin.json | 4 +- .../.grok-build-plugin/plugin.json | 4 +- unsloth-training/.grok-plugin/plugin.json | 7 +- 83 files changed, 416 insertions(+), 689 deletions(-) diff --git a/.github/workflows/validate-plugins.yml b/.github/workflows/validate-plugins.yml index 618a381..e6cfa46 100644 --- a/.github/workflows/validate-plugins.yml +++ b/.github/workflows/validate-plugins.yml @@ -1,3 +1,4 @@ +--- name: Validate Plugins on: @@ -41,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 index 08ea145..bb74b6c 100644 --- a/.grok-plugin/marketplace.json +++ b/.grok-plugin/marketplace.json @@ -15,9 +15,7 @@ "path": "./team-agents" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "team-agents" - ], + "keywords": ["team-agents"], "logo": "assets/logo.svg", "version": "1.9.1", "author": { @@ -33,9 +31,7 @@ "path": "./commit" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "commit" - ], + "keywords": ["commit"], "logo": "assets/logo.svg", "version": "1.3.2", "author": { @@ -51,9 +47,7 @@ "path": "./frontend-design" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "frontend-design" - ], + "keywords": ["frontend-design"], "logo": "assets/logo.svg", "version": "1.4.0", "author": { @@ -70,9 +64,7 @@ "path": "./interview" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "interview" - ], + "keywords": ["interview"], "logo": "assets/logo.svg", "version": "1.0.1", "author": { @@ -89,9 +81,7 @@ "path": "./statusline" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "statusline" - ], + "keywords": ["statusline"], "logo": "assets/logo.svg", "version": "1.9.0", "author": { @@ -107,9 +97,7 @@ "path": "./orchestration" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "orchestration" - ], + "keywords": ["orchestration"], "logo": "assets/logo.svg", "version": "1.1.0", "author": { @@ -125,9 +113,7 @@ "path": "./duyetbot" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "duyetbot" - ], + "keywords": ["duyetbot"], "logo": "assets/logo.svg", "version": "1.8.1", "author": { @@ -143,9 +129,7 @@ "path": "./docs-generator" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "docs-generator" - ], + "keywords": ["docs-generator"], "logo": "assets/logo.svg", "version": "1.0.1", "author": { @@ -161,9 +145,7 @@ "path": "./github" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "github" - ], + "keywords": ["github"], "logo": "assets/logo.svg", "version": "1.4.2", "author": { @@ -179,9 +161,7 @@ "path": "./fix" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "fix" - ], + "keywords": ["fix"], "logo": "assets/logo.svg", "version": "1.0.1", "author": { @@ -197,9 +177,7 @@ "path": "./simplify" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "simplify" - ], + "keywords": ["simplify"], "logo": "assets/logo.svg", "version": "1.0.1", "author": { @@ -215,9 +193,7 @@ "path": "./clickhouse" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "clickhouse" - ], + "keywords": ["clickhouse"], "logo": "assets/logo.svg", "version": "1.4.1", "author": { @@ -233,9 +209,7 @@ "path": "./prompt-engineering" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "prompt-engineering" - ], + "keywords": ["prompt-engineering"], "logo": "assets/logo.svg", "version": "1.1.1", "author": { @@ -251,9 +225,7 @@ "path": "./clickhouse-monitoring" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "clickhouse-monitoring" - ], + "keywords": ["clickhouse-monitoring"], "logo": "assets/logo.svg", "version": "1.1.1", "author": { @@ -269,9 +241,7 @@ "path": "./unsloth-training" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "unsloth-training" - ], + "keywords": ["unsloth-training"], "logo": "assets/logo.svg", "version": "1.0.2", "author": { @@ -287,9 +257,7 @@ "path": "./good-html" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "good-html" - ], + "keywords": ["good-html"], "logo": "assets/logo.svg", "version": "1.0.0", "author": { @@ -305,9 +273,7 @@ "path": "./anyrouter" }, "homepage": "https://anyrouter.dev", - "keywords": [ - "anyrouter" - ], + "keywords": ["anyrouter"], "logo": "assets/logo.svg", "version": "1.0.1", "author": { @@ -324,9 +290,7 @@ "path": "./sag-notify" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "sag-notify" - ], + "keywords": ["sag-notify"], "logo": "assets/logo.svg", "version": "2.1.2", "author": { @@ -342,9 +306,7 @@ "path": "./build-macos-apps" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "build-macos-apps" - ], + "keywords": ["build-macos-apps"], "logo": "assets/logo.svg", "version": "1.0.1", "author": { @@ -361,9 +323,7 @@ "path": "./build-ios-apps" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "build-ios-apps" - ], + "keywords": ["build-ios-apps"], "logo": "assets/logo.svg", "version": "1.0.1", "author": { @@ -380,9 +340,7 @@ "path": "./agent-loop" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "agent-loop" - ], + "keywords": ["agent-loop"], "logo": "assets/logo.svg", "version": "0.4.0", "author": { @@ -398,9 +356,7 @@ "path": "./kb" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "kb" - ], + "keywords": ["kb"], "logo": "assets/logo.svg", "version": "1.1.0", "author": { @@ -417,9 +373,7 @@ "path": "./okf" }, "homepage": "https://github.com/duyet/codex-claude-plugins", - "keywords": [ - "okf" - ], + "keywords": ["okf"], "logo": "assets/logo.svg", "version": "1.1.0", "author": { @@ -436,9 +390,7 @@ "path": "./command-code" }, "homepage": "https://github.com/duyet/claude-plugins", - "keywords": [ - "command-code" - ], + "keywords": ["command-code"], "logo": "assets/logo.svg", "version": "1.0.0", "author": { diff --git a/CHANGELOG.md b/CHANGELOG.md index 1edfcb2..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,7 @@ 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 @@ -18,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 @@ -31,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 @@ -44,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 581e9be..d0860d4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -59,7 +59,7 @@ Always update `plugin.json` version when making changes. ## Plugin Structure -``` +```text plugin-name/ ├── .claude-plugin/ │ └── plugin.json # Manifest (name, version, description, logo) @@ -109,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 e5118b7..0d26454 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,7 +12,7 @@ Thanks for your interest in contributing to the Claude, Codex, and Grok Plugins ## Plugin Structure -``` +```text my-plugin/ ├── .claude-plugin/ │ └── plugin.json # Plugin manifest (name, version, description, logo) @@ -95,6 +95,7 @@ Copy `assets/logo.svg` from another plugin (or the repo-root `assets/logo.svg`). ### 4. Documentation (README.md) Required sections: + - Description of what the plugin does - Installation instructions - Usage examples @@ -104,6 +105,7 @@ Required sections: ### 5. Claude Instructions (CLAUDE.md) Required for skills and agents: + - How Claude should use the plugin - When to invoke it - Expected inputs and outputs @@ -162,8 +164,8 @@ Include `logo` on the Claude marketplace entry (`./my-plugin/assets/logo.svg`) a Add your plugin to the main README.md table: -| Plugin | Type | Description | -|--------|------|-------------| +| Plugin | Type | Description | +| ---------------------------- | ---- | ----------- | | [🔧 my-plugin](./my-plugin/) | Type | Description | ## Development Guidelines @@ -177,6 +179,7 @@ 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 diff --git a/README.md b/README.md index ada396a..c5fcf9b 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,7 @@ This repository ships per-harness plugin metadata in place: ## Usage Examples ### Parallel Team Execution + ```bash # Delegate to team agents for parallel work /duyetbot:spawn Implement the frontend dashboard @@ -119,6 +120,7 @@ This repository ships per-harness plugin metadata in place: ``` ### Smart GitHub Workflow + ```bash # Automatically creates feature branch from main /gh-pr create "Add user settings page" @@ -126,6 +128,7 @@ This repository ships per-harness 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 @@ -138,20 +141,19 @@ This repository ships per-harness 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... | --- @@ -164,16 +166,18 @@ This repository ships per-harness 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** --- @@ -182,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 ``` --- @@ -196,7 +200,8 @@ Skills: **Components:** Skills: - - **frontend-design** + +- **frontend-design** --- @@ -205,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 ``` --- @@ -215,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` ``` --- @@ -229,7 +234,8 @@ Skills: **Components:** Skills: - - **orchestration** + +- **orchestration** --- @@ -238,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** --- @@ -263,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 ``` --- @@ -277,7 +285,8 @@ Automatically detects when you're on main/master and creates feature branches be **Components:** Skills: - - **github** + +- **github** --- @@ -288,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) @@ -302,7 +312,8 @@ Auto-detects project type and runs appropriate checks. Spawns parallel agents fo **Components:** Skills: - - **test-detection** + +- **test-detection** --- @@ -315,16 +326,12 @@ Covers 45 dashboard pages including query monitoring, table management, merge op **Components:** Skills: - - **clickhouse-monitoring** - ---- - - - +- **clickhouse-monitoring** --- +--- ## Manual Installation @@ -347,7 +354,7 @@ Add to `~/.claude/settings.json`: ## Contributing -``` +```text your-plugin/ ├── .claude-plugin/plugin.json # name, version, description, logo ├── .codex-plugin/plugin.json # Codex manifest, interface, logo diff --git a/agent-loop/.antigravity-plugin/plugin.json b/agent-loop/.antigravity-plugin/plugin.json index 75611ae..fad7937 100644 --- a/agent-loop/.antigravity-plugin/plugin.json +++ b/agent-loop/.antigravity-plugin/plugin.json @@ -32,10 +32,7 @@ "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/.codex-plugin/plugin.json b/agent-loop/.codex-plugin/plugin.json index dda4848..9197d0e 100644 --- a/agent-loop/.codex-plugin/plugin.json +++ b/agent-loop/.codex-plugin/plugin.json @@ -31,10 +31,7 @@ "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 index e67ab45..75c0a8a 100644 --- a/agent-loop/.grok-build-plugin/plugin.json +++ b/agent-loop/.grok-build-plugin/plugin.json @@ -12,10 +12,7 @@ "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-plugin/plugin.json b/agent-loop/.grok-plugin/plugin.json index 958e363..be9a2ec 100644 --- a/agent-loop/.grok-plugin/plugin.json +++ b/agent-loop/.grok-plugin/plugin.json @@ -7,12 +7,7 @@ }, "license": "MIT", "logo": "assets/logo.svg", - "keywords": [ - "agent-loop", - "grok", - "grok-build", - "grok-bot" - ], + "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 7315f14..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 diff --git a/anyrouter/.codex-plugin/plugin.json b/anyrouter/.codex-plugin/plugin.json index 3d4f9da..0caf5ed 100644 --- a/anyrouter/.codex-plugin/plugin.json +++ b/anyrouter/.codex-plugin/plugin.json @@ -14,12 +14,7 @@ "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" - ], + "capabilities": ["Skill", "Command", "Agent", "MCP"], "links": { "homepage": "https://anyrouter.dev", "docs": "https://anyrouter.dev/docs", diff --git a/anyrouter/.grok-build-plugin/plugin.json b/anyrouter/.grok-build-plugin/plugin.json index 2820a46..add72ca 100644 --- a/anyrouter/.grok-build-plugin/plugin.json +++ b/anyrouter/.grok-build-plugin/plugin.json @@ -14,12 +14,7 @@ "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" - ], + "capabilities": ["Skill", "Command", "Agent", "MCP"], "links": { "homepage": "https://anyrouter.dev", "docs": "https://anyrouter.dev/docs", diff --git a/anyrouter/.grok-plugin/plugin.json b/anyrouter/.grok-plugin/plugin.json index b43bc81..85bec2a 100644 --- a/anyrouter/.grok-plugin/plugin.json +++ b/anyrouter/.grok-plugin/plugin.json @@ -10,12 +10,7 @@ "homepage": "https://anyrouter.dev", "repository": "https://github.com/duyet/codex-claude-plugins", "logo": "assets/logo.svg", - "keywords": [ - "anyrouter", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["anyrouter", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/", "agents": "./agents/", diff --git a/anyrouter/README.md b/anyrouter/README.md index 4659857..2f50038 100644 --- a/anyrouter/README.md +++ b/anyrouter/README.md @@ -11,7 +11,7 @@ This plugin ships as a **Claude Code plugin** (`.claude-plugin/`), a **Codex plu - **`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,7 +28,7 @@ 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 @@ -43,7 +43,7 @@ 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 @@ -58,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/build-ios-apps/.codex-plugin/plugin.json b/build-ios-apps/.codex-plugin/plugin.json index cadc124..1bf8ebe 100644 --- a/build-ios-apps/.codex-plugin/plugin.json +++ b/build-ios-apps/.codex-plugin/plugin.json @@ -12,10 +12,7 @@ "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" - ], + "capabilities": ["Skill", "Agent"], "links": { "homepage": "https://github.com/duyet/codex-claude-plugins" }, diff --git a/build-ios-apps/.grok-build-plugin/plugin.json b/build-ios-apps/.grok-build-plugin/plugin.json index d7f67db..9881ce0 100644 --- a/build-ios-apps/.grok-build-plugin/plugin.json +++ b/build-ios-apps/.grok-build-plugin/plugin.json @@ -12,10 +12,7 @@ "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" - ], + "capabilities": ["Skill", "Agent"], "links": { "homepage": "https://github.com/duyet/codex-claude-plugins" }, diff --git a/build-ios-apps/.grok-plugin/plugin.json b/build-ios-apps/.grok-plugin/plugin.json index da74c8e..5696ab2 100644 --- a/build-ios-apps/.grok-plugin/plugin.json +++ b/build-ios-apps/.grok-plugin/plugin.json @@ -10,12 +10,7 @@ "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" - ], + "keywords": ["build-ios-apps", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "agents": "./agents/" } diff --git a/build-macos-apps/.codex-plugin/plugin.json b/build-macos-apps/.codex-plugin/plugin.json index 223acf9..c8eb112 100644 --- a/build-macos-apps/.codex-plugin/plugin.json +++ b/build-macos-apps/.codex-plugin/plugin.json @@ -13,11 +13,7 @@ "shortDescription": "Build, debug, instrument, and implement macOS apps with SwiftUI and AppKit guidance", "developerName": "duyet", "category": "development", - "capabilities": [ - "Skill", - "Command", - "Agent" - ], + "capabilities": ["Skill", "Command", "Agent"], "links": { "homepage": "https://github.com/duyet/codex-claude-plugins" }, diff --git a/build-macos-apps/.grok-build-plugin/plugin.json b/build-macos-apps/.grok-build-plugin/plugin.json index 00e721b..23648f8 100644 --- a/build-macos-apps/.grok-build-plugin/plugin.json +++ b/build-macos-apps/.grok-build-plugin/plugin.json @@ -13,11 +13,7 @@ "shortDescription": "Build, debug, instrument, and implement macOS apps with SwiftUI and AppKit guidance", "developerName": "duyet", "category": "development", - "capabilities": [ - "Skill", - "Command", - "Agent" - ], + "capabilities": ["Skill", "Command", "Agent"], "links": { "homepage": "https://github.com/duyet/codex-claude-plugins" }, diff --git a/build-macos-apps/.grok-plugin/plugin.json b/build-macos-apps/.grok-plugin/plugin.json index adae623..d89ab76 100644 --- a/build-macos-apps/.grok-plugin/plugin.json +++ b/build-macos-apps/.grok-plugin/plugin.json @@ -10,12 +10,7 @@ "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" - ], + "keywords": ["build-macos-apps", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/", "agents": "./agents/" diff --git a/clickhouse-monitoring/.codex-plugin/plugin.json b/clickhouse-monitoring/.codex-plugin/plugin.json index 76c3c96..c007f88 100644 --- a/clickhouse-monitoring/.codex-plugin/plugin.json +++ b/clickhouse-monitoring/.codex-plugin/plugin.json @@ -11,9 +11,7 @@ "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" - ], + "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 index 3397f64..632bc18 100644 --- a/clickhouse-monitoring/.grok-build-plugin/plugin.json +++ b/clickhouse-monitoring/.grok-build-plugin/plugin.json @@ -11,9 +11,7 @@ "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" - ], + "capabilities": ["Skill"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/clickhouse-monitoring/.grok-plugin/plugin.json b/clickhouse-monitoring/.grok-plugin/plugin.json index 1e71235..56aa9e7 100644 --- a/clickhouse-monitoring/.grok-plugin/plugin.json +++ b/clickhouse-monitoring/.grok-plugin/plugin.json @@ -6,11 +6,6 @@ "name": "duyet" }, "logo": "assets/logo.svg", - "keywords": [ - "clickhouse-monitoring", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["clickhouse-monitoring", "grok", "grok-build", "grok-bot"], "skills": "./skills/" } diff --git a/clickhouse/.codex-plugin/plugin.json b/clickhouse/.codex-plugin/plugin.json index 8dbf56b..b31d1b7 100644 --- a/clickhouse/.codex-plugin/plugin.json +++ b/clickhouse/.codex-plugin/plugin.json @@ -11,9 +11,7 @@ "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" - ], + "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 index f3d47ec..09b55ff 100644 --- a/clickhouse/.grok-build-plugin/plugin.json +++ b/clickhouse/.grok-build-plugin/plugin.json @@ -11,9 +11,7 @@ "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" - ], + "capabilities": ["Skill"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/clickhouse/.grok-plugin/plugin.json b/clickhouse/.grok-plugin/plugin.json index be05ff7..4e484b3 100644 --- a/clickhouse/.grok-plugin/plugin.json +++ b/clickhouse/.grok-plugin/plugin.json @@ -6,11 +6,6 @@ "name": "duyetbot" }, "logo": "assets/logo.svg", - "keywords": [ - "clickhouse", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["clickhouse", "grok", "grok-build", "grok-bot"], "skills": "./skills/" } diff --git a/command-code/.codex-plugin/plugin.json b/command-code/.codex-plugin/plugin.json index 424720e..772b60a 100644 --- a/command-code/.codex-plugin/plugin.json +++ b/command-code/.codex-plugin/plugin.json @@ -13,11 +13,7 @@ "shortDescription": "Drive & orchestrate the Command Code CLI (`cmd`) as a headless sub-agent.", "developerName": "duyet", "category": "Developer Tools", - "capabilities": [ - "Skill", - "Command", - "Agent" - ], + "capabilities": ["Skill", "Command", "Agent"], "links": { "homepage": "https://github.com/duyet/claude-plugins" }, diff --git a/command-code/.grok-build-plugin/plugin.json b/command-code/.grok-build-plugin/plugin.json index 538f751..824f88e 100644 --- a/command-code/.grok-build-plugin/plugin.json +++ b/command-code/.grok-build-plugin/plugin.json @@ -13,11 +13,7 @@ "shortDescription": "Drive & orchestrate the Command Code CLI (`cmd`) as a headless sub-agent.", "developerName": "duyet", "category": "Developer Tools", - "capabilities": [ - "Skill", - "Command", - "Agent" - ], + "capabilities": ["Skill", "Command", "Agent"], "links": { "homepage": "https://github.com/duyet/claude-plugins" }, diff --git a/command-code/.grok-plugin/plugin.json b/command-code/.grok-plugin/plugin.json index dcdd08f..d0b8f3d 100644 --- a/command-code/.grok-plugin/plugin.json +++ b/command-code/.grok-plugin/plugin.json @@ -10,12 +10,7 @@ "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" - ], + "keywords": ["command-code", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/", "agents": "./agents/" diff --git a/commit/.codex-plugin/plugin.json b/commit/.codex-plugin/plugin.json index 466010c..842e4eb 100644 --- a/commit/.codex-plugin/plugin.json +++ b/commit/.codex-plugin/plugin.json @@ -11,10 +11,7 @@ "shortDescription": "Create a Git commit with semantic commit message format and PR workflow with templates", "developerName": "duyet", "category": "Git", - "capabilities": [ - "Skill", - "Command" - ], + "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 index 7e037c3..090130f 100644 --- a/commit/.grok-build-plugin/plugin.json +++ b/commit/.grok-build-plugin/plugin.json @@ -11,10 +11,7 @@ "shortDescription": "Create a Git commit with semantic commit message format and PR workflow with templates", "developerName": "duyet", "category": "Git", - "capabilities": [ - "Skill", - "Command" - ], + "capabilities": ["Skill", "Command"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/commit/.grok-plugin/plugin.json b/commit/.grok-plugin/plugin.json index 01b47c1..3663b59 100644 --- a/commit/.grok-plugin/plugin.json +++ b/commit/.grok-plugin/plugin.json @@ -6,12 +6,7 @@ "name": "duyet" }, "logo": "assets/logo.svg", - "keywords": [ - "commit", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["commit", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/" } diff --git a/docs-generator/.codex-plugin/plugin.json b/docs-generator/.codex-plugin/plugin.json index 879df17..d2e4a40 100644 --- a/docs-generator/.codex-plugin/plugin.json +++ b/docs-generator/.codex-plugin/plugin.json @@ -13,11 +13,7 @@ "shortDescription": "Automatically generate and maintain plugin documentation (README.md, CLAUDE.md)", "developerName": "duyet", "category": "Docs", - "capabilities": [ - "Skill", - "Command", - "Hook" - ], + "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 index 844a6a3..a8ac158 100644 --- a/docs-generator/.grok-build-plugin/plugin.json +++ b/docs-generator/.grok-build-plugin/plugin.json @@ -13,11 +13,7 @@ "shortDescription": "Automatically generate and maintain plugin documentation (README.md, CLAUDE.md)", "developerName": "duyet", "category": "Docs", - "capabilities": [ - "Skill", - "Command", - "Hook" - ], + "capabilities": ["Skill", "Command", "Hook"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/docs-generator/.grok-plugin/plugin.json b/docs-generator/.grok-plugin/plugin.json index 48405ec..ac12ba4 100644 --- a/docs-generator/.grok-plugin/plugin.json +++ b/docs-generator/.grok-plugin/plugin.json @@ -6,12 +6,7 @@ "name": "duyet" }, "logo": "assets/logo.svg", - "keywords": [ - "docs-generator", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["docs-generator", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/", "hooks": "./hooks/hooks.json" diff --git a/docs-generator/scripts/generate-docs.sh b/docs-generator/scripts/generate-docs.sh index 2601088..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,39 +17,39 @@ 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' + # Start building README + cat >"$output" <<'EOF' # Claude/Codex/Grok Plugins Marketplace > Extend Claude Code, Codex, Grok Build, and Grok Bot with specialized agents, commands, and skills. @@ -65,12 +65,12 @@ 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 @@ -87,35 +87,33 @@ Codex uses `.agents/plugins/marketplace.json`. Plugin logos live at `assets/logo ## 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' --- @@ -124,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 @@ -198,7 +204,7 @@ Add to `~/.claude/settings.json`: ## Contributing -``` +```text your-plugin/ ├── .claude-plugin/plugin.json # name, version, description, logo ├── .codex-plugin/plugin.json # Codex manifest and interface metadata @@ -218,27 +224,27 @@ Update `marketplace.json`, `.claude-plugin/marketplace.json`, `.agents/plugins/m 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/.codex-plugin/plugin.json b/duyetbot/.codex-plugin/plugin.json index 60fbce9..4ec12df 100644 --- a/duyetbot/.codex-plugin/plugin.json +++ b/duyetbot/.codex-plugin/plugin.json @@ -12,10 +12,7 @@ "shortDescription": "Pragmatic software development companion with engineering discipline and transparent execution.", "developerName": "duyet", "category": "Productivity", - "capabilities": [ - "Skill", - "Command" - ], + "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 index c433655..bc0b11c 100644 --- a/duyetbot/.grok-build-plugin/plugin.json +++ b/duyetbot/.grok-build-plugin/plugin.json @@ -12,10 +12,7 @@ "shortDescription": "Pragmatic software development companion with engineering discipline and transparent execution.", "developerName": "duyet", "category": "Productivity", - "capabilities": [ - "Skill", - "Command" - ], + "capabilities": ["Skill", "Command"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/duyetbot/.grok-plugin/plugin.json b/duyetbot/.grok-plugin/plugin.json index 250ddb6..00132e3 100644 --- a/duyetbot/.grok-plugin/plugin.json +++ b/duyetbot/.grok-plugin/plugin.json @@ -6,12 +6,7 @@ "name": "duyet" }, "logo": "assets/logo.svg", - "keywords": [ - "duyetbot", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["duyetbot", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/", "agents": "./agents/", diff --git a/fix/.codex-plugin/plugin.json b/fix/.codex-plugin/plugin.json index db167f1..0a7e11e 100644 --- a/fix/.codex-plugin/plugin.json +++ b/fix/.codex-plugin/plugin.json @@ -11,10 +11,7 @@ "shortDescription": "Fix issues, tests, and CI failures with intelligent problem detection and resolution", "developerName": "duyet", "category": "Productivity", - "capabilities": [ - "Skill", - "Command" - ], + "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 index f3cc6c6..4ada017 100644 --- a/fix/.grok-build-plugin/plugin.json +++ b/fix/.grok-build-plugin/plugin.json @@ -11,10 +11,7 @@ "shortDescription": "Fix issues, tests, and CI failures with intelligent problem detection and resolution", "developerName": "duyet", "category": "Productivity", - "capabilities": [ - "Skill", - "Command" - ], + "capabilities": ["Skill", "Command"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/fix/.grok-plugin/plugin.json b/fix/.grok-plugin/plugin.json index 890d385..f9c1c5d 100644 --- a/fix/.grok-plugin/plugin.json +++ b/fix/.grok-plugin/plugin.json @@ -6,12 +6,7 @@ "name": "duyet" }, "logo": "assets/logo.svg", - "keywords": [ - "fix", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["fix", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/" } diff --git a/frontend-design/.codex-plugin/plugin.json b/frontend-design/.codex-plugin/plugin.json index 57c44bb..ae9486a 100644 --- a/frontend-design/.codex-plugin/plugin.json +++ b/frontend-design/.codex-plugin/plugin.json @@ -12,9 +12,7 @@ "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" - ], + "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 index 2a1fdcd..d1044f1 100644 --- a/frontend-design/.grok-build-plugin/plugin.json +++ b/frontend-design/.grok-build-plugin/plugin.json @@ -12,9 +12,7 @@ "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" - ], + "capabilities": ["Skill"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/frontend-design/.grok-plugin/plugin.json b/frontend-design/.grok-plugin/plugin.json index ea984e9..b6ac912 100644 --- a/frontend-design/.grok-plugin/plugin.json +++ b/frontend-design/.grok-plugin/plugin.json @@ -7,11 +7,6 @@ "email": "me@duyet.net" }, "logo": "assets/logo.svg", - "keywords": [ - "frontend-design", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["frontend-design", "grok", "grok-build", "grok-bot"], "skills": "./skills/" } diff --git a/github/.codex-plugin/plugin.json b/github/.codex-plugin/plugin.json index 6893ce6..cfbb6a8 100644 --- a/github/.codex-plugin/plugin.json +++ b/github/.codex-plugin/plugin.json @@ -12,10 +12,7 @@ "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" - ], + "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 index dd89cb4..d215ffe 100644 --- a/github/.grok-build-plugin/plugin.json +++ b/github/.grok-build-plugin/plugin.json @@ -12,10 +12,7 @@ "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" - ], + "capabilities": ["Skill", "Command"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/github/.grok-plugin/plugin.json b/github/.grok-plugin/plugin.json index ef590d2..24d8e15 100644 --- a/github/.grok-plugin/plugin.json +++ b/github/.grok-plugin/plugin.json @@ -7,12 +7,7 @@ }, "license": "MIT", "logo": "assets/logo.svg", - "keywords": [ - "github", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["github", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/" } diff --git a/good-html/.codex-plugin/plugin.json b/good-html/.codex-plugin/plugin.json index abd8e4e..946c946 100644 --- a/good-html/.codex-plugin/plugin.json +++ b/good-html/.codex-plugin/plugin.json @@ -10,9 +10,7 @@ "shortDescription": "High-density interactive HTML artifacts.", "developerName": "Gemini CLI", "category": "Development", - "capabilities": [ - "Skill" - ], + "capabilities": ["Skill"], "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 index f373f9c..cb81623 100644 --- a/good-html/.grok-build-plugin/plugin.json +++ b/good-html/.grok-build-plugin/plugin.json @@ -10,9 +10,7 @@ "shortDescription": "High-density interactive HTML artifacts.", "developerName": "Gemini CLI", "category": "Development", - "capabilities": [ - "Skill" - ], + "capabilities": ["Skill"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/good-html/.grok-plugin/plugin.json b/good-html/.grok-plugin/plugin.json index 332bc82..3d5b603 100644 --- a/good-html/.grok-plugin/plugin.json +++ b/good-html/.grok-plugin/plugin.json @@ -6,10 +6,5 @@ "name": "Gemini CLI" }, "logo": "assets/logo.svg", - "keywords": [ - "good-html", - "grok", - "grok-build", - "grok-bot" - ] + "keywords": ["good-html", "grok", "grok-build", "grok-bot"] } diff --git a/interview/.codex-plugin/plugin.json b/interview/.codex-plugin/plugin.json index 3c128d6..31c3eab 100644 --- a/interview/.codex-plugin/plugin.json +++ b/interview/.codex-plugin/plugin.json @@ -13,10 +13,7 @@ "shortDescription": "Conduct in-depth requirements interviews using Socratic questioning to clarify implementation details before coding", "developerName": "duyet", "category": "Productivity", - "capabilities": [ - "Skill", - "Command" - ], + "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 index 0fd9ac8..13af744 100644 --- a/interview/.grok-build-plugin/plugin.json +++ b/interview/.grok-build-plugin/plugin.json @@ -13,10 +13,7 @@ "shortDescription": "Conduct in-depth requirements interviews using Socratic questioning to clarify implementation details before coding", "developerName": "duyet", "category": "Productivity", - "capabilities": [ - "Skill", - "Command" - ], + "capabilities": ["Skill", "Command"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/interview/.grok-plugin/plugin.json b/interview/.grok-plugin/plugin.json index 67ccbf5..589ce7b 100644 --- a/interview/.grok-plugin/plugin.json +++ b/interview/.grok-plugin/plugin.json @@ -7,12 +7,7 @@ "email": "me@duyet.net" }, "logo": "assets/logo.svg", - "keywords": [ - "interview", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["interview", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/" } diff --git a/kb/.codex-plugin/plugin.json b/kb/.codex-plugin/plugin.json index 6b64e54..1c1b13e 100644 --- a/kb/.codex-plugin/plugin.json +++ b/kb/.codex-plugin/plugin.json @@ -12,10 +12,7 @@ "shortDescription": "Initialize and maintain a markdown knowledge base: consolidate, dedupe, prune, and forget notes.", "developerName": "duyet", "category": "productivity", - "capabilities": [ - "Skill", - "Command" - ], + "capabilities": ["Skill", "Command"], "links": { "homepage": "https://github.com/duyet/codex-claude-plugins" }, diff --git a/kb/.grok-build-plugin/plugin.json b/kb/.grok-build-plugin/plugin.json index c35d33e..31a05cc 100644 --- a/kb/.grok-build-plugin/plugin.json +++ b/kb/.grok-build-plugin/plugin.json @@ -12,10 +12,7 @@ "shortDescription": "Initialize and maintain a markdown knowledge base: consolidate, dedupe, prune, and forget notes.", "developerName": "duyet", "category": "productivity", - "capabilities": [ - "Skill", - "Command" - ], + "capabilities": ["Skill", "Command"], "links": { "homepage": "https://github.com/duyet/codex-claude-plugins" }, diff --git a/kb/.grok-plugin/plugin.json b/kb/.grok-plugin/plugin.json index c2fbf10..82aa339 100644 --- a/kb/.grok-plugin/plugin.json +++ b/kb/.grok-plugin/plugin.json @@ -10,12 +10,7 @@ "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" - ], + "keywords": ["kb", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/" } diff --git a/okf/.codex-plugin/plugin.json b/okf/.codex-plugin/plugin.json index 95ffde1..faa6917 100644 --- a/okf/.codex-plugin/plugin.json +++ b/okf/.codex-plugin/plugin.json @@ -11,9 +11,7 @@ "shortDescription": "Author, validate, render, and refactor knowledge into OKF v0.1 bundles (markdown + YAML frontmatter).", "developerName": "duyet", "category": "productivity", - "capabilities": [ - "Skill" - ], + "capabilities": ["Skill"], "links": { "homepage": "https://github.com/duyet/codex-claude-plugins" }, diff --git a/okf/.grok-build-plugin/plugin.json b/okf/.grok-build-plugin/plugin.json index da9365c..9574661 100644 --- a/okf/.grok-build-plugin/plugin.json +++ b/okf/.grok-build-plugin/plugin.json @@ -11,9 +11,7 @@ "shortDescription": "Author, validate, render, and refactor knowledge into OKF v0.1 bundles (markdown + YAML frontmatter).", "developerName": "duyet", "category": "productivity", - "capabilities": [ - "Skill" - ], + "capabilities": ["Skill"], "links": { "homepage": "https://github.com/duyet/codex-claude-plugins" }, diff --git a/okf/.grok-plugin/plugin.json b/okf/.grok-plugin/plugin.json index a5e5912..69c02f1 100644 --- a/okf/.grok-plugin/plugin.json +++ b/okf/.grok-plugin/plugin.json @@ -10,11 +10,6 @@ "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" - ], + "keywords": ["okf", "grok", "grok-build", "grok-bot"], "skills": "./skills/" } diff --git a/orchestration/.codex-plugin/plugin.json b/orchestration/.codex-plugin/plugin.json index 88354f6..548df04 100644 --- a/orchestration/.codex-plugin/plugin.json +++ b/orchestration/.codex-plugin/plugin.json @@ -11,9 +11,7 @@ "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" - ], + "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 index 3d0953e..a89ef2f 100644 --- a/orchestration/.grok-build-plugin/plugin.json +++ b/orchestration/.grok-build-plugin/plugin.json @@ -11,9 +11,7 @@ "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" - ], + "capabilities": ["Skill"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/orchestration/.grok-plugin/plugin.json b/orchestration/.grok-plugin/plugin.json index d98cc95..ea44b2d 100644 --- a/orchestration/.grok-plugin/plugin.json +++ b/orchestration/.grok-plugin/plugin.json @@ -6,11 +6,6 @@ "name": "duyet" }, "logo": "assets/logo.svg", - "keywords": [ - "orchestration", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["orchestration", "grok", "grok-build", "grok-bot"], "skills": "./skills/" } diff --git a/prompt-engineering/.codex-plugin/plugin.json b/prompt-engineering/.codex-plugin/plugin.json index 7c4e701..716515a 100644 --- a/prompt-engineering/.codex-plugin/plugin.json +++ b/prompt-engineering/.codex-plugin/plugin.json @@ -11,9 +11,7 @@ "shortDescription": "Prompt engineering skills for Grok, Claude, and Gemini LLMs with model-specific guidance and universal techniques", "developerName": "duyetbot", "category": "Productivity", - "capabilities": [ - "Skill" - ], + "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 index dbc5f8b..3843262 100644 --- a/prompt-engineering/.grok-build-plugin/plugin.json +++ b/prompt-engineering/.grok-build-plugin/plugin.json @@ -11,9 +11,7 @@ "shortDescription": "Prompt engineering skills for Grok, Claude, and Gemini LLMs with model-specific guidance and universal techniques", "developerName": "duyetbot", "category": "Productivity", - "capabilities": [ - "Skill" - ], + "capabilities": ["Skill"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/prompt-engineering/.grok-plugin/plugin.json b/prompt-engineering/.grok-plugin/plugin.json index 2101fee..9295966 100644 --- a/prompt-engineering/.grok-plugin/plugin.json +++ b/prompt-engineering/.grok-plugin/plugin.json @@ -6,11 +6,6 @@ "name": "duyetbot" }, "logo": "assets/logo.svg", - "keywords": [ - "prompt-engineering", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["prompt-engineering", "grok", "grok-build", "grok-bot"], "skills": "./skills/" } diff --git a/sag-notify/.codex-plugin/plugin.json b/sag-notify/.codex-plugin/plugin.json index 379d5ff..7b4100f 100644 --- a/sag-notify/.codex-plugin/plugin.json +++ b/sag-notify/.codex-plugin/plugin.json @@ -12,10 +12,7 @@ "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" - ], + "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 index 23352a7..ad47eea 100644 --- a/sag-notify/.grok-build-plugin/plugin.json +++ b/sag-notify/.grok-build-plugin/plugin.json @@ -12,10 +12,7 @@ "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" - ], + "capabilities": ["Skill", "Command"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/sag-notify/.grok-plugin/plugin.json b/sag-notify/.grok-plugin/plugin.json index ebe7d58..ca50473 100644 --- a/sag-notify/.grok-plugin/plugin.json +++ b/sag-notify/.grok-plugin/plugin.json @@ -6,12 +6,7 @@ "name": "duyet" }, "logo": "assets/logo.svg", - "keywords": [ - "sag-notify", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["sag-notify", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/" } diff --git a/scripts/validate-plugins.sh b/scripts/validate-plugins.sh index 06705f4..c0d03ef 100755 --- a/scripts/validate-plugins.sh +++ b/scripts/validate-plugins.sh @@ -12,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 @@ -143,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 @@ -217,7 +217,7 @@ PYEOF } validate_marketplaces() { - python3 - "$REPO_ROOT" <<'PYEOF' + python3 - "$REPO_ROOT" <<'PYEOF' import json import os import sys @@ -355,33 +355,33 @@ 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) 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 + 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 + 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 @@ -391,5 +391,5 @@ echo "" echo "Checked $CHECKED item(s). $FAILED failed." if [[ $FAILED -gt 0 ]]; then - exit 1 + exit 1 fi diff --git a/simplify/.codex-plugin/plugin.json b/simplify/.codex-plugin/plugin.json index 7a59e93..d65ea35 100644 --- a/simplify/.codex-plugin/plugin.json +++ b/simplify/.codex-plugin/plugin.json @@ -12,10 +12,7 @@ "shortDescription": "Review changed code for reuse, quality, and efficiency, then simplify issues found", "developerName": "duyet", "category": "Productivity", - "capabilities": [ - "Skill", - "Command" - ], + "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 index 86d8885..05d6a5e 100644 --- a/simplify/.grok-build-plugin/plugin.json +++ b/simplify/.grok-build-plugin/plugin.json @@ -12,10 +12,7 @@ "shortDescription": "Review changed code for reuse, quality, and efficiency, then simplify issues found", "developerName": "duyet", "category": "Productivity", - "capabilities": [ - "Skill", - "Command" - ], + "capabilities": ["Skill", "Command"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/simplify/.grok-plugin/plugin.json b/simplify/.grok-plugin/plugin.json index 7126228..8524ead 100644 --- a/simplify/.grok-plugin/plugin.json +++ b/simplify/.grok-plugin/plugin.json @@ -6,12 +6,7 @@ "name": "duyet" }, "logo": "assets/logo.svg", - "keywords": [ - "simplify", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["simplify", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/" } diff --git a/statusline/.codex-plugin/plugin.json b/statusline/.codex-plugin/plugin.json index 68f1618..c73f358 100644 --- a/statusline/.codex-plugin/plugin.json +++ b/statusline/.codex-plugin/plugin.json @@ -12,10 +12,7 @@ "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" - ], + "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 index 51fc6fc..5356c07 100644 --- a/statusline/.grok-build-plugin/plugin.json +++ b/statusline/.grok-build-plugin/plugin.json @@ -12,10 +12,7 @@ "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" - ], + "capabilities": ["Skill", "Command"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/statusline/.grok-plugin/plugin.json b/statusline/.grok-plugin/plugin.json index 613fc23..c01b725 100644 --- a/statusline/.grok-plugin/plugin.json +++ b/statusline/.grok-plugin/plugin.json @@ -6,12 +6,7 @@ "name": "duyet" }, "logo": "assets/logo.svg", - "keywords": [ - "statusline", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["statusline", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/", "hooks": "./hooks/hooks.json" diff --git a/team-agents/.codex-plugin/plugin.json b/team-agents/.codex-plugin/plugin.json index 6976876..9e4e597 100644 --- a/team-agents/.codex-plugin/plugin.json +++ b/team-agents/.codex-plugin/plugin.json @@ -11,11 +11,7 @@ "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" - ], + "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 index c91d972..1c744b5 100644 --- a/team-agents/.grok-build-plugin/plugin.json +++ b/team-agents/.grok-build-plugin/plugin.json @@ -11,11 +11,7 @@ "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" - ], + "capabilities": ["Skill", "Command", "Agent"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/team-agents/.grok-plugin/plugin.json b/team-agents/.grok-plugin/plugin.json index 6fd5f11..16df461 100644 --- a/team-agents/.grok-plugin/plugin.json +++ b/team-agents/.grok-plugin/plugin.json @@ -6,12 +6,7 @@ "name": "duyet" }, "logo": "assets/logo.svg", - "keywords": [ - "team-agents", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["team-agents", "grok", "grok-build", "grok-bot"], "skills": "./skills/", "commands": "./commands/", "agents": "./agents/" diff --git a/unsloth-training/.codex-plugin/plugin.json b/unsloth-training/.codex-plugin/plugin.json index 93f30ef..b495602 100644 --- a/unsloth-training/.codex-plugin/plugin.json +++ b/unsloth-training/.codex-plugin/plugin.json @@ -12,9 +12,7 @@ "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" - ], + "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 index 231b23a..67b54e1 100644 --- a/unsloth-training/.grok-build-plugin/plugin.json +++ b/unsloth-training/.grok-build-plugin/plugin.json @@ -12,9 +12,7 @@ "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" - ], + "capabilities": ["Skill"], "logo": "./assets/logo.svg", "composerIcon": "./assets/logo.svg" }, diff --git a/unsloth-training/.grok-plugin/plugin.json b/unsloth-training/.grok-plugin/plugin.json index 1b9b4be..873fd60 100644 --- a/unsloth-training/.grok-plugin/plugin.json +++ b/unsloth-training/.grok-plugin/plugin.json @@ -7,11 +7,6 @@ }, "license": "MIT", "logo": "assets/logo.svg", - "keywords": [ - "unsloth-training", - "grok", - "grok-build", - "grok-bot" - ], + "keywords": ["unsloth-training", "grok", "grok-build", "grok-bot"], "skills": "./skills/" }