@shulex/cxclawctl 0.0.0-stage → 0.1.2

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 (209) hide show
  1. package/README.md +228 -2
  2. package/bin/cxclawctl.mjs +11 -0
  3. package/capabilities.lock.json +898 -0
  4. package/dist/cli.js +363 -0
  5. package/dist/cli.js.map +1 -0
  6. package/package.json +33 -4
  7. package/requirements-cli.txt +2 -0
  8. package/skills/__lib__/__init__.py +0 -0
  9. package/skills/__lib__/skill-runtime/bootstrap.py +134 -0
  10. package/skills/__lib__/solvea-api/__init__.py +0 -0
  11. package/skills/__lib__/solvea-api/client.py +1944 -0
  12. package/skills/__lib__/solvea-api/dashboard.py +100 -0
  13. package/skills/__lib__/solvea-api/solvea_api.py +1341 -0
  14. package/skills/agent-analytics/SKILL.md +74 -0
  15. package/skills/agent-analytics/references/chat-report-fields.md +36 -0
  16. package/skills/agent-analytics/references/report-fields.md +130 -0
  17. package/skills/agent-analytics/references/transcript.md +110 -0
  18. package/skills/agent-builder/SKILL.md +42 -0
  19. package/skills/agent-builder/interfaces/fallback-chatflow.md +47 -0
  20. package/skills/agent-builder/references/chatflow/graph-spec.md +259 -0
  21. package/skills/agent-builder/references/chatflow/node-selection.md +89 -0
  22. package/skills/agent-builder/references/chatflow/nodes/agent.md +350 -0
  23. package/skills/agent-builder/references/chatflow/nodes/business-track.md +43 -0
  24. package/skills/agent-builder/references/chatflow/nodes/code.md +157 -0
  25. package/skills/agent-builder/references/chatflow/nodes/collect-order.md +47 -0
  26. package/skills/agent-builder/references/chatflow/nodes/finish.md +34 -0
  27. package/skills/agent-builder/references/chatflow/nodes/human-review.md +60 -0
  28. package/skills/agent-builder/references/chatflow/nodes/if-else.md +100 -0
  29. package/skills/agent-builder/references/chatflow/nodes/intent.md +79 -0
  30. package/skills/agent-builder/references/chatflow/nodes/knowledge-reply.md +43 -0
  31. package/skills/agent-builder/references/chatflow/nodes/llm.md +117 -0
  32. package/skills/agent-builder/references/chatflow/nodes/note.md +38 -0
  33. package/skills/agent-builder/references/chatflow/nodes/question.md +97 -0
  34. package/skills/agent-builder/references/chatflow/nodes/rag-reply.md +68 -0
  35. package/skills/agent-builder/references/chatflow/nodes/reply.md +97 -0
  36. package/skills/agent-builder/references/chatflow/nodes/start.md +35 -0
  37. package/skills/agent-builder/references/chatflow/nodes/sub-graph.md +48 -0
  38. package/skills/agent-builder/references/chatflow/nodes/tool.md +138 -0
  39. package/skills/agent-builder/references/chatflow/nodes/transfer-to-human.md +63 -0
  40. package/skills/agent-builder/references/chatflow/nodes/variable-assignment.md +52 -0
  41. package/skills/agent-builder/references/chatflow/nodes/variable-extract.md +50 -0
  42. package/skills/agent-builder/references/chatflow/nodes/variable-process.md +70 -0
  43. package/skills/agent-builder/references/chatflow/overview.md +53 -0
  44. package/skills/agent-builder/references/chatflow/visual-translation.md +64 -0
  45. package/skills/agent-builder/references/chatflow/workflow.md +134 -0
  46. package/skills/agent-builder/references/multi-agent/create-update.md +185 -0
  47. package/skills/agent-builder/references/multi-agent/graph-spec.md +246 -0
  48. package/skills/agent-builder/references/multi-agent/graph-structure.md +12 -0
  49. package/skills/agent-builder/references/multi-agent/migrate-to-chatflow.md +13 -0
  50. package/skills/agent-builder/references/multi-agent/migration/large.md +554 -0
  51. package/skills/agent-builder/references/multi-agent/migration/principles.md +446 -0
  52. package/skills/agent-builder/references/multi-agent/migration/small.md +225 -0
  53. package/skills/agent-builder/references/multi-agent/orchestration.md +11 -0
  54. package/skills/agent-builder/references/multi-agent/overview.md +48 -0
  55. package/skills/agent-builder/references/multi-agent/update.md +128 -0
  56. package/skills/agent-builder/references/multi-agent/workflow.md +87 -0
  57. package/skills/agent-builder/references/single-agent/overview.md +48 -0
  58. package/skills/agent-builder/references/single-agent/prompt.md +16 -0
  59. package/skills/agent-builder/references/single-agent/tools.md +36 -0
  60. package/skills/agent-builder/references/single-agent/voice.md +46 -0
  61. package/skills/agent-builder/references/tools/http-tool.md +315 -0
  62. package/skills/agent-builder/references/tools/mock-tool.md +279 -0
  63. package/skills/agent-builder/references/tools/overview.md +46 -0
  64. package/skills/agent-builder/references/tools/tool-config.md +43 -0
  65. package/skills/agent-builder/references/tools/x-token.md +34 -0
  66. package/skills/agent-builder/scripts/chatflow/chatflow_builder.py +3458 -0
  67. package/skills/agent-builder/scripts/chatflow/validate_graph.py +1697 -0
  68. package/skills/agent-builder/scripts/copy_marketplace_agent.py +61 -0
  69. package/skills/agent-builder/scripts/multi-agent/legacy_graph_analyzer.py +5974 -0
  70. package/skills/agent-builder/scripts/multi-agent/replay_compare.py +679 -0
  71. package/skills/agent-builder/scripts/patch_agent_tools.py +135 -0
  72. package/skills/agent-builder/scripts/tools/validate_tool_config.py +384 -0
  73. package/skills/agent-tester/SKILL.md +35 -0
  74. package/skills/agent-tester/batch-test/overview.md +86 -0
  75. package/skills/agent-tester/scripts/batch_test_sheet.py +213 -0
  76. package/skills/agent-tester/single-test/badcase-retest.md +85 -0
  77. package/skills/agent-tester/single-test/direct-test.md +24 -0
  78. package/skills/agent-tester/single-test/overview.md +142 -0
  79. package/skills/delivery/SKILL.md +112 -0
  80. package/skills/delivery/interfaces/classify.md +38 -0
  81. package/skills/delivery/interfaces/create-agents.md +89 -0
  82. package/skills/delivery/interfaces/delivery-test.md +67 -0
  83. package/skills/delivery/references/flow.md +40 -0
  84. package/skills/delivery/references/validation.md +15 -0
  85. package/skills/delivery/scripts/batch_test.py +704 -0
  86. package/skills/delivery/scripts/classify.py +22 -0
  87. package/skills/delivery/scripts/create_agents.py +695 -0
  88. package/skills/delivery/scripts/gen_delivery_report.py +335 -0
  89. package/skills/delivery/scripts/gen_excel.py +234 -0
  90. package/skills/delivery/scripts/gen_report.py +208 -0
  91. package/skills/delivery/scripts/plan.py +163 -0
  92. package/skills/delivery/scripts/render.py +713 -0
  93. package/skills/delivery/scripts/render_summary.py +38 -0
  94. package/skills/delivery/scripts/sample_history_cases.py +109 -0
  95. package/skills/kb-builder/SKILL.md +80 -0
  96. package/skills/kb-builder/interfaces/qa-upload.md +55 -0
  97. package/skills/kb-builder/interfaces/web-kb.md +84 -0
  98. package/skills/kb-builder/references/directory.md +373 -0
  99. package/skills/kb-builder/references/export.md +282 -0
  100. package/skills/kb-builder/references/isolation-keywords.md +113 -0
  101. package/skills/kb-builder/references/knowledge.md +153 -0
  102. package/skills/kb-builder/references/product.md +52 -0
  103. package/skills/kb-builder/references/qa-from-help-center.md +58 -0
  104. package/skills/kb-builder/references/qa-from-pdf.md +94 -0
  105. package/skills/kb-builder/references/qa-from-tickets.md +168 -0
  106. package/skills/kb-builder/references/qa-from-web.md +98 -0
  107. package/skills/kb-builder/references/qa-quality.md +73 -0
  108. package/skills/kb-builder/references/reply-template.md +237 -0
  109. package/skills/kb-builder/references/tag-isolation-migration.md +61 -0
  110. package/skills/kb-builder/references/tags.md +45 -0
  111. package/skills/kb-builder/references/upload.md +130 -0
  112. package/skills/kb-builder/scripts/batch_extract_ticket_qa.py +333 -0
  113. package/skills/kb-builder/scripts/build_directory_plan.py +144 -0
  114. package/skills/kb-builder/scripts/crawl_site.py +433 -0
  115. package/skills/kb-builder/scripts/create_dirs.py +146 -0
  116. package/skills/kb-builder/scripts/export_knowledge.py +454 -0
  117. package/skills/kb-builder/scripts/extract_ticket_qa.py +441 -0
  118. package/skills/kb-builder/scripts/extract_web_qa.py +118 -0
  119. package/skills/kb-builder/scripts/import_qa.py +219 -0
  120. package/skills/kb-builder/scripts/import_source_documents.py +143 -0
  121. package/skills/kb-builder/scripts/import_templates.py +409 -0
  122. package/skills/poc/SKILL.md +125 -0
  123. package/skills/poc/assets/default_manual.css +279 -0
  124. package/skills/poc/assets/notice_escalate.png +0 -0
  125. package/skills/poc/assets/notice_escalate2.png +0 -0
  126. package/skills/poc/assets/notice_new_chat.png +0 -0
  127. package/skills/poc/assets/poc_test_template.html +645 -0
  128. package/skills/poc/assets/poc_test_template.md +104 -0
  129. package/skills/poc/assets/step3_preview.png +0 -0
  130. package/skills/poc/assets/step4_order_note.png +0 -0
  131. package/skills/poc/interfaces/classify.md +38 -0
  132. package/skills/poc/interfaces/create-agents.md +108 -0
  133. package/skills/poc/interfaces/poc-test.md +94 -0
  134. package/skills/poc/references/flow.md +47 -0
  135. package/skills/poc/references/kb-directory.md +22 -0
  136. package/skills/poc/references/validation.md +17 -0
  137. package/skills/poc/scripts/classify.py +22 -0
  138. package/skills/poc/scripts/create_agents.py +818 -0
  139. package/skills/poc/scripts/gen_excel.py +234 -0
  140. package/skills/poc/scripts/gen_poc_manual.py +249 -0
  141. package/skills/poc/scripts/gen_report.py +208 -0
  142. package/skills/poc/scripts/inspect_chatflow.py +209 -0
  143. package/skills/poc/scripts/plan.py +178 -0
  144. package/skills/poc/scripts/poc_test.py +495 -0
  145. package/skills/poc/scripts/render.py +713 -0
  146. package/skills/poc/scripts/render_summary.py +41 -0
  147. package/skills/runtime-inspector/SKILL.md +51 -0
  148. package/skills/runtime-inspector/references/frontend-rendering.md +126 -0
  149. package/skills/runtime-inspector/references/model.md +59 -0
  150. package/skills/runtime-inspector/references/sandbox.md +131 -0
  151. package/skills/runtime-inspector/scripts/model_inspect.py +68 -0
  152. package/skills/runtime-inspector/scripts/prepare.py +98 -0
  153. package/skills/runtime-inspector/scripts/process.py +84 -0
  154. package/skills/runtime-inspector/scripts/read_state.py +32 -0
  155. package/skills/runtime-inspector/scripts/sandbox_inspect.py +463 -0
  156. package/skills/runtime-inspector/scripts/test_claude_proxy.py +49 -0
  157. package/skills/runtime-inspector/scripts/test_openai_proxy.py +41 -0
  158. package/skills/runtime-inspector/scripts/verify_persistence.py +101 -0
  159. package/skills/runtime-inspector/scripts/write_test.py +41 -0
  160. package/skills/setup/SKILL.md +17 -0
  161. package/skills/shulex-support/SKILL.md +39 -0
  162. package/skills/shulex-support/references/badcase-analysis/overview.md +34 -0
  163. package/skills/shulex-support/references/badcase-analysis/text/conversation-record.md +105 -0
  164. package/skills/shulex-support/references/badcase-analysis/text/core-flow.md +89 -0
  165. package/skills/shulex-support/references/badcase-analysis/text/log-query-rules.md +36 -0
  166. package/skills/shulex-support/references/badcase-analysis/text/m1-entry.md +53 -0
  167. package/skills/shulex-support/references/badcase-analysis/text/m10-chatflow-service.md +259 -0
  168. package/skills/shulex-support/references/badcase-analysis/text/m11-algorithm-service.md +148 -0
  169. package/skills/shulex-support/references/badcase-analysis/text/m12-quality-inspection.md +57 -0
  170. package/skills/shulex-support/references/badcase-analysis/text/m2-intent.md +120 -0
  171. package/skills/shulex-support/references/badcase-analysis/text/m3-strategy.md +126 -0
  172. package/skills/shulex-support/references/badcase-analysis/text/m4-aifield.md +121 -0
  173. package/skills/shulex-support/references/badcase-analysis/text/m5-agent.md +208 -0
  174. package/skills/shulex-support/references/badcase-analysis/text/m6-tool.md +115 -0
  175. package/skills/shulex-support/references/badcase-analysis/text/m7-reply.md +72 -0
  176. package/skills/shulex-support/references/badcase-analysis/text/m8-error.md +92 -0
  177. package/skills/shulex-support/references/badcase-analysis/text/m9-knowledge-search.md +147 -0
  178. package/skills/shulex-support/references/badcase-analysis/text/sls-query.md +283 -0
  179. package/skills/shulex-support/references/badcase-analysis/voice/core-flow.md +77 -0
  180. package/skills/shulex-support/references/badcase-analysis/voice/dependencies.md +19 -0
  181. package/skills/shulex-support/references/badcase-analysis/voice/platform-api.md +23 -0
  182. package/skills/shulex-support/references/badcase-analysis/voice/sls-playbook.md +31 -0
  183. package/skills/shulex-support/references/product-docs.md +70 -0
  184. package/skills/shulex-support/references/tickets.md +184 -0
  185. package/skills/shulex-support/scripts/support.py +427 -0
  186. package/skills/solvea-desk/SKILL.md +39 -0
  187. package/skills/solvea-desk/references/report/fields.md +82 -0
  188. package/skills/solvea-desk/references/report/report-design.md +200 -0
  189. package/skills/solvea-desk/references/report/report-template.html +44 -0
  190. package/skills/solvea-desk/references/report/report.css +517 -0
  191. package/skills/solvea-desk/references/report/workflow.md +464 -0
  192. package/skills/solvea-desk/references/tickets/query.md +103 -0
  193. package/skills/solvea-desk/references/tickets/tags.md +83 -0
  194. package/skills/solvea-desk/scripts/report/fetch_sources.py +580 -0
  195. package/skills/solvea-desk/scripts/report/render_report.py +763 -0
  196. package/skills/solvea-desk/scripts/tickets/desk_api.py +73 -0
  197. package/skills/solvea-desk/scripts/tickets/fetch_tickets.py +403 -0
  198. package/skills/solvea-desk/scripts/tickets/ticket_tags.py +305 -0
  199. package/skills/solvea-kit/SKILL.md +84 -0
  200. package/skills/solvea-kit/references/agent.md +145 -0
  201. package/skills/solvea-kit/references/chat.md +244 -0
  202. package/skills/solvea-kit/references/intent.md +69 -0
  203. package/skills/solvea-kit/references/plugin.md +53 -0
  204. package/skills/solvea-kit/references/quality-inspection.md +75 -0
  205. package/skills/solvea-kit/references/strategy.md +62 -0
  206. package/skills/solvea-kit/references/tagging.md +231 -0
  207. package/skills/solvea-kit/references/variables.md +53 -0
  208. package/skills/solvea-kit/scripts/generate_label_import_file.py +151 -0
  209. package/skills/solvea-kit/scripts/intent_classify.py +843 -0
