Skip to content

Commit f706ecc

Browse files
authored
Merge pull request #9 from hashgraph-online/feat/plugins-json
Add machine-readable plugins.json with sync validation
2 parents dd42eb5 + 461196a commit f706ecc

3 files changed

Lines changed: 327 additions & 0 deletions

File tree

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Validate plugins.json
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- README.md
7+
- plugins.json
8+
- scripts/generate_plugins_json.py
9+
push:
10+
branches: [main]
11+
paths:
12+
- README.md
13+
- plugins.json
14+
- scripts/generate_plugins_json.py
15+
16+
jobs:
17+
validate:
18+
name: Check plugins.json matches README
19+
runs-on: ubuntu-latest
20+
permissions:
21+
contents: read
22+
steps:
23+
- uses: actions/checkout@v4
24+
- uses: actions/setup-python@v5
25+
with:
26+
python-version: "3.12"
27+
- name: Regenerate and compare
28+
run: |
29+
python3 scripts/generate_plugins_json.py
30+
if ! git diff --quiet plugins.json; then
31+
echo "::error::plugins.json is out of sync with README.md. Run: python3 scripts/generate_plugins_json.py"
32+
git diff plugins.json
33+
exit 1
34+
fi
35+
echo "plugins.json is up to date"

plugins.json

Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
{
2+
"$schema": "https://json-schema.org/draft/2020-12/schema",
3+
"name": "awesome-codex-plugins",
4+
"version": "1.0.0",
5+
"last_updated": "2026-03-30",
6+
"total": 19,
7+
"categories": [
8+
"Development & Workflow",
9+
"Tools & Integrations"
10+
],
11+
"plugins": [
12+
{
13+
"name": "Registry Broker",
14+
"url": "https://github.com/hashgraph-online/registry-broker-codex-plugin",
15+
"owner": "hashgraph-online",
16+
"repo": "registry-broker-codex-plugin",
17+
"description": "Delegate tasks to specialist AI agents via the HOL Registry, plan, find, summon, and recover sessions.",
18+
"category": "Development & Workflow",
19+
"source": "awesome-codex-plugins",
20+
"install_url": "https://raw.githubusercontent.com/hashgraph-online/registry-broker-codex-plugin/main/.codex-plugin/plugin.json"
21+
},
22+
{
23+
"name": "AgentOps",
24+
"url": "https://github.com/boshu2/agentops",
25+
"owner": "boshu2",
26+
"repo": "agentops",
27+
"description": "DevOps layer for coding agents with flow, feedback, and memory that compounds between sessions.",
28+
"category": "Development & Workflow",
29+
"source": "awesome-codex-plugins",
30+
"install_url": "https://raw.githubusercontent.com/boshu2/agentops/main/.codex-plugin/plugin.json"
31+
},
32+
{
33+
"name": "Claude Octopus",
34+
"url": "https://github.com/nyldn/claude-octopus",
35+
"owner": "nyldn",
36+
"repo": "claude-octopus",
37+
"description": "Multi-LLM orchestration dispatching to 8 providers (Codex, Gemini, Copilot, Qwen, Perplexity, OpenRouter, Ollama, OpenCode) with Double Diamond workflows, adversarial review, and safety gates.",
38+
"category": "Development & Workflow",
39+
"source": "awesome-codex-plugins",
40+
"install_url": "https://raw.githubusercontent.com/nyldn/claude-octopus/main/.codex-plugin/plugin.json"
41+
},
42+
{
43+
"name": "Codex Multi Auth",
44+
"url": "https://github.com/ndycode/codex-multi-auth",
45+
"owner": "ndycode",
46+
"repo": "codex-multi-auth",
47+
"description": "Multi-account OAuth manager for the official Codex CLI with switching, health checks, and recovery tools.",
48+
"category": "Development & Workflow",
49+
"source": "awesome-codex-plugins",
50+
"install_url": "https://raw.githubusercontent.com/ndycode/codex-multi-auth/main/.codex-plugin/plugin.json"
51+
},
52+
{
53+
"name": "Codex Reviewer",
54+
"url": "https://github.com/schuettc/codex-reviewer",
55+
"owner": "schuettc",
56+
"repo": "codex-reviewer",
57+
"description": "Second-pass review of Claude-driven plans and implementations.",
58+
"category": "Development & Workflow",
59+
"source": "awesome-codex-plugins",
60+
"install_url": "https://raw.githubusercontent.com/schuettc/codex-reviewer/main/.codex-plugin/plugin.json"
61+
},
62+
{
63+
"name": "HOTL Plugin",
64+
"url": "https://github.com/yimwoo/hotl-plugin",
65+
"owner": "yimwoo",
66+
"repo": "hotl-plugin",
67+
"description": "Human-on-the-Loop AI coding workflow plugin for Codex, Claude Code, and Cline with structured planning, review, and verification guardrails.",
68+
"category": "Development & Workflow",
69+
"source": "awesome-codex-plugins",
70+
"install_url": "https://raw.githubusercontent.com/yimwoo/hotl-plugin/main/.codex-plugin/plugin.json"
71+
},
72+
{
73+
"name": "Project Autopilot",
74+
"url": "https://github.com/AlexMi64/codex-project-autopilot",
75+
"owner": "AlexMi64",
76+
"repo": "codex-project-autopilot",
77+
"description": "Turn an idea into a structured project workflow with planning, execution, verification, and handoff.",
78+
"category": "Development & Workflow",
79+
"source": "awesome-codex-plugins",
80+
"install_url": "https://raw.githubusercontent.com/AlexMi64/codex-project-autopilot/main/.codex-plugin/plugin.json"
81+
},
82+
{
83+
"name": "Apple Productivity",
84+
"url": "https://github.com/matk0shub/apple-productivity-mcp",
85+
"owner": "matk0shub",
86+
"repo": "apple-productivity-mcp",
87+
"description": "Local Apple Calendar and Reminders tooling for macOS with Codex plugin adapters.",
88+
"category": "Tools & Integrations",
89+
"source": "awesome-codex-plugins",
90+
"install_url": "https://raw.githubusercontent.com/matk0shub/apple-productivity-mcp/main/.codex-plugin/plugin.json"
91+
},
92+
{
93+
"name": "Chrome DevTools",
94+
"url": "https://github.com/win4r/chrome-devtools-codex-plugin",
95+
"owner": "win4r",
96+
"repo": "chrome-devtools-codex-plugin",
97+
"description": "One-click Codex plugin wrapper for chrome-devtools-mcp.",
98+
"category": "Tools & Integrations",
99+
"source": "awesome-codex-plugins",
100+
"install_url": "https://raw.githubusercontent.com/win4r/chrome-devtools-codex-plugin/main/.codex-plugin/plugin.json"
101+
},
102+
{
103+
"name": "Codex Be Serious",
104+
"url": "https://github.com/lulucatdev/codex-be-serious",
105+
"owner": "lulucatdev",
106+
"repo": "codex-be-serious",
107+
"description": "Enforce formal, textbook-grade written register across all agent output.",
108+
"category": "Tools & Integrations",
109+
"source": "awesome-codex-plugins",
110+
"install_url": "https://raw.githubusercontent.com/lulucatdev/codex-be-serious/main/.codex-plugin/plugin.json"
111+
},
112+
{
113+
"name": "Codex Mem",
114+
"url": "https://github.com/2kDarki/codex-mem",
115+
"owner": "2kDarki",
116+
"repo": "codex-mem",
117+
"description": "Automatically capture, compress, and inject session context back into future Codex sessions.",
118+
"category": "Tools & Integrations",
119+
"source": "awesome-codex-plugins",
120+
"install_url": "https://raw.githubusercontent.com/2kDarki/codex-mem/main/.codex-plugin/plugin.json"
121+
},
122+
{
123+
"name": "Context Pack",
124+
"url": "https://github.com/Rothschildiuk/context-pack",
125+
"owner": "Rothschildiuk",
126+
"repo": "context-pack",
127+
"description": "Generate compact first-pass repository briefings for coding agents before deeper exploration.",
128+
"category": "Tools & Integrations",
129+
"source": "awesome-codex-plugins",
130+
"install_url": "https://raw.githubusercontent.com/Rothschildiuk/context-pack/main/.codex-plugin/plugin.json"
131+
},
132+
{
133+
"name": "Langfuse Observability",
134+
"url": "https://github.com/avivsinai/langfuse-mcp",
135+
"owner": "avivsinai",
136+
"repo": "langfuse-mcp",
137+
"description": "Query traces, debug exceptions, analyze sessions, and manage prompts via MCP tools.",
138+
"category": "Tools & Integrations",
139+
"source": "awesome-codex-plugins",
140+
"install_url": "https://raw.githubusercontent.com/avivsinai/langfuse-mcp/main/.codex-plugin/plugin.json"
141+
},
142+
{
143+
"name": "Launch Fast",
144+
"url": "https://github.com/BlockchainHB/launchfast_codex_plugin",
145+
"owner": "BlockchainHB",
146+
"repo": "launchfast_codex_plugin",
147+
"description": "Official Launch Fast plugin adapter for rapid SaaS deployment.",
148+
"category": "Tools & Integrations",
149+
"source": "awesome-codex-plugins",
150+
"install_url": "https://raw.githubusercontent.com/BlockchainHB/launchfast_codex_plugin/main/.codex-plugin/plugin.json"
151+
},
152+
{
153+
"name": "OC ChatGPT Multi Auth",
154+
"url": "https://github.com/ndycode/oc-chatgpt-multi-auth",
155+
"owner": "ndycode",
156+
"repo": "oc-chatgpt-multi-auth",
157+
"description": "Codex setup skill and OpenCode plugin for ChatGPT Plus/Pro OAuth, GPT-5/Codex presets, and multi-account failover.",
158+
"category": "Tools & Integrations",
159+
"source": "awesome-codex-plugins",
160+
"install_url": "https://raw.githubusercontent.com/ndycode/oc-chatgpt-multi-auth/main/.codex-plugin/plugin.json"
161+
},
162+
{
163+
"name": "OpenProject",
164+
"url": "https://github.com/varaprasadreddy9676/team-codex-plugins",
165+
"owner": "varaprasadreddy9676",
166+
"repo": "team-codex-plugins",
167+
"description": "Team collaboration via OpenProject integration.",
168+
"category": "Tools & Integrations",
169+
"source": "awesome-codex-plugins",
170+
"install_url": "https://raw.githubusercontent.com/varaprasadreddy9676/team-codex-plugins/main/.codex-plugin/plugin.json"
171+
},
172+
{
173+
"name": "OrgX",
174+
"url": "https://github.com/useorgx/orgx-codex-plugin",
175+
"owner": "useorgx",
176+
"repo": "orgx-codex-plugin",
177+
"description": "MCP access and initiative-aware skills for organizational workflows.",
178+
"category": "Tools & Integrations",
179+
"source": "awesome-codex-plugins",
180+
"install_url": "https://raw.githubusercontent.com/useorgx/orgx-codex-plugin/main/.codex-plugin/plugin.json"
181+
},
182+
{
183+
"name": "PapersFlow",
184+
"url": "https://github.com/papersflow-ai/papersflow-codex-plugin",
185+
"owner": "papersflow-ai",
186+
"repo": "papersflow-codex-plugin",
187+
"description": "Paper discovery, citation verification, graph exploration, and DeepScan analysis.",
188+
"category": "Tools & Integrations",
189+
"source": "awesome-codex-plugins",
190+
"install_url": "https://raw.githubusercontent.com/papersflow-ai/papersflow-codex-plugin/main/.codex-plugin/plugin.json"
191+
},
192+
{
193+
"name": "Yandex Direct",
194+
"url": "https://github.com/nebelov/yandex-direct-for-all",
195+
"owner": "nebelov",
196+
"repo": "yandex-direct-for-all",
197+
"description": "GitHub-ready Codex plugin bundle for Yandex Direct, Wordstat, Metrika, and Roistat.",
198+
"category": "Tools & Integrations",
199+
"source": "awesome-codex-plugins",
200+
"install_url": "https://raw.githubusercontent.com/nebelov/yandex-direct-for-all/main/.codex-plugin/plugin.json"
201+
}
202+
]
203+
}

