pacxio 0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. pacxio/__init__.py +3 -0
  2. pacxio/__main__.py +6 -0
  3. pacxio/_conventions/paint.yaml +58 -0
  4. pacxio/_profiles/default.yaml +157 -0
  5. pacxio/_profiles/materials.yaml +28 -0
  6. pacxio/_profiles/render-materials.json +121 -0
  7. pacxio/_skill/packaging-prepress/SKILL.md +81 -0
  8. pacxio/_skill/packaging-prepress/agents/openai.yaml +8 -0
  9. pacxio/_skill/packaging-prepress/references/box-styles.md +210 -0
  10. pacxio/_skill/packaging-prepress/references/commands.md +73 -0
  11. pacxio/_skill/packaging-prepress/references/concept.md +222 -0
  12. pacxio/_skill/packaging-prepress/references/content.md +95 -0
  13. pacxio/_skill/packaging-prepress/references/delivery.md +25 -0
  14. pacxio/_skill/packaging-prepress/references/design.md +54 -0
  15. pacxio/_skill/packaging-prepress/references/factory-profile.md +39 -0
  16. pacxio/_skill/packaging-prepress/references/finishes.md +76 -0
  17. pacxio/_skill/packaging-prepress/references/fonts.md +121 -0
  18. pacxio/_skill/packaging-prepress/references/layout-draft.md +116 -0
  19. pacxio/_skill/packaging-prepress/references/mockup.md +109 -0
  20. pacxio/_skill/packaging-prepress/references/prepress-rules.md +67 -0
  21. pacxio/_skill/packaging-prepress/references/requirements.md +65 -0
  22. pacxio/_skill/packaging-prepress/references/resume.md +51 -0
  23. pacxio/_skill/packaging-prepress/references/structures.md +133 -0
  24. pacxio/_skill/packaging-prepress/references/studio.md +114 -0
  25. pacxio/_skill/packaging-prepress/references/troubleshooting.md +90 -0
  26. pacxio/_skill/packaging-prepress/references/vector.md +174 -0
  27. pacxio/_skill/packaging-prepress/references/visual-prompts.md +73 -0
  28. pacxio/_skill/packaging-prepress/scripts/check_env.py +222 -0
  29. pacxio/_skill/packaging-prepress/scripts/fetch_fonts.py +188 -0
  30. pacxio/api.py +2349 -0
  31. pacxio/attachments.py +286 -0
  32. pacxio/brief.py +366 -0
  33. pacxio/cli.py +4062 -0
  34. pacxio/cloud/__init__.py +4 -0
  35. pacxio/cloud/auth.py +225 -0
  36. pacxio/cloud/boundary.py +42 -0
  37. pacxio/cloud/client.py +177 -0
  38. pacxio/cloud/config.py +80 -0
  39. pacxio/cloud/route.py +249 -0
  40. pacxio/cloud/sync.py +119 -0
  41. pacxio/concept/__init__.py +1 -0
  42. pacxio/concept/palette.py +109 -0
  43. pacxio/concept/prompts.py +1122 -0
  44. pacxio/concept/rectify.py +437 -0
  45. pacxio/concept/service.py +1215 -0
  46. pacxio/dielines.py +339 -0
  47. pacxio/engine/__init__.py +4 -0
  48. pacxio/engine/assembly.py +82 -0
  49. pacxio/engine/box.py +66 -0
  50. pacxio/engine/calibrated.py +296 -0
  51. pacxio/engine/catalog.py +428 -0
  52. pacxio/engine/catalog_en.yaml +642 -0
  53. pacxio/engine/combos.py +88 -0
  54. pacxio/engine/ecma.py +235 -0
  55. pacxio/engine/editable.py +819 -0
  56. pacxio/engine/editable_terms.py +159 -0
  57. pacxio/engine/fefco.py +1717 -0
  58. pacxio/engine/function_check.py +641 -0
  59. pacxio/engine/i18n.py +150 -0
  60. pacxio/engine/net.py +363 -0
  61. pacxio/engine/practical.py +100 -0
  62. pacxio/engine/preview.py +350 -0
  63. pacxio/engine/recipe.py +699 -0
  64. pacxio/engine/rounding.py +337 -0
  65. pacxio/engine/set_style.py +192 -0
  66. pacxio/engine/sets.py +252 -0
  67. pacxio/engine/sheet.py +399 -0
  68. pacxio/engine/side_tuck.py +217 -0
  69. pacxio/engine/slotted.py +2520 -0
  70. pacxio/engine/slotted_lock.py +304 -0
  71. pacxio/engine/solid.py +119 -0
  72. pacxio/engine/style.py +613 -0
  73. pacxio/engine/targets.py +207 -0
  74. pacxio/engine/tray.py +1495 -0
  75. pacxio/engine/tray_bevel.py +254 -0
  76. pacxio/engine/tray_display.py +213 -0
  77. pacxio/engine/tray_foot.py +80 -0
  78. pacxio/engine/tray_full_ear.py +36 -0
  79. pacxio/engine/tray_kit.py +328 -0
  80. pacxio/engine/tray_lids.py +125 -0
  81. pacxio/engine/tray_pair_inner.py +54 -0
  82. pacxio/engine/tray_rims.py +1002 -0
  83. pacxio/engine/tray_roll.py +231 -0
  84. pacxio/engine/tray_stack.py +123 -0
  85. pacxio/engine/tray_strip.py +184 -0
  86. pacxio/engine/tray_wrap.py +68 -0
  87. pacxio/export/__init__.py +13 -0
  88. pacxio/export/canvas.py +104 -0
  89. pacxio/export/cf2.py +111 -0
  90. pacxio/export/dxf.py +130 -0
  91. pacxio/export/pdf.py +328 -0
  92. pacxio/export/pdfx.py +139 -0
  93. pacxio/export/svg.py +105 -0
  94. pacxio/fontfiles.py +78 -0
  95. pacxio/fonts.py +301 -0
  96. pacxio/geometry/__init__.py +51 -0
  97. pacxio/geometry/arcfit.py +159 -0
  98. pacxio/geometry/bridge.py +92 -0
  99. pacxio/geometry/primitives.py +638 -0
  100. pacxio/inventory.py +460 -0
  101. pacxio/jobfiles.py +54 -0
  102. pacxio/layout/__init__.py +0 -0
  103. pacxio/layout/errors.py +16 -0
  104. pacxio/layout/panels.py +100 -0
  105. pacxio/layout/spaces.py +161 -0
  106. pacxio/layout/zones.py +133 -0
  107. pacxio/locales/zh/api.yaml +153 -0
  108. pacxio/locales/zh/cli.yaml +631 -0
  109. pacxio/locales/zh/cloud.yaml +53 -0
  110. pacxio/locales/zh/concept.yaml +181 -0
  111. pacxio/locales/zh/conventions.yaml +18 -0
  112. pacxio/locales/zh/documents.yaml +294 -0
  113. pacxio/locales/zh/engine.yaml +465 -0
  114. pacxio/locales/zh/layout.yaml +68 -0
  115. pacxio/locales/zh/mcp.yaml +143 -0
  116. pacxio/locales/zh/mockup.yaml +67 -0
  117. pacxio/locales/zh/names.json +220 -0
  118. pacxio/locales/zh/params.yaml +140 -0
  119. pacxio/locales/zh/spec.yaml +236 -0
  120. pacxio/locales/zh/structures.yaml +73 -0
  121. pacxio/locales/zh/studio.yaml +204 -0
  122. pacxio/locales/zh/studio_ui.json +290 -0
  123. pacxio/locales/zh/styles.yaml +476 -0
  124. pacxio/locales/zh/support.yaml +139 -0
  125. pacxio/locales/zh/workflow.yaml +216 -0
  126. pacxio/mcp_cli.py +287 -0
  127. pacxio/mcp_install.py +329 -0
  128. pacxio/mcp_server.py +513 -0
  129. pacxio/messages.py +154 -0
  130. pacxio/mockup/approval.py +214 -0
  131. pacxio/mockup/art.py +360 -0
  132. pacxio/mockup/container.py +534 -0
  133. pacxio/mockup/content.py +296 -0
  134. pacxio/mockup/flat.py +709 -0
  135. pacxio/mockup/fold.py +430 -0
  136. pacxio/mockup/foldcheck.py +165 -0
  137. pacxio/mockup/folded_view.py +80 -0
  138. pacxio/mockup/folding.py +725 -0
  139. pacxio/mockup/foldscene.py +269 -0
  140. pacxio/mockup/materials.py +224 -0
  141. pacxio/mockup/pouch.py +260 -0
  142. pacxio/mockup/pouch_fill.py +520 -0
  143. pacxio/mockup/raster.py +175 -0
  144. pacxio/mockup/regular.py +159 -0
  145. pacxio/mockup/render.py +285 -0
  146. pacxio/mockup/scene.py +361 -0
  147. pacxio/mockup/scene3d.py +114 -0
  148. pacxio/mockup/service.py +634 -0
  149. pacxio/mockup/sheet.py +309 -0
  150. pacxio/model/__init__.py +18 -0
  151. pacxio/model/common.py +85 -0
  152. pacxio/model/content.py +221 -0
  153. pacxio/model/conventions.py +107 -0
  154. pacxio/model/dieline.py +228 -0
  155. pacxio/model/job.py +815 -0
  156. pacxio/model/profile.py +311 -0
  157. pacxio/model/report.py +59 -0
  158. pacxio/notes.py +605 -0
  159. pacxio/plugin_setup.py +317 -0
  160. pacxio/preflight/__init__.py +3 -0
  161. pacxio/preflight/rules.py +153 -0
  162. pacxio/studio/__init__.py +4 -0
  163. pacxio/studio/control.py +181 -0
  164. pacxio/studio/next.py +164 -0
  165. pacxio/studio/server.py +736 -0
  166. pacxio/studio/state.py +1185 -0
  167. pacxio/studio/static/app.js +2610 -0
  168. pacxio/studio/static/i18n.js +39 -0
  169. pacxio/studio/static/index.html +128 -0
  170. pacxio/studio/static/style.css +754 -0
  171. pacxio/studio/static/viewer3d.js +810 -0
  172. pacxio/styles/__init__.py +105 -0
  173. pacxio/styles/base.py +70 -0
  174. pacxio/styles/calibration.py +362 -0
  175. pacxio/styles/carton.py +398 -0
  176. pacxio/styles/compensation.py +17 -0
  177. pacxio/styles/components/__init__.py +6 -0
  178. pacxio/styles/components/assembly.py +22 -0
  179. pacxio/styles/components/base.py +82 -0
  180. pacxio/styles/components/carton.py +357 -0
  181. pacxio/styles/components/folds.py +88 -0
  182. pacxio/styles/components/glue_end.py +61 -0
  183. pacxio/styles/components/holes.py +94 -0
  184. pacxio/styles/components/lockbottom.py +367 -0
  185. pacxio/styles/components/sleeve.py +96 -0
  186. pacxio/styles/components/svg_contour.py +143 -0
  187. pacxio/styles/components/svg_curves.py +243 -0
  188. pacxio/styles/components/tube4.py +90 -0
  189. pacxio/styles/components/tuck.py +133 -0
  190. pacxio/styles/corrugated.py +126 -0
  191. pacxio/styles/counter_display.py +342 -0
  192. pacxio/styles/crashlock.py +434 -0
  193. pacxio/styles/divider.py +178 -0
  194. pacxio/styles/drawer.py +309 -0
  195. pacxio/styles/fefco_0201.py +415 -0
  196. pacxio/styles/fefco_0427.py +641 -0
  197. pacxio/styles/flat.py +173 -0
  198. pacxio/styles/gable.py +482 -0
  199. pacxio/styles/hanger.py +158 -0
  200. pacxio/styles/insert_card.py +165 -0
  201. pacxio/styles/label.py +394 -0
  202. pacxio/styles/lockbottom.py +358 -0
  203. pacxio/styles/mailer_closures.py +645 -0
  204. pacxio/styles/mailer_tuck.py +453 -0
  205. pacxio/styles/pouch.py +1289 -0
  206. pacxio/styles/presets.py +69 -0
  207. pacxio/styles/regular_tray.py +438 -0
  208. pacxio/styles/rte.py +612 -0
  209. pacxio/styles/seal_end.py +181 -0
  210. pacxio/styles/sleeve.py +156 -0
  211. pacxio/styles/slotted_variants.py +116 -0
  212. pacxio/styles/ste.py +21 -0
  213. pacxio/styles/tray.py +467 -0
  214. pacxio/styles/tray_lid.py +267 -0
  215. pacxio/textstyles.py +104 -0
  216. pacxio/visual/__init__.py +0 -0
  217. pacxio/visual/assets.py +247 -0
  218. pacxio/visual/meta.py +132 -0
  219. pacxio/visual/prompts.py +186 -0
  220. pacxio/visual/providers/__init__.py +15 -0
  221. pacxio/visual/providers/base.py +37 -0
  222. pacxio/visual/providers/file_import.py +30 -0
  223. pacxio/visual/providers/openai_api.py +114 -0
  224. pacxio/windows.py +394 -0
  225. pacxio/zoom.py +98 -0
  226. pacxio-0.0.1.dist-info/METADATA +108 -0
  227. pacxio-0.0.1.dist-info/RECORD +230 -0
  228. pacxio-0.0.1.dist-info/WHEEL +4 -0
  229. pacxio-0.0.1.dist-info/entry_points.txt +2 -0
  230. pacxio-0.0.1.dist-info/licenses/LICENSE +21 -0