@@ -0,0 +1,279 @@
1
+ /* ============================================================
2
+ Solvea POC 测试手册 — 默认样式
3
+ ------------------------------------------------------------
4
+ 通用 markdown 元素 + gen_poc_manual.py 注入的对话块 (.case-card / .dialogue) 共用一套样式。
5
+ 要换风格:复制本文件 → 改 → gen_poc_manual.py --css <path>
6
+ ============================================================ */
7
+
8
+ * { box-sizing: border-box; }
9
+
10
+ html { font-size: 16px; }
11
+
12
+ body {
13
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
14
+ "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
15
+ line-height: 1.7;
16
+ color: #1f2328;
17
+ background: #fafbfc;
18
+ max-width: 920px;
19
+ margin: 0 auto;
20
+ padding: 48px 32px 80px;
21
+ }
22
+
23
+ /* ── 标题 ────────────────────────────────────────── */
24
+
25
+ h1, h2, h3, h4 {
26
+ font-weight: 600;
27
+ color: #0c0c0c;
28
+ line-height: 1.3;
29
+ }
30
+
31
+ h1 {
32
+ font-size: 30px;
33
+ margin: 0 0 8px;
34
+ padding-bottom: 16px;
35
+ border-bottom: 3px solid #1f6feb;
36
+ }
37
+
38
+ h2 {
39
+ font-size: 22px;
40
+ margin: 48px 0 12px;
41
+ padding-bottom: 8px;
42
+ border-bottom: 1px solid #d0d7de;
43
+ }
44
+
45
+ h3 {
46
+ font-size: 17px;
47
+ margin: 28px 0 8px;
48
+ color: #1f6feb;
49
+ }
50
+
51
+ h4 {
52
+ font-size: 15px;
53
+ margin: 18px 0 6px;
54
+ color: #57606a;
55
+ }
56
+
57
+ /* ── 文本元素 ────────────────────────────────────── */
58
+
59
+ p { margin: 8px 0 12px; }
60
+
61
+ a { color: #1f6feb; text-decoration: none; }
62
+ a:hover { text-decoration: underline; }
63
+
64
+ strong { color: #0c0c0c; font-weight: 600; }
65
+
66
+ em { color: #1f2328; }
67
+
68
+ /* ── 列表 ────────────────────────────────────────── */
69
+
70
+ ul, ol { padding-left: 26px; margin: 8px 0 12px; }
71
+ li { margin: 4px 0; }
72
+ li > p { margin: 4px 0; }
73
+ li > ul, li > ol { margin: 4px 0; }
74
+
75
+ /* ── 表格 ────────────────────────────────────────── */
76
+
77
+ table {
78
+ border-collapse: collapse;
79
+ width: 100%;
80
+ margin: 16px 0;
81
+ font-size: 14px;
82
+ background: #fff;
83
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
84
+ border-radius: 6px;
85
+ overflow: hidden;
86
+ }
87
+ th, td {
88
+ padding: 10px 14px;
89
+ text-align: left;
90
+ border-bottom: 1px solid #d0d7de;
91
+ vertical-align: top;
92
+ }
93
+ th {
94
+ background: #f6f8fa;
95
+ font-weight: 600;
96
+ color: #1f2328;
97
+ }
98
+ tr:last-child td { border-bottom: 0; }
99
+ tr:nth-child(even) td { background: #fafbfc; }
100
+
101
+ /* ── 引用块 (callout) ──────────────────────────── */
102
+
103
+ blockquote {
104
+ margin: 16px 0;
105
+ padding: 12px 18px;
106
+ background: #f6f8fa;
107
+ border-left: 4px solid #1f6feb;
108
+ color: #57606a;
109
+ border-radius: 0 6px 6px 0;
110
+ }
111
+ blockquote p:first-child { margin-top: 0; }
112
+ blockquote p:last-child { margin-bottom: 0; }
113
+
114
+ /* ── 代码 ────────────────────────────────────────── */
115
+
116
+ code {
117
+ background: rgba(175, 184, 193, 0.2);
118
+ padding: 0.15em 0.4em;
119
+ border-radius: 3px;
120
+ font-family: ui-monospace, "SF Mono", "JetBrains Mono", Consolas, monospace;
121
+ font-size: 0.9em;
122
+ color: #cf222e;
123
+ }
124
+
125
+ pre {
126
+ background: #1c1f24;
127
+ color: #d1d5da;
128
+ padding: 16px;
129
+ border-radius: 6px;
130
+ overflow-x: auto;
131
+ line-height: 1.5;
132
+ font-size: 13.5px;
133
+ }
134
+ pre code {
135
+ background: transparent;
136
+ padding: 0;
137
+ color: inherit;
138
+ }
139
+
140
+ /* ── 图片 ────────────────────────────────────────── */
141
+
142
+ img {
143
+ max-width: 100%;
144
+ display: block;
145
+ margin: 18px auto;
146
+ border-radius: 6px;
147
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
148
+ }
149
+
150
+ /* ── 水平线 ──────────────────────────────────────── */
151
+
152
+ hr {
153
+ border: 0;
154
+ border-top: 1px solid #d0d7de;
155
+ margin: 32px 0;
156
+ }
157
+
158
+ /* ============================================================
159
+ gen_poc_manual.py 注入的对话块(.case-card / .dialogue / .msg)
160
+ markdown 转 HTML 时这些 class 不会被 markdown 改动,由 CSS 接管样式
161
+ ============================================================ */
162
+
163
+ .agent-section { margin: 32px 0; }
164
+ .agent-section h2 {
165
+ color: #1f6feb;
166
+ border-bottom: 2px solid #1f6feb;
167
+ }
168
+ .agent-meta {
169
+ font-size: 13px;
170
+ color: #57606a;
171
+ font-weight: normal;
172
+ margin-left: 8px;
173
+ }
174
+
175
+ .case-card {
176
+ background: #fff;
177
+ border: 1px solid #d0d7de;
178
+ border-radius: 8px;
179
+ margin: 16px 0;
180
+ overflow: hidden;
181
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
182
+ }
183
+ .case-header {
184
+ background: #f6f8fa;
185
+ padding: 10px 16px;
186
+ border-bottom: 1px solid #d0d7de;
187
+ display: flex;
188
+ align-items: center;
189
+ gap: 12px;
190
+ flex-wrap: wrap;
191
+ }
192
+ .case-id {
193
+ font-weight: 600;
194
+ color: #1f6feb;
195
+ font-size: 14px;
196
+ }
197
+ .case-scenario {
198
+ color: #1f2328;
199
+ flex: 1;
200
+ font-size: 14px;
201
+ }
202
+ .chat-id-badge {
203
+ font-size: 12px;
204
+ color: #57606a;
205
+ }
206
+ .chat-id-badge code {
207
+ background: rgba(175, 184, 193, 0.2);
208
+ color: #57606a;
209
+ }
210
+
211
+ .dialogue {
212
+ padding: 16px;
213
+ background: #fff;
214
+ }
215
+ .msg {
216
+ display: flex;
217
+ align-items: flex-start;
218
+ gap: 12px;
219
+ margin: 10px 0;
220
+ }
221
+ .msg .label {
222
+ flex: 0 0 80px;
223
+ font-size: 13px;
224
+ color: #57606a;
225
+ padding-top: 6px;
226
+ user-select: none;
227
+ }
228
+ .bubble {
229
+ max-width: 720px;
230
+ padding: 10px 14px;
231
+ border-radius: 8px;
232
+ line-height: 1.55;
233
+ font-size: 14px;
234
+ word-wrap: break-word;
235
+ }
236
+ .user-bubble {
237
+ background: #e8f0fe;
238
+ color: #1f2328;
239
+ }
240
+ .bot-bubble {
241
+ background: #f0f4f8;
242
+ color: #1f2328;
243
+ border: 1px solid #e1e7ed;
244
+ }
245
+
246
+ .scene-tag {
247
+ display: inline-block;
248
+ background: #ddf4ff;
249
+ color: #0969da;
250
+ padding: 4px 10px;
251
+ border-radius: 12px;
252
+ margin: 2px 4px;
253
+ font-size: 13px;
254
+ }
255
+
256
+ /* ── 打印优化 ──────────────────────────────────── */
257
+
258
+ @media print {
259
+ body {
260
+ background: #fff;
261
+ max-width: 100%;
262
+ padding: 16mm;
263
+ }
264
+ .case-card, table {
265
+ box-shadow: none;
266
+ page-break-inside: avoid;
267
+ }
268
+ h1, h2, h3 {
269
+ page-break-after: avoid;
270
+ }
271
+ img {
272
+ page-break-inside: avoid;
273
+ }
274
+ pre {
275
+ background: #f6f8fa;
276
+ color: #1f2328;
277
+ border: 1px solid #d0d7de;
278
+ }
279
+ }