Skip to content

[codex] Improve skill compatibility packaging#66

Merged
dd3ok merged 5 commits into
mainfrom
codex/lucid-skill-compat-fixes
Jun 10, 2026
Merged

[codex] Improve skill compatibility packaging#66
dd3ok merged 5 commits into
mainfrom
codex/lucid-skill-compat-fixes

Conversation

@dd3ok

@dd3ok dd3ok commented Jun 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add an OpenAI hosted packaging target that emits a fixed lucid/ top-level folder.
  • Tighten Lucid skill discovery metadata and OpenClaw runtime metadata.
  • Add first-class Hermes policy-pack coverage, docs, validators, and eval fixtures.

Validation

  • python scripts/validate-skill.py
  • python scripts/validate-no-dangerous-io.py
  • python scripts/validate-evals.py
  • python scripts/validate-docs.py
  • python scripts/validate-package-skill.py
  • python skills/lucid/scripts/lucid.py verify --root . --strict

Strict verify passed with ok: true and debt_score: 0.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a new built-in hermes policy pack to audit Hermes migration surfaces, adds support for packaging skills targeting openai-hosted environments, and updates associated documentation, test fixtures, and validation scripts. The review feedback suggests enhancing JSON metadata parsing in validate-skill.py to prevent potential AttributeErrors when keys are explicitly set to null, and removing redundant skill patterns from the hermes policy pack configuration in lucid.py to avoid duplicate filesystem globbing.

Comment thread scripts/validate-skill.py Outdated
Comment on lines +148 to +153
def validate_lucid_openclaw_runtime_metadata(fields: dict[str, str]) -> None:
raw = fields.get("metadata")
if raw is None:
fail("Lucid SKILL.md must declare OpenClaw runtime metadata")
metadata = json.loads(raw)
requires = metadata.get("openclaw", {}).get("requires", {})

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Using .get("openclaw", {}) can still return None if the "openclaw" key is explicitly set to null in the JSON metadata. This would cause a subsequent .get("requires", {}) call to raise an AttributeError. Use a safer fallback pattern like metadata.get("openclaw") or {} to ensure it always resolves to a dictionary.

Suggested change
def validate_lucid_openclaw_runtime_metadata(fields: dict[str, str]) -> None:
raw = fields.get("metadata")
if raw is None:
fail("Lucid SKILL.md must declare OpenClaw runtime metadata")
metadata = json.loads(raw)
requires = metadata.get("openclaw", {}).get("requires", {})
def validate_lucid_openclaw_runtime_metadata(fields: dict[str, str]) -> None:
raw = fields.get("metadata")
if raw is None:
fail("Lucid SKILL.md must declare OpenClaw runtime metadata")
metadata = json.loads(raw)
openclaw = metadata.get("openclaw") or {}
requires = openclaw.get("requires") or {}

Comment on lines +166 to +171
skill=[
".hermes/skills/*/SKILL.md",
".hermes/skills/*/references/**/*.md",
"skills/*/SKILL.md",
"skills/*/references/**/*.md",
],

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The patterns "skills/*/SKILL.md" and "skills/*/references/**/*.md" are already included in DEFAULT_CONFIG["surfaces"]["skill"]. Since surface_overlay concatenates the default list with the provided list, including them here results in duplicate patterns. This causes redundant filesystem globbing. You can safely remove them from the hermes pack's skill list.

        skill=[
            ".hermes/skills/*/SKILL.md",
            ".hermes/skills/*/references/**/*.md",
        ],

@dd3ok dd3ok force-pushed the codex/lucid-skill-compat-fixes branch from 7e98af7 to b8bf749 Compare June 2, 2026 00:29
@dd3ok dd3ok marked this pull request as ready for review June 10, 2026 04:18
@dd3ok dd3ok merged commit 655af33 into main Jun 10, 2026
1 check passed
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.

1 participant