Skip to content

feat: [SDK-5456] add starter prompts, dark-theme brand assets, and a fuller listing description - #59

Merged
sherwinski merged 5 commits into
sherwin/sdk-5445from
sherwin/sdk-5456
Oct 12, 2026
Merged

sherwinski merged 5 commits into
sherwin/sdk-5445from
sherwin/sdk-5456

Conversation

@sherwinski

@sherwinski sherwinski commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

One Line Summary

Add a third starter prompt, dark-theme brand assets, and a fuller longDescription to the ChatGPT / Codex listing, and teach the bundle gate to check them.

Screenshot

Screenshot 2026-10-09 at 5 48 41 PM

Motivation

The ChatGPT / Codex directory builds the starter-prompt banner from interface.defaultPrompt. Each chip shows composerIcon and colors the label with brandColor. On the dark theme the navy logomark and #051B2C label are not readable (see the screenshot in SDK-5456). The team also asked for a listing description with the same structure as Canva's: what the product is, what the plugin does, example prompts, and requirements.

Parent ticket: SDK-5455.

Scope

  • .codex-plugin/plugin.json
    • defaultPrompt: 3 entries (setup, upload credentials, send a test push).
    • brandColorDark: "#4E50D1", the brand purple from the design team's OneSignal Logos/Purple folder. Contrast 2.60:1 against #212121 (the rule is 2:1).
    • logoDark and composerIconDark: ./assets/logomark-white.svg.
    • longDescription: 2,722 characters (limit 4,000), with line breaks. Every claim comes from README.md, the 3 SKILL.md descriptions, or references/platform-matrix.md.
  • assets/logomark-white.svg: the official OneSignal-Logomark-White.svg, identical bytes to the public Media Kit and the Drive copy.
  • scripts/package_directory_bundle.py: the gate checks logoDark and composerIconDark when set (source tree and built bundle), rejects interface.screenshots (a Skills-only upload refuses it), and has 2 new self-test cases.
  • AGENT.md: one sentence in the bundle section updated to match.

Not in scope: a version bump. main is at 1.1.1 and the last tag is 1.1.0, so the tree already has an unreleased bump.

Not changed: the backdrop behind the chips. The ChatGPT client draws one static image (/cdn/assets/gradient.*.png) for every plugin; no manifest field supplies it.

Testing

Manual:

  • python3 -m py_compile scripts/*.py: passed.
  • python3 -m json.tool on the 4 JSON files: passed.
  • Portability grep over skills/ and references/: no output.
  • python3 scripts/package_directory_bundle.py --check: passed (version 1.1.1).
  • python3 scripts/package_directory_bundle.py --self-test: all 12 cases rejected as expected, including the 2 new ones.
  • python3 scripts/package_directory_bundle.py --out /tmp/os-bundle: the bundle has both assets, no mcpServers, 3 prompts, and the dark fields.

Not tested: a Skills-only upload of the new bundle to the OpenAI portal. That happens at the next release. The Codex desktop app renders this tree through the local onesignal marketplace; whether it renders an SVG composerIconDark is not confirmed yet.

Affected code

  • Skills (skills/)
  • References (references/)
  • Scripts (scripts/)
  • Manifests (.codex-plugin/, .claude-plugin/)
  • Brand assets (assets/)
  • Docs (AGENT.md)

Checklist

  • The bundle gate (--check and --self-test) passes.
  • No secrets in the diff.
  • Commit messages use conventional prefixes and the ticket ID.

@kalley kalley left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Dark assets and the gate checks look good, and the self-tests match what the gate prints. One non-blocking note inline. The description is a bit behind the later commits: longDescription is 815 characters now, not 2,722, and Scope doesn't mention the skill description rewrites.

Comment thread .codex-plugin/plugin.json

@abdulraqeeb33 abdulraqeeb33 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looks good. The dark asset and screenshots checks run on both the source tree and the built bundle, and the bundle checks pass with #61 stacked on top. Nothing to add beyond Kalley's notes.

…fuller listing description

The ChatGPT / Codex directory builds the starter-prompt banner from
`interface.defaultPrompt`, and each chip shows `composerIcon` in
`brandColor`. On the dark theme the navy logomark and `#051B2C` label
are not readable, so this change adds the official white logomark from
the OneSignal media kit as `logoDark` and `composerIconDark`, and the
brand purple `#4E50D1` as `brandColorDark` (2.6:1 against `#212121`).

`interface.longDescription` now follows the structure of the Canva
listing: what OneSignal is, what the plugin can do, how to invoke it,
example prompts, requirements, and the safety rules.

The bundle gate now checks every asset field the manifest sets and
rejects `interface.screenshots`, which a Skills-only upload refuses.

No version bump: main is already at 1.1.1 ahead of the 1.1.0 tag.
Each description renders as a single line in the plugin listing. Long descriptions get truncated, where a user can then view them by clicking on the skill card itself. Therefore, the truncated description should still offer enough detail to give a users a sense of what they are used for.
… the README

The Claude manifest, the marketplace manifest, the Codex root
`description`, and the README snippet each described the plugin in
different words. They now share one sentence that matches the voice of
the Codex `longDescription`.
Both hosts pick a skill from its `description` (Agent Skills spec;
OpenAI and Anthropic skill docs). The shorter descriptions kept the
summary but dropped the "when to use" text, so a prompt such as "why
isn't my push arriving" no longer matched one skill.

Each description now keeps the one-line summary first, for the listing
card, and adds a "Use when" sentence with the trigger phrases after it.

The verify description also loses a `: ` inside the plain scalar, which
libyaml rejects as a mapping value.
@sherwinski
sherwinski changed the base branch from main to sherwin/sdk-5445 October 12, 2026 18:20
@sherwinski
sherwinski added this pull request to stack #64 October 12, 2026 18:36
@sherwinski
sherwinski merged commit cedf53b into main Oct 12, 2026
6 checks passed
@sherwinski
sherwinski deleted the sherwin/sdk-5456 branch October 12, 2026 18:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants