Skip to main content
This page is for troubleshooting a publishing state or wiring up automation. In the normal flow, /comet-any guides evaluation, approval, publishing, and distribution.
This page is the authoritative reference for the Skill publishing state machine, readiness conclusions, and blocker codes. For command-level syntax, see comet publish. Before publishing, Comet checks the eval evidence for the current hash, human approval, and the requirements of the target platform. A Skill can be published and distributed only after every gate passes.

Publish state chain

Every state has a clear gate: There is also an abnormal state, drift-conflict: a Bundle sitting in ready enters the conflict state when both the draft hash and the ready hash change, carrying conflict: {draftHash, readyHash}; if only one of them changes, it falls back to draft.

Readiness conclusions

Readiness reports four conclusions:

Xiaoyu checks the draftHash and evalManifestHash of eval evidence v2, then advances publishing through creator status/next, review, approve, and publish preview

Before publishing, confirm that the eval evidence is bound to the current draft and manifest, use creator to read status, and use publish for review, approval, publishing, and distribution preview

For non-JSON output, these headings are used: published → “Already published”; can-publish → “Ready to publish”; needs-confirmation → “Ready for review approval”; blocked → “Cannot publish yet”.

Publishing flow

comet publish is the publishing entry for /comet-any artifacts. It only handles review, approval, publish, and distribute after the eval evidence is ready. Creating state, resuming state, and the unique next step belong to comet creator.

User commands

If the Skill contains hooks or scripts, distribution requires confirming the executable disclosure:
If you explicitly choose to skip an optional capability:

Choosing between status and next

comet creator next does not expose the backend Bundle commands. It translates the backend’s next action into everyday, runnable commands — for example comet eval ... --html, comet publish review ..., comet publish approve ... — or tells you to go back to /comet-any to resolve candidates, confirm the plan, or regenerate.

Blocker codes

Readiness blockers prevent publishing. Each blocker carries a prefix code that tells you where the problem is. When Readiness: blocked, locate the issue with this table:
Every blocker carries a nextAction: that gives the recovery suggestion directly. Use comet creator status when you want the full context; use comet creator next when you only want to copy the next user command.

Warnings (non-blocking)

These do not block, but they are surfaced in the review summary:
  • [preference] preference drift in advisory mode
  • [review] approval corresponds to an old hash
  • [capability] optional capability gap
  • [agent] platform agent preview missing
  • [executable] executable disclosure pending confirmation

Review summary

You must read readiness before publishing. The comet publish review review summary contains at least:
  • The Bundle name, version, and hash
  • The list of multiple entries and internal Skills
  • Real Skill evidence for planHash, preferenceHash, and reference/resolved-skills.json
  • The recommended invocation order and preferenceIndex
  • Items that deviate from the preferred order, and why
  • Whether .comet/skill-preferences.yaml drifted after Factory initialization
  • Whether the required capability set of the stable composition Skill Bundle is fully declared
  • Capability gaps and executable disclosure
  • Eval selection, token consumption, and result summary
  • The Validate this Skill and next-step prompts
Non-JSON output also clearly shows Readiness:, Blockers:, Warnings:, and Evidence: so you can directly see why a Skill is publishable or blocked.

Distribution preview is mandatory

Before performing a real distribution, you must run the preview first:
Preview is a mandatory check, not an optional extra. It shows:
  • Install preview
  • Planned files
  • Unsupported capabilities
  • Executable disclosures
  • No files were written
Only after you confirm the preview results may you remove --preview and run the real distribution.

Capability gaps and executable disclosure

Platform capability differences must be handled before distribution: hooks/*.yaml are Comet portable hook descriptors; they take effect only after comet publish distribute compiles them into the target platform configuration. Copying hook files directly into a platform directory does nothing.

The eval-record evidence contract

If you record eval evidence manually with comet bundle eval-record, the result JSON must satisfy this schema:
draftHash must equal the current currentHash, and evalManifestHash must equal the hash of the currently generated comet/eval.yaml. Evidence tied to an old hash or old manifest is kept on disk, but it cannot advance readiness. Daily use does not require writing this file by hand — /comet-any produces it automatically through comet eval.

The relationship between bundle and publish

comet creator is the creation and recovery entry, comet publish is the publishing entry. comet bundle is the internal backend that handles Bundle state management, hashes, readiness, publish, and distribute. Unless you are troubleshooting or auditing, you do not need to touch the Bundle state files directly. When you need to inspect backend state, see comet bundle.

Next steps

Last modified on September 4, 2026