scripts/generate_plugins_json.py

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
#!/usr/bin/env python3
2+
"""Regenerate plugins.json from the README.md Community Plugins section.
3+
4+
Usage:
5+
python3 scripts/generate_plugins_json.py
6+
7+
This should be run after any change to the plugin list in README.md.
8+
"""
9+
import datetime
10+
import json
11+
import re
12+
from pathlib import Path
13+
14+
README = Path(__file__).parent.parent / "README.md"
15+
OUTPUT = Path(__file__).parent.parent / "plugins.json"
16+
17+
18+
def parse_plugins(readme_path: Path) -> list[dict]:
19+
lines = readme_path.read_text(encoding="utf-8").splitlines()
20+
21+
start = None
22+
end = None
23+
for i, line in enumerate(lines):
24+
if line.strip() == "## Community Plugins":
25+
start = i + 1
26+
if start and line.strip().startswith("## ") and line.strip() != "## Community Plugins":
27+
end = i
28+
break
29+
30+
if end is None:
31+
end = len(lines)
32+
if start is None:
33+
raise ValueError("Could not find Community Plugins section")
34+
35+
section = lines[start:end]
36+
plugins = []
37+
current_category = "Uncategorized"
38+
seen = set()
39+
40+
for line in section:
41+
cat_match = re.match(r"^### (.+)", line.strip())
42+
if cat_match:
43+
current_category = cat_match.group(1)
44+
continue
45+
46+
m = re.match(
47+
r"^- \[([^\]]+)\]\((https://github\.com/([^/]+)/([^)#]+?))(?:#readme)?\)\s*[-–]\s*(.+)",
48+
line.strip(),
49+
)
50+
if m:
51+
owner, repo = m.group(3), m.group(4)
52+
key = f"{owner}/{repo}"
53+
if key in seen:
54+
continue
55+
seen.add(key)
56+
# TODO: Detect default branch via GitHub API; some repos use 'master' or other names
57+
plugins.append(
58+
{
59+
"name": m.group(1),
60+
"url": m.group(2),
61+
"owner": owner,
62+
"repo": repo,
63+
"description": m.group(5).strip(),
64+
"category": current_category,
65+
"source": "awesome-codex-plugins",
66+
"install_url": f"https://raw.githubusercontent.com/{owner}/{repo}/main/.codex-plugin/plugin.json",
67+
}
68+
)
69+
70+
return plugins
71+
72+
73+
def main():
74+
plugins = parse_plugins(README)
75+
data = {
76+
"$schema": "https://json-schema.org/draft/2020-12/schema",
77+
"name": "awesome-codex-plugins",
78+
"version": "1.0.0",
79+
"last_updated": datetime.date.today().isoformat(),
80+
"total": len(plugins),
81+
"categories": sorted({p["category"] for p in plugins}),
82+
"plugins": plugins,
83+
}
84+
OUTPUT.write_text(json.dumps(data, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
85+
print(f"Wrote {len(plugins)} plugins to {OUTPUT}")
86+
87+
88+
if __name__ == "__main__":
89+
main()

0 commit comments

Comments
 (0)