Compare commits

..

3 Commits

Author SHA1 Message Date
Drew Ritter
da77169fab Default Codex portal package to zip 2026-06-30 14:08:40 -07:00
Drew Ritter
14f086aadd Harden Codex package script checks 2026-06-30 13:45:54 -07:00
Drew Ritter
59e9859029 Add Codex portal package script 2026-06-30 13:41:12 -07:00
2 changed files with 3 additions and 19 deletions

View File

@@ -21,13 +21,12 @@
"workflow"
],
"skills": "./skills/",
"hooks": {},
"interface": {
"displayName": "Superpowers",
"shortDescription": "Planning, TDD, debugging, and delivery workflows for coding agents",
"longDescription": "Use Superpowers to guide agent work through brainstorming, implementation planning, test-driven development, systematic debugging, parallel execution, code review, and finish-the-branch workflows.",
"developerName": "Jesse Vincent",
"category": "Developer Tools",
"category": "Coding",
"capabilities": [
"Interactive",
"Read",

View File

@@ -51,25 +51,10 @@ if not plugin_manifest.exists():
manifest = json.loads(plugin_manifest.read_text(encoding="utf-8"))
assert_equal(manifest.get("name"), plugin.get("name"), "plugin manifest name")
# Codex auto-discovers a plugin's hooks/hooks.json whenever the Codex manifest
# has no `hooks` field: load_plugin_hooks falls back to a hardcoded
# DEFAULT_HOOKS_CONFIG_FILE = "hooks/hooks.json" and registers it. That file is
# the Claude Code SessionStart hook, it is tracked in this repo, and this
# marketplace installs the whole repo root (source url "./"), so on Codex the
# fallback re-registers the SessionStart hook and its install-time trust prompt.
# Declaring an empty inline hooks object ({}) parses as an empty inline hook set
# and suppresses the auto-discovery. An absent field, an empty array ([]), and
# an empty inline list all collapse back to the fallback, so the value must be
# exactly an empty object.
hooks_config = repo_root / "hooks" / "hooks.json"
if not hooks_config.exists():
raise AssertionError("hooks/hooks.json must exist (Claude Code SessionStart hook)")
assert_equal(
manifest.get("hooks"),
{},
"Codex manifest must declare empty hooks {} to suppress hooks/hooks.json auto-discovery",
None,
"Codex manifest ships no hooks",
)
print("Codex marketplace manifest looks good")