ase-sync-export
Export artifact content into side-by-side, ready-to-consume files, one per artifact that declares an export. Use when the user wants to "export", "render", or "materialize" artifacts like SPEC or ARCH
SKILL.mdplugin/skills/ase-sync-export/SKILL.md
GitHub@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
<purpose name="ase-sync-export"> Export Specification into Rendered Files </purpose><expand name="getopt" arg1="ase-sync-export" arg2="--output|-o="> $ARGUMENTS </expand>
<objective> *Export* the `SPEC` artifact set -- the SpecBook-based specification -- into the requested output files, by validating the specification and rendering it through the SpecBook export. </objective>@${CLAUDE_SKILL_DIR}/../../meta/ase-format-meta.md
Procedure
<flow>- <step id="STEP 1: Determine Outputs">
Parse <getopt-option-output/> as the comma-separated <outputs/> list of
[<format>:]<file>entries, with <format/> one ofjson,json5,yaml,toon,html,pdf, ormd, and <file/> a project-relative output file path. Trim every parsed entry. Do not output anything.- <if condition="<outputs/> is empty">
Determine the default output by calling the
</if>ase_artifact_name(filename: "index.html", kind: "spec")tool of theaseMCP server and set <outputs/> to the single entry of its returnedname. Do not output anything. If any entry in <outputs/> is
<template> ⧉ **ASE**: ☻ skill: **ase-sync-export**, ▶ ERROR: output `-` is not supported -- give an output file </template>-(the standard output sentinel), only output the following <template/> and then immediately STOP processing the entire current skill:Report the resolved outputs with the following <template/>:
<template> <ase-tpl-bullet-signal/> **OUTPUTS**: <outputs/> </template>
- <step id="STEP 2: Validate Specification">
Call the
ase_specbook_lint()tool of theaseMCP server once and read its returneddiagnosticsarray of{ file, line, column, severity, message }objects, reduced to those entries whose <severity/> iserror, as only those make the export fail. Do not output anything.- <if condition="<diagnostics/> is not empty">
Only output the following <template/> (listing one bullet line per diagnostic), give the closing hint by expanding the
<template> ⧉ **ASE**: ☻ skill: **ase-sync-export**, ▶ ERROR: specification invalid -- nothing exported<ase-tpl-hint/>below it, and then immediately STOP processing the entire current skill:<file/>:<line/>:<column/>: <message/> [...]</template>
- <step id="STEP 3: Export Specification">
For each <output/> in <outputs/>, call the
ase_specbook_export(output: "<output/>")tool of theaseMCP server, which infers the format from the[<format>:]<file>entry, writes the rendering to the file, and returns a confirmationtextcarrying the written byte size plus anoticesarray of environment notices. Set <notices/> to the distinct notices of all calls. Do not output anything.Report the exported files with the following <template/>, listing one bullet line per written file (with <file/> its project-relative path and <note/> the format and the byte size):
<template> <ase-tpl-bullet-signal/> **EXPORTED SPECIFICATION**:<file/>: <note/> [...]</template>
- <if condition="<notices/> is not empty">
Report the environment notices verbatim with the following <template/>, listing one bullet line per notice:
<template> <ase-tpl-bullet-signal/> **ENVIRONMENT NOTICES**:- <notice/> [...] </template>
Finally, give the closing hints by expanding the following (which, depending on the configured <ase-guidance-level/>, may each expand into nothing and hence emit no output at all):
<ase-tpl-hint level="normal"> Exports are *derived* and go stale as the specification drifts -- use `/ase-sync-reconcile` to align the artifacts first, then re-run this skill. </ase-tpl-hint> <ase-tpl-hint level="verbose"> Use `/ase-sync-export --output` with a comma-separated list of `[<format>:]<file>` entries to export several renderings at once (e.g. `-o docs/spec.html,docs/spec.pdf`). </ase-tpl-hint>