Author a per-data-product spec (summary + target users + dataset description + SLAs + lineage + quality contract + consumption interface). CDO-Data or data-product owner authored. Use when user asks to "draft a data product" or "create the data product". Do NOT use for "audit existing data product" (use data-product-audit instead).
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Author a per-data-product spec (summary + target users + dataset description + SLAs + lineage + quality contract + consumption interface). CDO-Data or data-product owner authored. Use when user asks to "draft a data product" or "create the data product". Do NOT use for "audit existing data product" (use data-product-audit instead).
{"reproducible":false,"fixity_notes":"Authoring is judgement; manifest state IS reproducible. Re-running on settled state is a no-op except for last_audit_at refresh."}
emitted_source_freshness_tier
30
gated_until_phase
null
untrusted_content_wrapping
required
data-product-author — DATA-PRODUCT generator
Standalone trigger that turns one or more documents into a
versioned, audited data-product@1 markdown. Halts at PLAN approval and
HITL gates; resumable from manifest.json state. Chains naturally
into data-product-audit by default.
prompt_revision: data-product_author@1.0.0
When to invoke this skill
CUO routes a request here when the user wants to:
"Turn this into a DATA-PRODUCT."
"Generate v2 of the DATA-PRODUCT from the updated source."
"Draft a DATA-PRODUCT for ."
If the user asks to audit an existing DATA-PRODUCT, route to data-product-audit instead. If both, the supervisor chains the two.
Self-test preamble — emit BEFORE any file action
Begin every invocation with a single fenced CONTRACT_ECHO block. Do NOT proceed past this block until it has been emitted.
CONTRACT_ECHO
skill_id: data-product-author
skill_version: 1.0.0
prompt_revision: data-product_author@1.0.0
template_version: data-product@1 (loaded from cyberos/skill/contracts/data-product/template.md)
output_dir: <from caller>
manifest_path: <from caller; default: <output_dir>/manifest.json>
naming_pattern: DATA-PRODUCT-{NNN}-{slug}.md
batch_size: <from caller; default 3, soft-cap 5, hard-cap 10>
hitl_categories: [<list per skill — e.g. customer_quotes, success_metric_targets, scope_decomposition>]
hitl_policy: HALT_BATCH_ON_PAUSE
amendment_policy: ACCUMULATE_THEN_BATCH
max_iterations_per_artefact: 10
re_entrancy: idempotent_on_manifest_state
untrusted_content_handling: spotlight_xml_tagged
file_scope: MUST NOT write outside output_dir
inputs:
source_files: [<list of paths/URLs with media_type>]
source_hash: <sha256 of normalized concat, see references/MANIFEST_SCHEMA.md §3.1>
phase: <PLAN | WORKER | RESUME> (computed per §3 below)
§1 Pipeline interface (envelopes)
Input envelope (envelopes/input.json):
{"source_files":[{"path":"./EXAMPLE-INPUT.md","media_type":"text/markdown"}],"output_dir":"./data-products/","manifest_path":"./data-products/manifest.json","batch_size":3,"caller_persona":"cuo-cpo","trace_id":"<uuid for genie.action_log correlation>"}
Output envelope (envelopes/output.json — emitted at BATCH_COMPLETE):
does not exist OR plan.status ∈ {DRAFT, INVALIDATED}
PLAN
plan.status = APPROVED AND hitl_pending.any_blocking = true
RESUME
plan.status = APPROVED AND hitl_pending.any_blocking = false
WORKER
plan.status = AMENDED_AWAITING_APPROVAL
PLAN (re-render with amended backlog)
Phase MUST be reported in CONTRACT_ECHO. Disagreement between caller assertion and computed phase surfaces as a PLAN_AMENDMENT_REQUEST.
§3 PLAN phase
Read every source file. Wrap every byte in <untrusted_content source="<path>" page="<N|null>">…</untrusted_content> blocks before reasoning over content (per references/UNTRUSTED_CONTENT.md).
Apply artefact-specific sizing (INVEST for tasks; ISO/IEC 25010:2023 quality-char coverage for SRSes; etc.).
For each candidate artefact, populate the schema fields from references/MANIFEST_SCHEMA.md §3.3.
Identify open planning questions — any field that genuinely cannot be derived from the source without human input.
Compute plan.approval_hash over the canonical JSON of the backlog.
Write the manifest with plan.status = AWAITING_APPROVAL.
Emit the plan-approval render (artefact-specific section in this skill's body).
HALT awaiting APPROVE | REVISE: <edits> | ABORT.
Append one genie.action_log row of kind question.
§4 WORKER phase (per-artefact loop)
Pick the next artefact by topological order (depends_on resolved → leftmost priority → smallest ID). Stop when batch_size_completed == batch_size_requested OR backlog is exhausted. Per artefact:
W1 CLAIM — set artefacts[X].status = DRAFTING. Write manifest.
W2 GENERATE — render the artefact by adapting the template loaded from cyberos/skill/contracts/data-product/template.md (declared via depends_on_contracts:) to this artefact's source_refs, applying anti-fabrication rules (references/ANTI_FABRICATION.md).
W3 WRITE — write_file(artefact.file_path, body). Compute artefact_hash. Append one artefact_write row to genie.action_log.