bobo-ai-cli 3.0.3 → 3.0.5

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 (238) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +259 -259
  3. package/bundled-skills/CORE_SKILLS.txt +18 -18
  4. package/bundled-skills/backend-expert/SKILL.md +97 -97
  5. package/bundled-skills/code-review/SKILL.md +280 -280
  6. package/bundled-skills/code-review-expert/SKILL.md +85 -85
  7. package/bundled-skills/context-budget-analyzer/SKILL.md +76 -76
  8. package/bundled-skills/context-compressor/SKILL.md +75 -75
  9. package/bundled-skills/context-optimization-suite/SKILL.md +162 -162
  10. package/bundled-skills/frontend-expert/SKILL.md +93 -93
  11. package/bundled-skills/github/SKILL.md +12 -12
  12. package/bundled-skills/high-agency/SKILL.md +473 -473
  13. package/bundled-skills/high-agency/references/builder-patterns.md +126 -126
  14. package/bundled-skills/high-agency/references/recovery-playbook.md +298 -298
  15. package/bundled-skills/memory-manager/SKILL.md +214 -214
  16. package/bundled-skills/memory-manager/references/advanced-config.md +65 -65
  17. package/bundled-skills/orchestrator/SKILL.md +681 -681
  18. package/bundled-skills/planning-with-files/SKILL.md +193 -193
  19. package/bundled-skills/skill-creator/SKILL.md +220 -220
  20. package/bundled-skills/testing-expert/SKILL.md +99 -99
  21. package/bundled-skills/verify/SKILL.md +15 -15
  22. package/dist/agent.d.ts +5 -0
  23. package/dist/agent.js +11 -1
  24. package/dist/agent.js.map +1 -1
  25. package/dist/agents/catalog.d.ts +47 -0
  26. package/dist/agents/catalog.js +63 -5
  27. package/dist/agents/catalog.js.map +1 -1
  28. package/dist/agents/router.d.ts +12 -1
  29. package/dist/agents/router.js +43 -3
  30. package/dist/agents/router.js.map +1 -1
  31. package/dist/agents/spawn.js +36 -18
  32. package/dist/agents/spawn.js.map +1 -1
  33. package/dist/autonomous.js +5 -5
  34. package/dist/cli.js +23 -21
  35. package/dist/cli.js.map +1 -1
  36. package/dist/compactor.js +39 -39
  37. package/dist/dream.js +29 -29
  38. package/dist/image-input.d.ts +44 -0
  39. package/dist/image-input.js +161 -0
  40. package/dist/image-input.js.map +1 -0
  41. package/dist/memory.js +13 -13
  42. package/dist/project.js +15 -15
  43. package/dist/repl.js +88 -0
  44. package/dist/repl.js.map +1 -1
  45. package/dist/skills.js +54 -54
  46. package/dist/sub-agents.js +65 -65
  47. package/dist/tools/browser.js +21 -21
  48. package/dist/tools/claude-code.js +10 -10
  49. package/dist/web.js +7 -7
  50. package/dist/wiki-commands.d.ts +2 -0
  51. package/dist/wiki-commands.js +249 -0
  52. package/dist/wiki-commands.js.map +1 -0
  53. package/dist/wiki.d.ts +90 -0
  54. package/dist/wiki.js +614 -0
  55. package/dist/wiki.js.map +1 -0
  56. package/knowledge/advanced-patterns.md +70 -70
  57. package/knowledge/agent-directives.md +74 -74
  58. package/knowledge/api-integration-patterns.md +102 -0
  59. package/knowledge/code-review-protocol.md +69 -0
  60. package/knowledge/dream.md +36 -36
  61. package/knowledge/engineering.md +52 -46
  62. package/knowledge/error-catalog.md +38 -33
  63. package/knowledge/event-driven-architecture.md +43 -0
  64. package/knowledge/external-alignment.md +47 -0
  65. package/knowledge/high-agency.md +73 -0
  66. package/knowledge/image-generation.md +48 -0
  67. package/knowledge/index.json +194 -169
  68. package/knowledge/llm-wiki-pattern.md +71 -0
  69. package/knowledge/long-task-management.md +79 -0
  70. package/knowledge/memory/cache-optimization-and-skill-integration.md +102 -102
  71. package/knowledge/memory/engineering-patterns.md +134 -134
  72. package/knowledge/memory/feedback_root_structure.md +15 -15
  73. package/knowledge/memory/project-contexts.md +69 -69
  74. package/knowledge/memory/tools-and-services.md +85 -85
  75. package/knowledge/memory-management.md +72 -0
  76. package/knowledge/rules/advisor-strategy.md +204 -0
  77. package/knowledge/rules/agents.md +62 -62
  78. package/knowledge/rules/blocking-rules.md +323 -323
  79. package/knowledge/rules/cache-management.md +379 -379
  80. package/knowledge/rules/capability-evolution.md +132 -132
  81. package/knowledge/rules/coding.md +126 -126
  82. package/knowledge/rules/engineering-workflows.md +225 -225
  83. package/knowledge/rules/evomap-content-guidelines.md +354 -354
  84. package/knowledge/rules/evomap-guide.md +224 -224
  85. package/knowledge/rules/external-alignment.md +22 -0
  86. package/knowledge/rules/git.md +31 -31
  87. package/knowledge/rules/hooks.md +106 -106
  88. package/knowledge/rules/performance.md +101 -101
  89. package/knowledge/rules/remotion-auto-production.md +1120 -1120
  90. package/knowledge/rules/security.md +46 -46
  91. package/knowledge/rules/testing.md +32 -32
  92. package/knowledge/rules/work-mode.md +208 -208
  93. package/knowledge/rules.md +62 -62
  94. package/knowledge/self-evolution.md +78 -0
  95. package/knowledge/self-rationalization-guard.md +52 -0
  96. package/knowledge/skills/Skill_Seekers.md +1722 -1722
  97. package/knowledge/skills/ab-test-setup.md +557 -557
  98. package/knowledge/skills/agent-sdk-dev.md +238 -238
  99. package/knowledge/skills/agent-tools.md +136 -136
  100. package/knowledge/skills/analytics-tracking.md +597 -597
  101. package/knowledge/skills/artifacts-builder.md +89 -89
  102. package/knowledge/skills/asana.md +12 -12
  103. package/knowledge/skills/backend-expert.md +97 -97
  104. package/knowledge/skills/brand-voice.md +481 -481
  105. package/knowledge/skills/browser-use.md +419 -419
  106. package/knowledge/skills/cache-optimization-skill.md +179 -179
  107. package/knowledge/skills/canvas-design.md +147 -147
  108. package/knowledge/skills/citation-validator.md +203 -203
  109. package/knowledge/skills/clangd-lsp.md +52 -52
  110. package/knowledge/skills/code-review-expert.md +85 -85
  111. package/knowledge/skills/code-review.md +280 -280
  112. package/knowledge/skills/code-simplifier.md +12 -12
  113. package/knowledge/skills/commit-commands.md +258 -258
  114. package/knowledge/skills/competitor-alternatives.md +795 -795
  115. package/knowledge/skills/content-atomizer.md +910 -910
  116. package/knowledge/skills/content-research-writer.md +605 -605
  117. package/knowledge/skills/context-optimization-suite.md +162 -162
  118. package/knowledge/skills/context7.md +12 -12
  119. package/knowledge/skills/copy-editing.md +494 -494
  120. package/knowledge/skills/copywriting.md +510 -510
  121. package/knowledge/skills/csharp-lsp.md +40 -40
  122. package/knowledge/skills/decision-making-framework.md +154 -154
  123. package/knowledge/skills/developer-growth-analysis.md +335 -335
  124. package/knowledge/skills/direct-response-copy.md +2336 -2336
  125. package/knowledge/skills/docker-expert.md +229 -229
  126. package/knowledge/skills/document-skills.md +12 -12
  127. package/knowledge/skills/documentation-expert.md +126 -126
  128. package/knowledge/skills/email-sequence.md +1061 -1061
  129. package/knowledge/skills/email-sequences.md +910 -910
  130. package/knowledge/skills/example-plugin.md +72 -72
  131. package/knowledge/skills/explanatory-output-style.md +82 -82
  132. package/knowledge/skills/feature-dev.md +458 -458
  133. package/knowledge/skills/file-organizer.md +466 -466
  134. package/knowledge/skills/firebase.disabled.md +12 -12
  135. package/knowledge/skills/form-cro.md +488 -488
  136. package/knowledge/skills/free-tool-strategy.md +636 -636
  137. package/knowledge/skills/frontend-design-offical.md +55 -55
  138. package/knowledge/skills/frontend-design.md +41 -41
  139. package/knowledge/skills/frontend-expert.md +93 -93
  140. package/knowledge/skills/github.md +12 -12
  141. package/knowledge/skills/gitlab.md +12 -12
  142. package/knowledge/skills/gopls-lsp.md +32 -32
  143. package/knowledge/skills/got-controller.md +218 -218
  144. package/knowledge/skills/greptile.md +72 -72
  145. package/knowledge/skills/hookify.md +376 -376
  146. package/knowledge/skills/image-editor.md +189 -189
  147. package/knowledge/skills/image-enhancer.md +109 -109
  148. package/knowledge/skills/jdtls-lsp.md +49 -49
  149. package/knowledge/skills/json-canvas.md +654 -654
  150. package/knowledge/skills/keyword-research.md +559 -559
  151. package/knowledge/skills/kotlin-lsp.md +28 -28
  152. package/knowledge/skills/laravel-boost.md +12 -12
  153. package/knowledge/skills/launch-strategy.md +394 -394
  154. package/knowledge/skills/lead-magnet.md +393 -393
  155. package/knowledge/skills/learning-output-style.md +106 -106
  156. package/knowledge/skills/linear.md +12 -12
  157. package/knowledge/skills/lua-lsp.md +47 -47
  158. package/knowledge/skills/marketing-ideas.md +720 -720
  159. package/knowledge/skills/marketing-psychology.md +534 -534
  160. package/knowledge/skills/mcp-builder.md +369 -369
  161. package/knowledge/skills/meeting-insights-analyzer.md +347 -347
  162. package/knowledge/skills/memory-evolution-system.md +172 -172
  163. package/knowledge/skills/multi-lens-thinking.md +407 -407
  164. package/knowledge/skills/nano-banana-pro.md +116 -116
  165. package/knowledge/skills/newsletter.md +736 -736
  166. package/knowledge/skills/notebooklm.md +296 -296
  167. package/knowledge/skills/obsidian-bases.md +634 -634
  168. package/knowledge/skills/obsidian-markdown.md +651 -651
  169. package/knowledge/skills/onboarding-cro.md +494 -494
  170. package/knowledge/skills/orchestrator.md +681 -681
  171. package/knowledge/skills/page-cro.md +379 -379
  172. package/knowledge/skills/paid-ads.md +624 -624
  173. package/knowledge/skills/paywall-upgrade-cro.md +651 -651
  174. package/knowledge/skills/php-lsp.md +36 -36
  175. package/knowledge/skills/planning-with-files.md +193 -193
  176. package/knowledge/skills/playwright.md +12 -12
  177. package/knowledge/skills/plugin-dev.md +434 -434
  178. package/knowledge/skills/popup-cro.md +520 -520
  179. package/knowledge/skills/positioning-angles.md +330 -330
  180. package/knowledge/skills/pr-review-toolkit.md +359 -359
  181. package/knowledge/skills/pricing-strategy.md +777 -777
  182. package/knowledge/skills/programmatic-seo.md +714 -714
  183. package/knowledge/skills/pyright-lsp.md +43 -43
  184. package/knowledge/skills/quality-assurance-framework.md +168 -168
  185. package/knowledge/skills/question-refiner.md +160 -160
  186. package/knowledge/skills/ralph-loop.md +205 -205
  187. package/knowledge/skills/refactoring-expert.md +103 -103
  188. package/knowledge/skills/referral-program.md +668 -668
  189. package/knowledge/skills/research-executor.md +164 -164
  190. package/knowledge/skills/review-with-security.md +12 -12
  191. package/knowledge/skills/rust-analyzer-lsp.md +50 -50
  192. package/knowledge/skills/schema-markup.md +647 -647
  193. package/knowledge/skills/security-audit-expert.md +124 -124
  194. package/knowledge/skills/security-expert.md +140 -140
  195. package/knowledge/skills/security-guidance.md +12 -12
  196. package/knowledge/skills/seedance-prompt.md +139 -139
  197. package/knowledge/skills/self-evolution.md +1160 -1160
  198. package/knowledge/skills/seo-audit.md +432 -432
  199. package/knowledge/skills/seo-content.md +787 -787
  200. package/knowledge/skills/serena.md +12 -12
  201. package/knowledge/skills/signup-flow-cro.md +409 -409
  202. package/knowledge/skills/skill-creator.md +220 -220
  203. package/knowledge/skills/skill-manager.md +226 -226
  204. package/knowledge/skills/skill-share.md +98 -98
  205. package/knowledge/skills/slack.md +12 -12
  206. package/knowledge/skills/social-content.md +878 -878
  207. package/knowledge/skills/spec-flow-skill.md +124 -124
  208. package/knowledge/skills/stripe.md +12 -12
  209. package/knowledge/skills/supabase.md +12 -12
  210. package/knowledge/skills/swift-lsp.md +40 -40
  211. package/knowledge/skills/synthesizer.md +236 -236
  212. package/knowledge/skills/template-skill.md +16 -16
  213. package/knowledge/skills/testing-expert.md +99 -99
  214. package/knowledge/skills/theme-factory.md +72 -72
  215. package/knowledge/skills/tiktok-research.md +208 -208
  216. package/knowledge/skills/typescript-lsp.md +36 -36
  217. package/knowledge/skills/ui-ux-pro-max.md +247 -247
  218. package/knowledge/skills/verify.md +15 -15
  219. package/knowledge/skills/visual-prompt-engineer.md +102 -102
  220. package/knowledge/skills/webapp-testing.md +111 -111
  221. package/knowledge/skills/wide-research.md +191 -191
  222. package/knowledge/system.md +93 -93
  223. package/knowledge/task-router.md +46 -37
  224. package/knowledge/verification.md +38 -38
  225. package/knowledge/worker-prompt-craft.md +66 -0
  226. package/knowledge/workflows/3d-viz.md +47 -47
  227. package/knowledge/workflows/data-pipeline.md +47 -47
  228. package/knowledge/workflows/db-migration.md +51 -51
  229. package/knowledge/workflows/feature-dev.md +41 -41
  230. package/knowledge/workflows/tdd-flow.md +52 -52
  231. package/knowledge/workflows/ui-verify.md +51 -51
  232. package/package.json +74 -74
  233. package/dist/claude-bridge.d.ts +0 -18
  234. package/dist/claude-bridge.js +0 -91
  235. package/dist/claude-bridge.js.map +0 -1
  236. package/dist/tools/claude-bridge-tool.d.ts +0 -4
  237. package/dist/tools/claude-bridge-tool.js +0 -44
  238. package/dist/tools/claude-bridge-tool.js.map +0 -1