pacxio/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ """pacxio —— 包装印前引擎。"""
2
+
3
+ __version__ = "0.0.1"
pacxio/__main__.py ADDED
@@ -0,0 +1,6 @@
1
+ """python -m pacxio ... 等价于 pacxio ...(没有把命令装进 PATH 时用)。"""
2
+
3
+ from pacxio.cli import main
4
+
5
+ if __name__ == "__main__":
6
+ main()
@@ -0,0 +1,58 @@
1
+ # 常规参考表:"Home improvement · Paint"(docs/FLOW_V2.md 2.2)
2
+ #
3
+ # 用途:出概念图时写进提示词,告诉 AI "这类包装一般这么排"——只是提示,AI 可以按设计需要变通;
4
+ # 看图后 agent 用它核对:哪些信息放得不寻常、有没有漏掉通常必有的东西。
5
+ # 全部是【初值】:来自通常做法,未经品牌方、印厂或法规顾问确认。法规相关的只做提醒,由用户确认。
6
+
7
+ id: paint
8
+ name_zh: "Home improvement · Paint"
9
+ description: "Folding cartons and shipping cases for wall paint, wood finishes and primers"
10
+ verified: false
11
+
12
+ # 各类信息通常放在哪些面(front 正面 / back 背面 / side 侧面 / top 顶面 / bottom 底面),排在前面的更常见
13
+ faces:
14
+ brand: [front, back, top, side]
15
+ logo: [front, back, top, side]
16
+ product_name: [front, back]
17
+ variant: [front] # 内墙 / 外墙、木器、底漆面漆;颜色、光泽
18
+ spec: [front, side] # 容量(1L、5L)
19
+ net_content: [front]
20
+ slogan: [front, side]
21
+ selling_point: [front, back, side]
22
+ icon: [front, side]
23
+ description: [back, side]
24
+ usage: [back, side] # 施工步骤
25
+ technical: [back, side] # 涂布率、表干 / 实干、重涂间隔、VOC
26
+ ingredients: [side]
27
+ caution: [side, back] # 安全警示、急救
28
+ storage: [side]
29
+ standard: [side]
30
+ manufacturer: [side]
31
+ contact: [side]
32
+ origin: [side]
33
+ barcode: [side]
34
+ certification: [side, front]
35
+ batch: [bottom, side]
36
+
37
+ # 常见版式(提示词里给 AI 参考;也用于看图后说明这个方向属于哪一种)
38
+ layouts:
39
+ - id: same_front_back
40
+ name_zh: "Matching front and back"
41
+ front: "Key visual, brand, product name, category / colour and sheen, volume, main selling points"
42
+ back: "Same as the front"
43
+ sides: "Use one side for application instructions and technical data. Use the other for precautions, applicable standards, manufacturer, barcode and country of origin. Vertical branding is also common."
44
+ common_for: "Shipping cases, cartons for large paint containers, and products displayed with either face outward"
45
+ - id: split
46
+ name_zh: "Different roles for front and back"
47
+ front: "Key visual, brand, product name, category / colour and sheen, volume, main selling points"
48
+ back: "Brand story or product introduction, application steps and technical data"
49
+ sides: "Precautions, applicable standards, manufacturer, barcode and country of origin. Use the other side for the brand or tagline."
50
+ common_for: "Small retail cartons and gift boxes"
51
+
52
+ # 提醒(不是规定):看图核对时逐条提示用户,由用户按现行标准与法规确认
53
+ reminders:
54
+ - "For paint packaging, check the applicable marking standard in the target market (for example, GB/T 9750 in China). Verify requirements for product name and model, applicable standards, net contents, production date or batch, manufacturer name and address, storage and safety information."
55
+ - "Check whether the target market requires packaging disclosures about hazardous substance limits for architectural coatings and wood finishes."
56
+ - "Net contents usually appear on the principal display panel. Check the target market’s requirements for placement and character height."
57
+ - "Leave sufficient quiet zones around the barcode, use a white or light background, and keep it clear of folds."
58
+ - "Batch codes and production dates are usually added after printing. Reserve blank space for them in the artwork."
@@ -0,0 +1,157 @@
1
+ id: default
2
+ name: Default
3
+ verified: true # 2026-10-24 用户:实物打样验证通过,配置档数值经工厂确认(规格补 21)
4
+ units: mm
5
+
6
+ bleed_mm: 3 # 出血
7
+ safe_margin_mm: 3 # 文字/Logo 距切线与折线
8
+ glue_flap:
9
+ ink: bleed_only # none | bleed_only | full
10
+ bleed_into_mm: 2 # 图文可伸入糊口的距离
11
+ tac_limit_pct: 300 # 总墨量上限,铜版纸胶印常见 300–320%
12
+ flexo: # 柔印(开槽箱水印):job 的 print.method = flexo 时代替上面的数值
13
+ tac_limit_pct: 240 # 水印直接印在瓦楞纸板上,吃墨多、干得慢,总墨量比胶印低
14
+ min_text_pt: 8 # 水印网线粗、易糊版,小字要大一些
15
+ min_print_line_mm: 0.3 # 图形里最细的线(开槽箱测试 R-09,补 47,要工厂确认,不在 2026-10-24 确认的范围里)
16
+ min_print_reverse_mm: 0.5 # 最窄的反白(没墨的细缝、小白点),比正线更容易糊
17
+ min_text_pt: 6 # 最小字号(pt),小于它给 T05 提醒;法规对净含量等另有字高要求
18
+ icc:
19
+ path: null # 工厂给了自己的 ICC 时填:嵌入生产文件、声明 PDF/X-4
20
+ name: null
21
+ auto: # 没填 path 时按纸张自动选本机已有的标准 ICC(docs/COLOR_V1.md):
22
+ coated: [JapanColor2001Coated.icc, CoatedFOGRA39.icc] # 只用来把照片转成印刷色,
23
+ uncoated: [JapanColor2001Uncoated.icc, UncoatedFOGRA29.icc] # 不嵌入、不声明 PDF/X-4
24
+ search_dirs: # 装了 Adobe 软件就有;ICC 文件不进代码仓库(CLAUDE.md)
25
+ - /Library/Application Support/Adobe/Color/Profiles/Recommended
26
+ - /Library/Application Support/Adobe/Color/Profiles
27
+ - /Library/ColorSync/Profiles
28
+ - ~/Library/ColorSync/Profiles
29
+ - C:/Program Files (x86)/Common Files/Adobe/Color/Profiles/Recommended
30
+ - C:/Windows/System32/spool/drivers/color
31
+ finish_rules:
32
+ foil: { min_line_mm: 0.2, min_gap_mm: 0.3 }
33
+ spot_uv: { min_line_mm: 0.3, min_gap_mm: 0.5 }
34
+ spot_uv_digital: { min_line_mm: 0.1, min_gap_mm: 0.2 } # 数码 UV(喷墨):用户确认工厂能做时,工艺加 --process digital 才用(2026-10-30 用户定,补 41;不在工厂确认的范围里)
35
+ emboss: { min_line_mm: 0.5, min_gap_mm: 1.0 } # 击凸、压凹共用
36
+ white: { min_line_mm: 0.3, min_gap_mm: 0.5 } # 白墨
37
+ crease_clearance_mm: 2
38
+ registration_tolerance_mm: 0.1 # 工艺超出对应的印刷图形多少就提醒没对齐(F04,补 20 新加,不在工厂确认的范围里)【初值】
39
+ attachment: # 配件(金属标,docs/ATTACHMENTS.md;补 40 新加,不在工厂确认的范围里)
40
+ fold_clearance_mm: 3 # 标的外形离折线 / 刀线至少多远(A01)【初值】
41
+ labels: # 不干胶标签(C4,docs/C4_CARRIER_FRAMEWORK.md;不在工厂确认的范围里,全部【初值】)
42
+ bleed_mm: 2 # 标签出血
43
+ safe_margin_mm: 2 # 文字、条码离模切外形至少多远
44
+ wrap_overlap_mm: 6 # 环标默认搭接
45
+ wrap_tolerance_mm: 1 # 环标长度和瓶周长 + 搭接差多少就报(L02)
46
+ panel_max_arc: 0.45 # 前 / 背标最宽占瓶周长的比例
47
+ min_corner_r_mm: 1 # 模切外形最小圆弧半径(L05)
48
+ min_concave_r_mm: 2 # 内凹圆弧最小半径(太小模切会撕,L05)
49
+ arc_fit_tol_mm: 0.05 # 椭圆 / 异形外形用双圆弧逼近的最大误差(守 D4)
50
+ barcode_max_arc_deg: 30 # 条码横跨的圆心角超过这个就提醒(L04;GS1 资料待查)
51
+ roll: # 卷标交付参数:规格书里写"请标签厂确认"
52
+ unwind: 1 # 出标方向(标准 8 个方位)
53
+ core_mm: 76 # 卷芯内径
54
+ max_roll_od_mm: 300 # 卷外径上限
55
+ gap_mm: 3 # 标签间距
56
+ across: 1 # 排数
57
+ liner_margin_mm: 1.5 # 底纸两边留边
58
+ pouches: # 软包装(C5,docs/C5_POUCHES.md;参照 Pacdora 参数化模板,不在工厂确认的范围里,全部【初值】)
59
+ bleed_mm: 3
60
+ safe_margin_mm: 3 # 文字离封边内沿至少多远
61
+ seal_small_mm: 5 # 封边宽:袋宽 ≤ seal_break_w 时 5,否则 7
62
+ seal_large_mm: 7
63
+ seal_break_w: 90
64
+ gusset_k: 0.3 # 自立袋底褶深 G = 0.3·W − 10
65
+ gusset_b: -10
66
+ zipper_top_mm: 13 # 拉链带离顶 13–25
67
+ zipper_w_mm: 12
68
+ tear_from_top_mm: 9 # 撕口离顶
69
+ tear_size_mm: 3
70
+ fin_seal_mm: 9 # 背封袋中缝封
71
+ end_seal_mm: 12 # 背封袋上下封
72
+ tolerance_mm: 1.5 # 制袋尺寸公差(规格书写"请制袋厂确认")
73
+ flat_depth_k: 0.4 # 平底袋不给底深时 = 0.4 × 正面宽
74
+ flat_top_seal_mm: 10 # 平底袋顶封
75
+ flat_bottom_seal_mm: 6 # 平底袋底片四边封、袋身下沿
76
+ flat_fin_mm: 10 # 平底袋背中缝每边(Pacdora 10)
77
+ flat_bottom_gap_mm: 10 # 平底袋的底单独一片,排在右边、和袋身之间空 10
78
+ corner_seal_mm: 3 # 平底袋四条竖角封(跨折线)
79
+ valve_d_mm: 22 # 单向排气阀直径
80
+ valve_gap_mm: 10 # 排气阀离拉链带 / 顶封
81
+ spout_d_mm: 10 # 吸嘴口径(常见 8.6 / 10 / 16 / 22)
82
+ spout_base_k: 2.6 # 吸嘴船形底座宽 = 2.6 × 口径
83
+ spout_base_h_mm: 12
84
+ spout_corner_mm: 28 # 斜角吸嘴的切角直角边
85
+ handle_w_k: 0.4 # 手提孔宽 = 0.4 × 袋宽,最多 90
86
+ handle_max_w_mm: 90
87
+ handle_h_mm: 20
88
+ handle_top_mm: 15 # 手提孔上沿离顶
89
+ handle_margin_mm: 8 # 孔四周的手提封
90
+ window_min_mm: 15 # 透明窗最小边
91
+ shape_tol_mm: 0.05 # 异形外形转圆弧误差
92
+ roll: # 卷膜交付(自动包装机制袋;请印刷厂、包装机厂确认)
93
+ unwind: 1 # 出卷方向(标准 8 个方位)
94
+ core_mm: 76
95
+ max_roll_od_mm: 400
96
+ max_splices: 2 # 每卷接头上限,接头处做标记
97
+ eye_w_mm: 10 # 光标(电眼色标)横向宽
98
+ eye_h_mm: 5 # 光标沿走膜方向长
99
+ eye_edge_mm: 2 # 光标离膜边 / 中缝封
100
+ eye_lane_mm: 3 # 光标两边留空的电眼通道
101
+ eye_cmyk: [0, 0, 0, 100]
102
+ lane_min_lum: 0.6 # 通道里亮度低于 0.6(0 黑 – 1 白)算深,电眼会误读(PO07)
103
+ fill_default: 0.7 # 装满效果图的鼓起量(job.json 的 pouch.fill 可改)
104
+ puff_k: 0.25 # 每面最大鼓起 = 鼓起量 × 0.25 × 内容区短边
105
+ base_k: 0.9 # 自立袋底 / 侧风琴撑开的半深 = 鼓起量 × 0.9 × 褶深
106
+ stretch_warn: 0.08 # PO05:装满后膜要变形超过 8% 的地方
107
+ small_text_pt: 8 # PO05:小于 8 pt 算小字
108
+ window: # 开窗(docs/M4_WINDOW.md)
109
+ min_size_mm: 10 # 窗口最小边长
110
+ min_corner_r_mm: 1 # 最小圆角(尖角容易撕裂)
111
+ default_corner_r_mm: 3 # 圆角矩形窗不给 --r 时的圆角
112
+ edge_clearance_mm: 6 # 窗口离压线 / 外轮廓 / 糊口落胶位置至少多远(贴窗是工厂的后续工序,不在这里管)
113
+ min_web_mm: 8 # 两个窗口之间至少留多宽的纸
114
+ max_area_ratio: 0.6 # 窗口占面积的比例超过这个就提醒(盒子变软)
115
+
116
+ spot_names: # PDF 专色名
117
+ cut: Dieline_Cut
118
+ crease: Dieline_Crease
119
+ perf: Dieline_Perf
120
+ partial_cut: Dieline_Score
121
+ reverse_crease: Dieline_ReverseCrease
122
+ foil_gold: Foil_Gold
123
+ foil_silver: Foil_Silver
124
+ foil_copper: Foil_Copper # 铜金 / 玫瑰金一类的箔(2026-10-29 天地盖测试 F-01)
125
+ spot_uv: Spot_UV
126
+ emboss: Emboss
127
+ deboss: Deboss
128
+ white: White_Ink
129
+ glue_area: Glue_Area # 糊胶区标注(信息层,不印;补 17 起生产文件里也有这一层)
130
+ keep_clear: Keep_Clear # 封口 / 拉链 / 撕口 / 搭接区标注(软袋、标签;信息层,不印;C5)
131
+ annotation: Info_Annotation # 生产文件的"标注"层(各面尺寸、图例、文件信息;只在出血外,不印)
132
+ attachment: Attach_Position # 配件(金属标)的贴标位置:外形线 + 中心十字,信息层,不印(补 40 新加,不在工厂确认的范围里)
133
+
134
+ dxf:
135
+ version: R12
136
+ layers: # ACI 颜色号:1 红 3 绿 5 蓝 6 洋红 2 黄
137
+ cut: { name: CUT, aci: 1 }
138
+ crease: { name: CREASE, aci: 3 }
139
+ perf: { name: PERF, aci: 5 }
140
+ partial_cut: { name: SCORE, aci: 6 }
141
+ reverse_crease: { name: RCREASE, aci: 2 }
142
+ glue_area: { name: GLUE, aci: 4 } # 糊胶区标注图层(不是刀线;常规标法)
143
+ keep_clear: { name: SEAL, aci: 6 } # 封口 / 拉链 / 撕口区标注图层(软袋、标签;不是刀线)
144
+ attachment: { name: ATTACH, aci: 30 } # 配件贴标位置(不是刀线;补 40)
145
+
146
+ cf2:
147
+ units: mm
148
+ linetypes: { cut: 1, crease: 2, perf: 3, partial_cut: 4, reverse_crease: 5 } # 参照 CFF2 线型表;反压线按常规单独编号,刀模厂按需映射【初值】
149
+
150
+ compensation: # 见规格 8.5
151
+ folding_carton: { k_panel: 1.0, k_height: 1.0, k_lid: 1.0 }
152
+ corrugated: { k_panel: 1.0, k_height: 1.0, k_lid: 1.0, k_flap: 0.5 } # k_lid:飞机盒的盖(v0.2)
153
+
154
+ deliverables: [production_pdf, spec_sheet, dxf] # 交付包(发给工厂):分层的生产文件、规格书、刀模 DXF(补 17)
155
+ archive: [confirm_png, preflight_report, preview_png, dieline_pdf, cf2, finish_pdfs] # 存档(<交付包>_archive/,工厂另要时再给)
156
+ file_preferences:
157
+ editable_source: layered_pdf # 有工厂要求 ai / cdr 时在这里标注
@@ -0,0 +1,28 @@
1
+ # 材料预设。厚度【初值】,以工厂实测为准(规格第 7 节)。
2
+ sbs_300: { name: SBS 300 g/m², type: folding_carton, caliper_mm: 0.42, flute: null, surface: coated }
3
+ sbs_350: { name: SBS 350 g/m², type: folding_carton, caliper_mm: 0.48, flute: null, surface: coated }
4
+ sbs_400: { name: SBS 400 g/m², type: folding_carton, caliper_mm: 0.55, flute: null, surface: coated }
5
+ gd_350: { name: White-lined greyback 350 g/m², type: folding_carton, caliper_mm: 0.48, flute: null, surface: coated }
6
+ kraft_350: { name: Kraft board 350 g/m², type: folding_carton, caliper_mm: 0.50, flute: null, surface: uncoated }
7
+ flute_e: { name: E-flute corrugated, type: corrugated, caliper_mm: 1.5, flute: E }
8
+ flute_b: { name: B-flute corrugated, type: corrugated, caliper_mm: 3.0, flute: B }
9
+ flute_c: { name: C-flute corrugated, type: corrugated, caliper_mm: 4.0, flute: C }
10
+ flute_bc: { name: BC double-wall corrugated, type: corrugated, caliper_mm: 6.5, flute: BC }
11
+ # 不干胶标签(C4):厚度是面材(不含底纸),只用于 3D 离瓶面的距离;film 是膜材种类(透明 / 镀铝要白墨打底)
12
+ label_coated: { name: Coated paper label stock, type: label_stock, caliper_mm: 0.08, flute: null, surface: coated }
13
+ label_kraft: { name: Kraft paper label stock, type: label_stock, caliper_mm: 0.09, flute: null, surface: uncoated }
14
+ label_textured: { name: Textured paper label stock (wine label), type: label_stock, caliper_mm: 0.12, flute: null, surface: uncoated }
15
+ label_pp_white: { name: White PP label stock, type: label_stock, caliper_mm: 0.06, flute: null, surface: coated, film: white }
16
+ label_pp_clear: { name: Clear PP label stock, type: label_stock, caliper_mm: 0.05, flute: null, surface: coated, film: clear }
17
+ label_pe_white: { name: White PE label stock (squeeze bottles), type: label_stock, caliper_mm: 0.08, flute: null, surface: coated, film: white }
18
+ label_metallized: { name: Silver metallized label stock, type: label_stock, caliper_mm: 0.06, flute: null, surface: coated, film: metallized }
19
+ # 软包装复合膜(C5):厚度是总厚(只用于 3D),film 决定要不要白墨(透明 / 镀铝);复合结构以制袋厂为准【初值】
20
+ pouch_pet_pe_clear: { name: Clear PET/PE laminate, type: film_laminate, caliper_mm: 0.10, flute: null, surface: coated, film: clear }
21
+ pouch_pet_vmpet_pe: { name: Metallized PET/VMPET/PE laminate, type: film_laminate, caliper_mm: 0.11, flute: null, surface: coated, film: metallized }
22
+ pouch_pet_al_pe: { name: PET/AL/PE foil laminate, type: film_laminate, caliper_mm: 0.12, flute: null, surface: coated, film: metallized }
23
+ pouch_matte_white: { name: Matte BOPP/white PE laminate, type: film_laminate, caliper_mm: 0.10, flute: null, surface: coated, film: white }
24
+ pouch_kraft_pe: { name: Kraft/PE laminate, type: film_laminate, caliper_mm: 0.13, flute: null, surface: uncoated, film: kraft }
25
+ pouch_pet_al_rcpp: { name: PET/AL/RCPP retort laminate (121 °C; ready meals and meat), type: film_laminate, caliper_mm: 0.12, flute: null, surface: coated, film: metallized }
26
+ pouch_ny_pe_clear: { name: Clear NY/PE laminate (freezer and vacuum), type: film_laminate, caliper_mm: 0.09, flute: null, surface: coated, film: clear }
27
+ pouch_mono_pe_white: { name: White mono-material PE/PE (recyclable), type: film_laminate, caliper_mm: 0.11, flute: null, surface: coated, film: white }
28
+ pouch_kraft_pla: { name: Kraft/PLA laminate (biodegradable), type: film_laminate, caliper_mm: 0.13, flute: null, surface: uncoated, film: kraft }
@@ -0,0 +1,121 @@
1
+ {
2
+ "version": "5",
3
+ "note": "仅供视觉示意的材质预设;不是工厂实测或制造公差。roughness/metallic/clearcoat 为 0–255。relief_* 是击凸 / 压凹在屏幕上的显示参数,不是模具深度:relief_edge_mm 是沿轮廓一圈斜坡的宽度(里外各一半),relief_height_mm 是平顶高出纸面多少,relief_cavity 是凹处压暗的强度(0–1)。 attachment 是配件(金属标):field 是底面(喷砂哑光,粗糙度高)、relief 是凸起图案(抛光),height 是标面在高度图里的值(128 平、255 最高),edge_mm 是外缘斜坡宽。 static_reflection 是静态效果图的影棚(只看,不随视角换灯):左前方一块竖长柔光灯板(方向 strip_az_deg / strip_el_deg,0 正前、负值往左;距盒子中心 strip_distance、宽 strip_width、高 strip_height,都是盒子对角线的倍数)加浅色地面(往下看 floor_fade_deg 度提亮到最大);灯板软边 edge + edge_per_rough × 粗糙度(对角线倍数);粗糙度 ≥ rough_none 不反光、≤ rough_full 最强;strip_strength / floor_strength 是灯板、地面反光往白色混的最大比例。",
4
+ "fold": {
5
+ "crease_radius_caliper": 1.0
6
+ },
7
+ "paper": [
8
+ 173,
9
+ 0,
10
+ 0
11
+ ],
12
+ "matte_lamination": [
13
+ 150,
14
+ 0,
15
+ 90
16
+ ],
17
+ "gloss_lamination": [
18
+ 48,
19
+ 0,
20
+ 240
21
+ ],
22
+ "matte_varnish": [
23
+ 140,
24
+ 0,
25
+ 60
26
+ ],
27
+ "gloss_varnish": [
28
+ 65,
29
+ 0,
30
+ 210
31
+ ],
32
+ "foil_gold": {
33
+ "base": [
34
+ 217,
35
+ 174,
36
+ 73
37
+ ],
38
+ "material": [
39
+ 59,
40
+ 255,
41
+ 0
42
+ ]
43
+ },
44
+ "foil_silver": {
45
+ "base": [
46
+ 218,
47
+ 222,
48
+ 230
49
+ ],
50
+ "material": [
51
+ 51,
52
+ 255,
53
+ 0
54
+ ]
55
+ },
56
+ "foil_copper": {
57
+ "base": [
58
+ 196,
59
+ 122,
60
+ 84
61
+ ],
62
+ "material": [
63
+ 59,
64
+ 255,
65
+ 0
66
+ ]
67
+ },
68
+ "foil_holo": {
69
+ "base": [
70
+ 200,
71
+ 206,
72
+ 215
73
+ ],
74
+ "material": [
75
+ 64,
76
+ 255,
77
+ 0
78
+ ]
79
+ },
80
+ "spot_uv": [
81
+ 30,
82
+ 0,
83
+ 255
84
+ ],
85
+ "white": [
86
+ 250,
87
+ 250,
88
+ 250
89
+ ],
90
+ "relief_height_mm": 0.3,
91
+ "relief_edge_mm": 0.5,
92
+ "relief_cavity": 0.2,
93
+ "attachment": {
94
+ "field": [
95
+ 110,
96
+ 255,
97
+ 0
98
+ ],
99
+ "relief": [
100
+ 50,
101
+ 255,
102
+ 0
103
+ ],
104
+ "height": 200,
105
+ "edge_mm": 1.0
106
+ },
107
+ "static_reflection": {
108
+ "strip_az_deg": -33,
109
+ "strip_el_deg": -8,
110
+ "strip_distance": 1.2,
111
+ "strip_width": 0.18,
112
+ "strip_height": 2.6,
113
+ "edge": 0.05,
114
+ "edge_per_rough": 0.5,
115
+ "floor_fade_deg": 30,
116
+ "strip_strength": 0.24,
117
+ "floor_strength": 0.04,
118
+ "rough_none": 160,
119
+ "rough_full": 30
120
+ }
121
+ }
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: packaging-prepress
3
+ description: "Packaging design to factory-ready print files. First concept images so the decision maker picks a direction, then the final design, confirmed on the dieline confirmation image (3D mockups show the finished look), then a production pack the factory accepts: dieline DXF/CF2/PDF, CMYK print PDF, foil / spot UV plates, spec sheet, preflight report. Use when the user wants packaging design, concept images, mockups, dielines or print files for folding cartons (reverse tuck end, straight tuck end, snap-lock or auto-lock bottom), mailer boxes, corrugated shipping boxes, tray-and-lid or drawer boxes; wants foil, spot UV or embossing; wants to check files for a printer; or wants to view stages on the local workbench and fold the 3D view along the dieline. Also bottle and jar labels and flexible pouches (stand-up, three-side seal, pillow, flat-bottom). Not for: imposition, rigid set-up boxes, shrink sleeves, or structures outside the FEFCO / ECMA catalog that the engine cannot build (see references/structures.md)."
4
+ ---
5
+
6
+ # Packaging prepress (packaging-prepress)
7
+
8
+ The whole workflow runs through the `pacxio` command line:
9
+
10
+ > Brief → content list → (lots of copy: layout draft) → **concept images**: main view (pick a direction) → back view → flats → final design rebuilt from the flats → **dieline confirmation image (confirm)** → 3D mockups (view only) → preflight → delivery pack
11
+
12
+ The user confirms: the content list wording, the layout draft, the concept direction, the flats, and the dieline confirmation image. The first four are records; **`approve` on the dieline confirmation image is the only gate before export**. Concept images confirm the **direction and feel** (AI-drawn: proportions and text are not guaranteed, the images never go into print files; graphics on the flats are traced to vectors for the final artwork). The dieline confirmation image confirms **exactly what will be printed** (it is the same data as the print files). 3D mockups are for viewing, not confirming.
13
+
14
+ Dielines, 3D views and the structure library run on this machine. Composing artwork, separations, preflight and the delivery pack run on the pacxio server. AI images (concepts and assets) cost the user image credits.
15
+
16
+ ## Hard rules (read first)
17
+
18
+ 1. **Errors mean no factory files.** When `preflight` / `export` report errors, tell the user as they are and fix each one by its `fix` until it passes; never say "the files can go to the factory" while there are errors.
19
+ 2. **All text in print files is set by the engine and outlined.** Only concept images may contain AI-drawn text; the engine forces "no text" on print asset prompts, and you must not ask for text in them either. Every piece of text in the final files is placed with `art add --kind text`.
20
+ 3. **Concept images are never assets.** Main views, back views and flats must not be cropped, cut out or enlarged into the layout (the engine refuses, and recognises identical pixels). The final design is **rebuilt from the confirmed flats** (from the main view when there are no flats).
21
+ 4. **Only the user confirms; never confirm for them.** Run `content confirm`, `plan --confirm`, `concept choose`, `concept confirm` (this set of flats) and `approve` only after the user **clearly says** they confirm / which one they choose. If the design changes after confirmation, `render` again and ask the user to confirm again. The user can also click confirm on the workbench themselves; the agent never clicks it for them and never calls the workbench's confirm endpoint.
22
+ 5. **Say plainly what is not verified.** Profile `verified=false`, lid / tuck direction not confirmed (PROFILE / ORIENT / MK03), CF2 not checked by a die maker, no standard ICC found — pass these on as they are, without softening (the `default` profile and the directions of the original eight box styles are confirmed; newer structures are not physically checked yet). ICC profiles are picked by paper automatically; do not ask the user.
23
+ 6. **Explain the gap between the concept and the product.** Tell the user when they pick a direction what the engine cannot reproduce (gradients / transparency / shadows inside vectors, special fonts without a font file, AI letterforms and proportions; see `references/design.md`).
24
+ 7. **A physical proof comes before a production run.** Remind the user at every delivery.
25
+ 8. **Never install anything at run time** (no `pip install` / `uv add`). If something is missing, stop and give the user the install instructions.
26
+ 9. **Do not guess key parameters**: size basis (inside / outside), material, text content, finishes. Ask for everything missing at once. Which information **must appear** depends on the category and market regulations; the engine cannot judge it, so ask the user, who is responsible for it.
27
+ 10. **The user confirms font licenses.** When `font add` refuses, do not add `--accept-license-risk` yourself; add it only after the user clearly says they have checked (`references/fonts.md`).
28
+ 11. **Report structural problems first.** If the dieline does not match expectations, record the style, dieline version, size and where it goes wrong and report it to the developers; do not hand-edit cut lines, switch to a similar style, tweak parameters to make it look right, or change the size and structure the user decided (normal structure options are in `references/box-styles.md`).
29
+ 12. **Use the user's copy exactly as given.** Only check spelling, grammar, punctuation and capitalisation, and list them as "original → suggestion" for the user to decide; do not rewrite or polish, do not judge whether claims are supported or compliant, and do not delete, change or mark anything pending because of that (pending is only for information the user has not given; `references/content.md`).
30
+
31
+ ## How to start, how to continue
32
+
33
+ 1. **Check the environment**: `python3 <skill-dir>/scripts/check_env.py --json` (`<skill-dir>` is this Skill's real folder). If the engine or fonts are missing, **stop** and give the user the instructions; if only Ghostscript is missing you can go on, but separation checks (B02, F01) are skipped — tell the user.
34
+ 2. **New project**: ask for the whole brief at once, create the job, open the workbench right away, build the content list — `references/requirements.md`.
35
+ 3. **Continuing** (the user gives an existing job, or says "continue / change this"): `references/resume.md`. Confirmations that still hold carry over; only ask about what is missing or what this change made expire.
36
+ 4. **Run `pacxio next <job>` before every round of work**: it shares its source with the workbench's "Now" and says where the job stands, who it waits on, which command runs next and which reference to read; user notes come first (`notes list --open` first, `notes reply` when done). In stages that wait on the user it only tells you what to show and what to run after they confirm.
37
+ 5. **The user wants to see their own dieline folded** (they give a DXF / vector PDF): not supported at the moment; tell the user so.
38
+ 6. **Images**: use the agent's built-in image tool if it has one (Codex); otherwise a configured API, or ask the user for images. Prompts come from `pacxio concept prompt`; tell the user how many images you will make before you make them.
39
+ 7. **Cloud sign-in**: composing, rendering, preflight and export run on the pacxio server, and the first time they return `CLOUD_LOGIN` (an address and an 8-character code). Give the user the address and code exactly; **the user** signs in in the browser with an email code, checks the code and clicks Approve (the agent never signs in or approves for them, and never uses a browser tool to click it). When they say it is done, rerun the same command (`references/troubleshooting.md`).
40
+
41
+ ## Stage map
42
+
43
+ | Stage | Key commands | What the user does | Read |
44
+ |---|---|---|---|
45
+ | Brief, structure, job, workbench | `structures suggest / show`, `job init` (`--fefco` / `--ecma` / `--recipe`), `panels`, `studio start`, `window add` | Answer the brief, pick a structure | `requirements.md`, `structures.md`, `box-styles.md`, `studio.md` |
46
+ | Content list (lots of copy: layout draft first, route A) | `content import / list / confirm`; `style set`, `art add`, `plan` | Confirm the wording (and the draft) | `content.md`, `layout-draft.md` |
47
+ | Main-view concepts: one image for each of 2 directions | `concept prompt --step main` / `concept gen`, `concept import` | **Pick a direction** (`concept choose --region …`) | `concept.md` |
48
+ | Back view (always first) → flats | `plan`, `concept prompt --step back / flat`, `concept import --view … --faces …` (several flat candidates can be imported at once; only the most accurate is kept), `concept rectify` | **Confirm the set of flats** (ask only when every proportion is within 10%; then `concept confirm --by`) | `concept.md` |
49
+ | Final design from the flats | `art add / set / move`, `restore strip / face`, `visual trace / gen / import / prepare`, `finish add`, `surface add`, `color add`, `font add` | — | `design.md`, `vector.md`, `fonts.md`, `finishes.md`, `visual-prompts.md` |
50
+ | Dieline confirmation image | `render`, `flat --diff`, `approve` | **Confirm (the only gate before export)** | `mockup.md` |
51
+ | 3D mockups | `mockup` | View only | `mockup.md`, `finishes.md` |
52
+ | Preflight | `preflight --json` | — | `prepress-rules.md`, `troubleshooting.md` |
53
+ | Export | `export --proof --require-approval` | — | `delivery.md` |
54
+
55
+ Multi-part styles `tray_lid`, `drawer`: same workflow (back view and flats too); panels use full names `part.panel`, flats cover the panels visible when closed (`lid.top` …), and each part gets its own dieline confirmation image (`box-styles.md`).
56
+
57
+ Every command takes `--json` and prints `{ok, command, job, artifacts, data, errors, warnings}`; exit codes 0 success, 1 errors, 2 bad arguments, 3 environment missing. All commands: `references/commands.md`.
58
+
59
+ ## References
60
+
61
+ | File | When to read |
62
+ |---|---|
63
+ | `references/requirements.md` | New project: the brief, creating the job, opening the workbench, the content list, choosing route A / B |
64
+ | `references/resume.md` | Continuing an existing project |
65
+ | `references/content.md` | Content list: organising, importing, the user confirming wording, using items in the layout |
66
+ | `references/layout-draft.md` | Layout draft when there is a lot of copy (route A); the layout after the flats are confirmed |
67
+ | `references/concept.md` | Main view, back view, flats: prompts, import, choosing, proportion checks, straightening, comparison |
68
+ | `references/design.md` | Final design from the flats: color, text, graphics, photos, finishes, coordinates, stacking, what the engine cannot reproduce |
69
+ | `references/vector.md` | Tracing vectors from the flats, hand-written SVG, clip shapes, continuity across folds |
70
+ | `references/fonts.md` | Built-in fonts, tracking and line spacing, hanging indents, brand fonts and licenses |
71
+ | `references/visual-prompts.md` | Image prompts for print assets, sizes, product photos on transparent backgrounds |
72
+ | `references/finishes.md` | Foil / spot UV / embossing, lamination and varnish, checking finishes in 3D |
73
+ | `references/mockup.md` | Dieline confirmation image, 3D mockups, confirmation and required content |
74
+ | `references/studio.md` | Local workbench, notes, confirmations the user clicks on the page |
75
+ | `references/structures.md` | Choosing a structure: by code, suggestions from the catalog (with 3D previews), co-designing a new one, how to state maturity |
76
+ | `references/box-styles.md` | Box styles, parameters, windows, material presets, panel-local coordinates |
77
+ | `references/factory-profile.md` | Factory profiles, ICC |
78
+ | `references/prepress-rules.md` | Preflight rules in plain words |
79
+ | `references/troubleshooting.md` | Common errors and fixes, exit codes |
80
+ | `references/delivery.md` | Preflight, export, what is in the delivery pack, what to tell the user |
81
+ | `references/commands.md` | Command reference |
@@ -0,0 +1,8 @@
1
+ # Codex-only metadata (SKILL.md frontmatter only uses name / description, for cross-agent compatibility)
2
+ interface:
3
+ display_name: "Packaging prepress"
4
+ short_description: "Turn box sizes and brand assets into factory-ready dielines, print files and preflight reports"
5
+ default_prompt: "Use $packaging-prepress to make a reverse tuck end box, 80×50×180 mm, SBS 350 g, gold foil logo on the front, for Tidewell sea salt crackers."
6
+
7
+ policy:
8
+ allow_implicit_invocation: true