بنقرة واحدة
canon-publish
Use when a Canon run is complete and the user wants to publish the packet into docs or specs from chat.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Use when a Canon run is complete and the user wants to publish the packet into docs or specs from chat.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Use when you need a governed Canon review of a real diff or pull-request range instead of a loose chat summary.
Use when a repository does not have Canon runtime state yet and you need to initialize .canon before any governed workflow.
Use when you need a governed Canon policy-shaping run to shape a new or modified policy with mandatory impact evaluation.
Use when you need a governed backlog run that decomposes bounded upstream decisions into delivery epics and slices.
Use when you need a governed Canon architecture run to record decisions, tradeoffs, and risk-gated approvals.
Use when you need a governed change run in a live codebase where invariants and existing behavior matter.
| name | canon-publish |
| description | Use when a Canon run is complete and the user wants to publish the packet into docs or specs from chat. |
| preflight | {"requires_canon":true,"requires_initialized":true,"canonical_input":null,"system_context":null,"risk_required":false,"zone_required":false,"owner_optional":true} |
available-nowdefault visibility: discoverable-standardPublish a completed Canon run from chat without making the user remember the raw CLI contract.
.canon/artifacts/ into tech-docs/, specs/, or another visible destination.RUN_IDOptional:
DESTINATION for --to <PATH> when the user wants an override instead of the default publish destinationcanon is on PATH. If missing, point to the install guide..canon/ exists. If missing, point to $canon-init.@last; do not silently publish the latest run on the user's behalf.--to <PATH> instead of rewriting it.canon publish <RUN_ID> [--to <DESTINATION>]requirements, surface that the destination includes the additive prd.md alongside the sectional packet files.canon/ is missing, point to $canon-init.RUN_ID is missing or unknown, ask only for the exact run id and show the exact retry form canon publish <RUN_ID>.$canon-status or $canon-inspect-artifacts instead of retrying blindly.prd.md first when the user wants one readable product-facing document.$canon-inspect-artifacts or $canon-status.$canon-status$canon-inspect-artifacts$canon-inspect-evidenceAfter a successful publish, check for after_publish hooks:
If .canon/hooks.toml exists and is valid TOML with version = 1:
Parse hooks.after_publish.actions array.
Filter by mode_filter: skip hooks whose mode_filter does not include
the published run's mode. If mode_filter is null or absent, include the
hook for all modes.
For each matching hook, emit a proposal block:
## Lifecycle Hook Detected
**Event**: after_publish
**Hook**: <id>
**Command**: `<command>`
**Working Directory**: <repo-root>
**Description**: <description>
**Required**: <Yes if optional=false, No if optional=true>
**Trusted**: <Yes if trusted=true, No if trusted=false>
Proceed with this hook? [Yes / No / Skip all hooks]
Apply confirmation rules per the optional/trusted matrix in
.agents/skills/canon-shared/references/hooks-schema.md.
If .canon/hooks.toml is missing, unreadable, or has invalid TOML, skip
hook detection silently. Do not block the publish flow.
Record hook trace in ai-provenance.md (see Hook Trace Recording below).
After each hook proposal is resolved, append to the run's ai-provenance.md:
## Hook Traces
| Hook ID | Event | Command | Trusted | Outcome | Exit Code | Timestamp |
|---------|-------|---------|---------|---------|-----------|-----------|
| <id> | after_publish | <command> | <yes/no> | <accepted/declined/skipped> | <code or n/a> | <ISO 8601> |