@@ -1,102 +1,102 @@
1
- ---
2
- id: "visual-prompt-engineer"
3
- title: "Role"
4
- category: "media"
5
- tags: ["role", "workflow", "1. analyze intent (分析意图)", "2. execute strategy (执行策略)", "3. output format (输出格式)", "examples", "user input", "ai response"]
6
- triggers: []
7
- dependencies: []
8
- source: "E:/Bobo's Coding cache/.claude/skills/visual-prompt-engineer"
9
- ---
10
-
11
- ---
12
- name: visual-prompt-engineer
13
- description: 全能视觉提示词专家。支持 Midjourney/Gemini(Nano Banana) 生图,以及 Sora/Vidu/Veo 视频生成。
14
- ---
15
-
16
- # Role
17
-
18
- 你是一位精通多模态 AI 的提示词工程师。你深谙各类视觉模型的底层逻辑和最佳实践。
19
-
20
- # Workflow
21
-
22
- ## 1. Analyze Intent (分析意图)
23
-
24
- - **Task Type:** Is the user asking for an **[IMAGE]** or a **[VIDEO]**?
25
- - **Target Model:** Did the user specify a model? (e.g., "Veo", "Sora", "Gemini", "Nano Banana"). If not, use the **Default** strategy for that type.
26
-
27
- ## 2. Execute Strategy (执行策略)
28
-
29
- ### branch: IF [IMAGE]
30
-
31
- - **Strategy A: Midjourney / Flux (Default)**
32
- - _Focus:_ Artistic style, lighting, composition, parameters.
33
- - _Syntax:_ Tag-heavy or descriptive.
34
- - _Mandatory:_ Always include aspect ratio (e.g., `--ar 16:9`).
35
- - _Reference:_ `templates/midjourney.md`
36
-
37
- - **Strategy B: Nano Banana (Google Gemini/Imagen)**
38
- - _Focus:_ Natural language understanding, **Text Rendering**, complex spatial logic.
39
- - _Syntax:_ Long, fluent English sentences. NO tag soup.
40
- - _Text:_ If user implies text, specify: "with the text '...' written on it".
41
- - _Reference:_ `templates/nano_banana2.md`
42
-
43
- ### branch: IF [VIDEO]
44
-
45
- - **Strategy A: Sora (Default)**
46
- - _Focus:_ World simulation, physics interactions, fluid dynamics.
47
- - _Syntax:_ Highly descriptive narrative.
48
- - _Reference:_ `templates/sora.md`
49
-
50
- - **Strategy B: Veo (Google Veo)**
51
- - _Focus:_ **Cinematic Camera Control**. Use professional terms: "Pan", "Tilt", "Truck", "Dolly", "Aerial".
52
- - _Style:_ Screenplay direction style.
53
- - _Reference:_ `templates/veo3.1.md`
54
-
55
- - **Strategy C: Vidu**
56
- - _Focus:_ Character consistency, anime/stylized motion, high responsiveness.
57
- - _Reference:_ `templates/vidu.md`
58
-
59
- ## 3. Output Format (输出格式)
60
-
61
- **Target Model:** [Model Name]
62
- **Type:** [IMAGE] / [VIDEO]
63
-
64
- **Optimized Prompt:**
65
- (The English prompt tailored to the specific model's syntax)
66
-
67
- **Design Rationale:**
68
- (简短中文解释:为什么针对该模型使用了这些特定的词汇或参数?例如:"使用了 Truck Left 运镜指令以适配 Veo 的电影感特性"。)
69
-
70
- # Examples
71
-
72
- ## User Input
73
-
74
- "Veo, 拍摄一段赛博朋克城市的空镜头"
75
-
76
- ## AI Response
77
-
78
- **Target Model:** Veo
79
- **Type:** [VIDEO]
80
-
81
- **Optimized Prompt:**
82
- Aerial drone shot establishing a futuristic cyberpunk city at night. The camera flies forward and slowly tilts down (Tilt Down) to reveal neon-lit skyscrapers and flying vehicles weaving through the fog. Cinematic lighting, HDR, 4k resolution, smooth motion.
83
-
84
- **Design Rationale:**
85
- 识别为 Veo 模型,因此使用了 "Aerial drone shot" 和明确的运镜指令 "Tilt Down" 来发挥其镜头控制优势。
86
-
87
- ---
88
-
89
- ## User Input
90
-
91
- "Nano Banana, 一个写着'OpenAI'的霓虹灯牌子"
92
-
93
- ## AI Response
94
-
95
- **Target Model:** Nano Banana (Gemini)
96
- **Type:** [IMAGE]
97
-
98
- **Optimized Prompt:**
99
- A cinematic photo of a glowing neon sign mounted on a brick wall in a dim alleyway. The sign clearly spells out the word "OpenAI" in bright blue cursive letters. Rain puddles on the ground reflect the light. Photorealistic, 8k.
100
-
101
- **Design Rationale:**
102
- 识别为 Nano Banana (Gemini),因此使用了自然语言全句描述,并特别强调了文字渲染指令 "clearly spells out..."。
1
+ ---
2
+ id: "visual-prompt-engineer"
3
+ title: "Role"
4
+ category: "media"
5
+ tags: ["role", "workflow", "1. analyze intent (分析意图)", "2. execute strategy (执行策略)", "3. output format (输出格式)", "examples", "user input", "ai response"]
6
+ triggers: []
7
+ dependencies: []
8
+ source: "E:/Bobo's Coding cache/.claude/skills/visual-prompt-engineer"
9
+ ---
10
+
11
+ ---
12
+ name: visual-prompt-engineer
13
+ description: 全能视觉提示词专家。支持 Midjourney/Gemini(Nano Banana) 生图,以及 Sora/Vidu/Veo 视频生成。
14
+ ---
15
+
16
+ # Role
17
+
18
+ 你是一位精通多模态 AI 的提示词工程师。你深谙各类视觉模型的底层逻辑和最佳实践。
19
+
20
+ # Workflow
21
+
22
+ ## 1. Analyze Intent (分析意图)
23
+
24
+ - **Task Type:** Is the user asking for an **[IMAGE]** or a **[VIDEO]**?
25
+ - **Target Model:** Did the user specify a model? (e.g., "Veo", "Sora", "Gemini", "Nano Banana"). If not, use the **Default** strategy for that type.
26
+
27
+ ## 2. Execute Strategy (执行策略)
28
+
29
+ ### branch: IF [IMAGE]
30
+
31
+ - **Strategy A: Midjourney / Flux (Default)**
32
+ - _Focus:_ Artistic style, lighting, composition, parameters.
33
+ - _Syntax:_ Tag-heavy or descriptive.
34
+ - _Mandatory:_ Always include aspect ratio (e.g., `--ar 16:9`).
35
+ - _Reference:_ `templates/midjourney.md`
36
+
37
+ - **Strategy B: Nano Banana (Google Gemini/Imagen)**
38
+ - _Focus:_ Natural language understanding, **Text Rendering**, complex spatial logic.
39
+ - _Syntax:_ Long, fluent English sentences. NO tag soup.
40
+ - _Text:_ If user implies text, specify: "with the text '...' written on it".
41
+ - _Reference:_ `templates/nano_banana2.md`
42
+
43
+ ### branch: IF [VIDEO]
44
+
45
+ - **Strategy A: Sora (Default)**
46
+ - _Focus:_ World simulation, physics interactions, fluid dynamics.
47
+ - _Syntax:_ Highly descriptive narrative.
48
+ - _Reference:_ `templates/sora.md`
49
+
50
+ - **Strategy B: Veo (Google Veo)**
51
+ - _Focus:_ **Cinematic Camera Control**. Use professional terms: "Pan", "Tilt", "Truck", "Dolly", "Aerial".
52
+ - _Style:_ Screenplay direction style.
53
+ - _Reference:_ `templates/veo3.1.md`
54
+
55
+ - **Strategy C: Vidu**
56
+ - _Focus:_ Character consistency, anime/stylized motion, high responsiveness.
57
+ - _Reference:_ `templates/vidu.md`
58
+
59
+ ## 3. Output Format (输出格式)
60
+
61
+ **Target Model:** [Model Name]
62
+ **Type:** [IMAGE] / [VIDEO]
63
+
64
+ **Optimized Prompt:**
65
+ (The English prompt tailored to the specific model's syntax)
66
+
67
+ **Design Rationale:**
68
+ (简短中文解释:为什么针对该模型使用了这些特定的词汇或参数?例如:"使用了 Truck Left 运镜指令以适配 Veo 的电影感特性"。)
69
+
70
+ # Examples
71
+
72
+ ## User Input
73
+
74
+ "Veo, 拍摄一段赛博朋克城市的空镜头"
75
+
76
+ ## AI Response
77
+
78
+ **Target Model:** Veo
79
+ **Type:** [VIDEO]
80
+
81
+ **Optimized Prompt:**
82
+ Aerial drone shot establishing a futuristic cyberpunk city at night. The camera flies forward and slowly tilts down (Tilt Down) to reveal neon-lit skyscrapers and flying vehicles weaving through the fog. Cinematic lighting, HDR, 4k resolution, smooth motion.
83
+
84
+ **Design Rationale:**
85
+ 识别为 Veo 模型,因此使用了 "Aerial drone shot" 和明确的运镜指令 "Tilt Down" 来发挥其镜头控制优势。
86
+
87
+ ---
88
+
89
+ ## User Input
90
+
91
+ "Nano Banana, 一个写着'OpenAI'的霓虹灯牌子"
92
+
93
+ ## AI Response
94
+
95
+ **Target Model:** Nano Banana (Gemini)
96
+ **Type:** [IMAGE]
97
+
98
+ **Optimized Prompt:**
99
+ A cinematic photo of a glowing neon sign mounted on a brick wall in a dim alleyway. The sign clearly spells out the word "OpenAI" in bright blue cursive letters. Rain puddles on the ground reflect the light. Photorealistic, 8k.
100
+
101
+ **Design Rationale:**
102
+ 识别为 Nano Banana (Gemini),因此使用了自然语言全句描述,并特别强调了文字渲染指令 "clearly spells out..."。
@@ -1,111 +1,111 @@
1
- ---
2
- id: "webapp-testing"
3
- title: "Web Application Testing"
4
- category: "dev-tools"
5
- tags: ["web application testing", "common pitfall", "best practices", "reference files"]
6
- triggers: []
7
- dependencies: []
8
- source: "E:/Bobo's Coding cache/.claude/skills/webapp-testing"
9
- ---
10
-
11
- ---
12
- name: webapp-testing
13
- description: Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
14
- license: Complete terms in LICENSE.txt
15
- ---
16
-
17
- # Web Application Testing
18
-
19
- To test local web applications, write native Python Playwright scripts.
20
-
21
- **Helper Scripts Available**:
22
-
23
- - `scripts/with_server.py` - Manages server lifecycle (supports multiple servers)
24
-
25
- **Always run scripts with `--help` first** to see usage. DO NOT read the source until you try running the script first and find that a customized solution is abslutely necessary. These scripts can be very large and thus pollute your context window. They exist to be called directly as black-box scripts rather than ingested into your context window.
26
-
27
- ## Decision Tree: Choosing Your Approach
28
-
29
- ```
30
- User task → Is it static HTML?
31
- ├─ Yes → Read HTML file directly to identify selectors
32
- │ ├─ Success → Write Playwright script using selectors
33
- │ └─ Fails/Incomplete → Treat as dynamic (below)
34
-
35
- └─ No (dynamic webapp) → Is the server already running?
36
- ├─ No → Run: python scripts/with_server.py --help
37
- │ Then use the helper + write simplified Playwright script
38
-
39
- └─ Yes → Reconnaissance-then-action:
40
- 1. Navigate and wait for networkidle
41
- 2. Take screenshot or inspect DOM
42
- 3. Identify selectors from rendered state
43
- 4. Execute actions with discovered selectors
44
- ```
45
-
46
- ## Example: Using with_server.py
47
-
48
- To start a server, run `--help` first, then use the helper:
49
-
50
- **Single server:**
51
-
52
- ```bash
53
- python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.py
54
- ```
55
-
56
- **Multiple servers (e.g., backend + frontend):**
57
-
58
- ```bash
59
- python scripts/with_server.py \
60
- --server "cd backend && python server.py" --port 3000 \
61
- --server "cd frontend && npm run dev" --port 5173 \
62
- -- python your_automation.py
63
- ```
64
-
65
- To create an automation script, include only Playwright logic (servers are managed automatically):
66
-
67
- ```python
68
- from playwright.sync_api import sync_playwright
69
-
70
- with sync_playwright() as p:
71
- browser = p.chromium.launch(headless=True) # Always launch chromium in headless mode
72
- page = browser.new_page()
73
- page.goto('http://localhost:5173') # Server already running and ready
74
- page.wait_for_load_state('networkidle') # CRITICAL: Wait for JS to execute
75
- # ... your automation logic
76
- browser.close()
77
- ```
78
-
79
- ## Reconnaissance-Then-Action Pattern
80
-
81
- 1. **Inspect rendered DOM**:
82
-
83
- ```python
84
- page.screenshot(path='/tmp/inspect.png', full_page=True)
85
- content = page.content()
86
- page.locator('button').all()
87
- ```
88
-
89
- 2. **Identify selectors** from inspection results
90
-
91
- 3. **Execute actions** using discovered selectors
92
-
93
- ## Common Pitfall
94
-
95
- ❌ **Don't** inspect the DOM before waiting for `networkidle` on dynamic apps
96
- ✅ **Do** wait for `page.wait_for_load_state('networkidle')` before inspection
97
-
98
- ## Best Practices
99
-
100
- - **Use bundled scripts as black boxes** - To accomplish a task, consider whether one of the scripts available in `scripts/` can help. These scripts handle common, complex workflows reliably without cluttering the context window. Use `--help` to see usage, then invoke directly.
101
- - Use `sync_playwright()` for synchronous scripts
102
- - Always close the browser when done
103
- - Use descriptive selectors: `text=`, `role=`, CSS selectors, or IDs
104
- - Add appropriate waits: `page.wait_for_selector()` or `page.wait_for_timeout()`
105
-
106
- ## Reference Files
107
-
108
- - **examples/** - Examples showing common patterns:
109
- - `element_discovery.py` - Discovering buttons, links, and inputs on a page
110
- - `static_html_automation.py` - Using file:// URLs for local HTML
111
- - `console_logging.py` - Capturing console logs during automation
1
+ ---
2
+ id: "webapp-testing"
3
+ title: "Web Application Testing"
4
+ category: "dev-tools"
5
+ tags: ["web application testing", "common pitfall", "best practices", "reference files"]
6
+ triggers: []
7
+ dependencies: []
8
+ source: "E:/Bobo's Coding cache/.claude/skills/webapp-testing"
9
+ ---
10
+
11
+ ---
12
+ name: webapp-testing
13
+ description: Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
14
+ license: Complete terms in LICENSE.txt
15
+ ---
16
+
17
+ # Web Application Testing
18
+
19
+ To test local web applications, write native Python Playwright scripts.
20
+
21
+ **Helper Scripts Available**:
22
+
23
+ - `scripts/with_server.py` - Manages server lifecycle (supports multiple servers)
24
+
25
+ **Always run scripts with `--help` first** to see usage. DO NOT read the source until you try running the script first and find that a customized solution is abslutely necessary. These scripts can be very large and thus pollute your context window. They exist to be called directly as black-box scripts rather than ingested into your context window.
26
+
27
+ ## Decision Tree: Choosing Your Approach
28
+
29
+ ```
30
+ User task → Is it static HTML?
31
+ ├─ Yes → Read HTML file directly to identify selectors
32
+ │ ├─ Success → Write Playwright script using selectors
33
+ │ └─ Fails/Incomplete → Treat as dynamic (below)
34
+
35
+ └─ No (dynamic webapp) → Is the server already running?
36
+ ├─ No → Run: python scripts/with_server.py --help
37
+ │ Then use the helper + write simplified Playwright script
38
+
39
+ └─ Yes → Reconnaissance-then-action:
40
+ 1. Navigate and wait for networkidle
41
+ 2. Take screenshot or inspect DOM
42
+ 3. Identify selectors from rendered state
43
+ 4. Execute actions with discovered selectors
44
+ ```
45
+
46
+ ## Example: Using with_server.py
47
+
48
+ To start a server, run `--help` first, then use the helper:
49
+
50
+ **Single server:**
51
+
52
+ ```bash
53
+ python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.py
54
+ ```
55
+
56
+ **Multiple servers (e.g., backend + frontend):**
57
+
58
+ ```bash
59
+ python scripts/with_server.py \
60
+ --server "cd backend && python server.py" --port 3000 \
61
+ --server "cd frontend && npm run dev" --port 5173 \
62
+ -- python your_automation.py
63
+ ```
64
+
65
+ To create an automation script, include only Playwright logic (servers are managed automatically):
66
+
67
+ ```python
68
+ from playwright.sync_api import sync_playwright
69
+
70
+ with sync_playwright() as p:
71
+ browser = p.chromium.launch(headless=True) # Always launch chromium in headless mode
72
+ page = browser.new_page()
73
+ page.goto('http://localhost:5173') # Server already running and ready
74
+ page.wait_for_load_state('networkidle') # CRITICAL: Wait for JS to execute
75
+ # ... your automation logic
76
+ browser.close()
77
+ ```
78
+
79
+ ## Reconnaissance-Then-Action Pattern
80
+
81
+ 1. **Inspect rendered DOM**:
82
+
83
+ ```python
84
+ page.screenshot(path='/tmp/inspect.png', full_page=True)
85
+ content = page.content()
86
+ page.locator('button').all()
87
+ ```
88
+
89
+ 2. **Identify selectors** from inspection results
90
+
91
+ 3. **Execute actions** using discovered selectors
92
+
93
+ ## Common Pitfall
94
+
95
+ ❌ **Don't** inspect the DOM before waiting for `networkidle` on dynamic apps
96
+ ✅ **Do** wait for `page.wait_for_load_state('networkidle')` before inspection
97
+
98
+ ## Best Practices
99
+
100
+ - **Use bundled scripts as black boxes** - To accomplish a task, consider whether one of the scripts available in `scripts/` can help. These scripts handle common, complex workflows reliably without cluttering the context window. Use `--help` to see usage, then invoke directly.
101
+ - Use `sync_playwright()` for synchronous scripts
102
+ - Always close the browser when done
103
+ - Use descriptive selectors: `text=`, `role=`, CSS selectors, or IDs
104
+ - Add appropriate waits: `page.wait_for_selector()` or `page.wait_for_timeout()`
105
+
106
+ ## Reference Files
107
+
108
+ - **examples/** - Examples showing common patterns:
109
+ - `element_discovery.py` - Discovering buttons, links, and inputs on a page
110
+ - `static_html_automation.py` - Using file:// URLs for local HTML
111
+ - `console_logging.py` - Capturing console logs during automation