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.
- package/LICENSE +21 -21
- package/README.md +259 -259
- package/bundled-skills/CORE_SKILLS.txt +18 -18
- package/bundled-skills/backend-expert/SKILL.md +97 -97
- package/bundled-skills/code-review/SKILL.md +280 -280
- package/bundled-skills/code-review-expert/SKILL.md +85 -85
- package/bundled-skills/context-budget-analyzer/SKILL.md +76 -76
- package/bundled-skills/context-compressor/SKILL.md +75 -75
- package/bundled-skills/context-optimization-suite/SKILL.md +162 -162
- package/bundled-skills/frontend-expert/SKILL.md +93 -93
- package/bundled-skills/github/SKILL.md +12 -12
- package/bundled-skills/high-agency/SKILL.md +473 -473
- package/bundled-skills/high-agency/references/builder-patterns.md +126 -126
- package/bundled-skills/high-agency/references/recovery-playbook.md +298 -298
- package/bundled-skills/memory-manager/SKILL.md +214 -214
- package/bundled-skills/memory-manager/references/advanced-config.md +65 -65
- package/bundled-skills/orchestrator/SKILL.md +681 -681
- package/bundled-skills/planning-with-files/SKILL.md +193 -193
- package/bundled-skills/skill-creator/SKILL.md +220 -220
- package/bundled-skills/testing-expert/SKILL.md +99 -99
- package/bundled-skills/verify/SKILL.md +15 -15
- package/dist/agent.d.ts +5 -0
- package/dist/agent.js +11 -1
- package/dist/agent.js.map +1 -1
- package/dist/agents/catalog.d.ts +47 -0
- package/dist/agents/catalog.js +63 -5
- package/dist/agents/catalog.js.map +1 -1
- package/dist/agents/router.d.ts +12 -1
- package/dist/agents/router.js +43 -3
- package/dist/agents/router.js.map +1 -1
- package/dist/agents/spawn.js +36 -18
- package/dist/agents/spawn.js.map +1 -1
- package/dist/autonomous.js +5 -5
- package/dist/cli.js +23 -21
- package/dist/cli.js.map +1 -1
- package/dist/compactor.js +39 -39
- package/dist/dream.js +29 -29
- package/dist/image-input.d.ts +44 -0
- package/dist/image-input.js +161 -0
- package/dist/image-input.js.map +1 -0
- package/dist/memory.js +13 -13
- package/dist/project.js +15 -15
- package/dist/repl.js +88 -0
- package/dist/repl.js.map +1 -1
- package/dist/skills.js +54 -54
- package/dist/sub-agents.js +65 -65
- package/dist/tools/browser.js +21 -21
- package/dist/tools/claude-code.js +10 -10
- package/dist/web.js +7 -7
- package/dist/wiki-commands.d.ts +2 -0
- package/dist/wiki-commands.js +249 -0
- package/dist/wiki-commands.js.map +1 -0
- package/dist/wiki.d.ts +90 -0
- package/dist/wiki.js +614 -0
- package/dist/wiki.js.map +1 -0
- package/knowledge/advanced-patterns.md +70 -70
- package/knowledge/agent-directives.md +74 -74
- package/knowledge/api-integration-patterns.md +102 -0
- package/knowledge/code-review-protocol.md +69 -0
- package/knowledge/dream.md +36 -36
- package/knowledge/engineering.md +52 -46
- package/knowledge/error-catalog.md +38 -33
- package/knowledge/event-driven-architecture.md +43 -0
- package/knowledge/external-alignment.md +47 -0
- package/knowledge/high-agency.md +73 -0
- package/knowledge/image-generation.md +48 -0
- package/knowledge/index.json +194 -169
- package/knowledge/llm-wiki-pattern.md +71 -0
- package/knowledge/long-task-management.md +79 -0
- package/knowledge/memory/cache-optimization-and-skill-integration.md +102 -102
- package/knowledge/memory/engineering-patterns.md +134 -134
- package/knowledge/memory/feedback_root_structure.md +15 -15
- package/knowledge/memory/project-contexts.md +69 -69
- package/knowledge/memory/tools-and-services.md +85 -85
- package/knowledge/memory-management.md +72 -0
- package/knowledge/rules/advisor-strategy.md +204 -0
- package/knowledge/rules/agents.md +62 -62
- package/knowledge/rules/blocking-rules.md +323 -323
- package/knowledge/rules/cache-management.md +379 -379
- package/knowledge/rules/capability-evolution.md +132 -132
- package/knowledge/rules/coding.md +126 -126
- package/knowledge/rules/engineering-workflows.md +225 -225
- package/knowledge/rules/evomap-content-guidelines.md +354 -354
- package/knowledge/rules/evomap-guide.md +224 -224
- package/knowledge/rules/external-alignment.md +22 -0
- package/knowledge/rules/git.md +31 -31
- package/knowledge/rules/hooks.md +106 -106
- package/knowledge/rules/performance.md +101 -101
- package/knowledge/rules/remotion-auto-production.md +1120 -1120
- package/knowledge/rules/security.md +46 -46
- package/knowledge/rules/testing.md +32 -32
- package/knowledge/rules/work-mode.md +208 -208
- package/knowledge/rules.md +62 -62
- package/knowledge/self-evolution.md +78 -0
- package/knowledge/self-rationalization-guard.md +52 -0
- package/knowledge/skills/Skill_Seekers.md +1722 -1722
- package/knowledge/skills/ab-test-setup.md +557 -557
- package/knowledge/skills/agent-sdk-dev.md +238 -238
- package/knowledge/skills/agent-tools.md +136 -136
- package/knowledge/skills/analytics-tracking.md +597 -597
- package/knowledge/skills/artifacts-builder.md +89 -89
- package/knowledge/skills/asana.md +12 -12
- package/knowledge/skills/backend-expert.md +97 -97
- package/knowledge/skills/brand-voice.md +481 -481
- package/knowledge/skills/browser-use.md +419 -419
- package/knowledge/skills/cache-optimization-skill.md +179 -179
- package/knowledge/skills/canvas-design.md +147 -147
- package/knowledge/skills/citation-validator.md +203 -203
- package/knowledge/skills/clangd-lsp.md +52 -52
- package/knowledge/skills/code-review-expert.md +85 -85
- package/knowledge/skills/code-review.md +280 -280
- package/knowledge/skills/code-simplifier.md +12 -12
- package/knowledge/skills/commit-commands.md +258 -258
- package/knowledge/skills/competitor-alternatives.md +795 -795
- package/knowledge/skills/content-atomizer.md +910 -910
- package/knowledge/skills/content-research-writer.md +605 -605
- package/knowledge/skills/context-optimization-suite.md +162 -162
- package/knowledge/skills/context7.md +12 -12
- package/knowledge/skills/copy-editing.md +494 -494
- package/knowledge/skills/copywriting.md +510 -510
- package/knowledge/skills/csharp-lsp.md +40 -40
- package/knowledge/skills/decision-making-framework.md +154 -154
- package/knowledge/skills/developer-growth-analysis.md +335 -335
- package/knowledge/skills/direct-response-copy.md +2336 -2336
- package/knowledge/skills/docker-expert.md +229 -229
- package/knowledge/skills/document-skills.md +12 -12
- package/knowledge/skills/documentation-expert.md +126 -126
- package/knowledge/skills/email-sequence.md +1061 -1061
- package/knowledge/skills/email-sequences.md +910 -910
- package/knowledge/skills/example-plugin.md +72 -72
- package/knowledge/skills/explanatory-output-style.md +82 -82
- package/knowledge/skills/feature-dev.md +458 -458
- package/knowledge/skills/file-organizer.md +466 -466
- package/knowledge/skills/firebase.disabled.md +12 -12
- package/knowledge/skills/form-cro.md +488 -488
- package/knowledge/skills/free-tool-strategy.md +636 -636
- package/knowledge/skills/frontend-design-offical.md +55 -55
- package/knowledge/skills/frontend-design.md +41 -41
- package/knowledge/skills/frontend-expert.md +93 -93
- package/knowledge/skills/github.md +12 -12
- package/knowledge/skills/gitlab.md +12 -12
- package/knowledge/skills/gopls-lsp.md +32 -32
- package/knowledge/skills/got-controller.md +218 -218
- package/knowledge/skills/greptile.md +72 -72
- package/knowledge/skills/hookify.md +376 -376
- package/knowledge/skills/image-editor.md +189 -189
- package/knowledge/skills/image-enhancer.md +109 -109
- package/knowledge/skills/jdtls-lsp.md +49 -49
- package/knowledge/skills/json-canvas.md +654 -654
- package/knowledge/skills/keyword-research.md +559 -559
- package/knowledge/skills/kotlin-lsp.md +28 -28
- package/knowledge/skills/laravel-boost.md +12 -12
- package/knowledge/skills/launch-strategy.md +394 -394
- package/knowledge/skills/lead-magnet.md +393 -393
- package/knowledge/skills/learning-output-style.md +106 -106
- package/knowledge/skills/linear.md +12 -12
- package/knowledge/skills/lua-lsp.md +47 -47
- package/knowledge/skills/marketing-ideas.md +720 -720
- package/knowledge/skills/marketing-psychology.md +534 -534
- package/knowledge/skills/mcp-builder.md +369 -369
- package/knowledge/skills/meeting-insights-analyzer.md +347 -347
- package/knowledge/skills/memory-evolution-system.md +172 -172
- package/knowledge/skills/multi-lens-thinking.md +407 -407
- package/knowledge/skills/nano-banana-pro.md +116 -116
- package/knowledge/skills/newsletter.md +736 -736
- package/knowledge/skills/notebooklm.md +296 -296
- package/knowledge/skills/obsidian-bases.md +634 -634
- package/knowledge/skills/obsidian-markdown.md +651 -651
- package/knowledge/skills/onboarding-cro.md +494 -494
- package/knowledge/skills/orchestrator.md +681 -681
- package/knowledge/skills/page-cro.md +379 -379
- package/knowledge/skills/paid-ads.md +624 -624
- package/knowledge/skills/paywall-upgrade-cro.md +651 -651
- package/knowledge/skills/php-lsp.md +36 -36
- package/knowledge/skills/planning-with-files.md +193 -193
- package/knowledge/skills/playwright.md +12 -12
- package/knowledge/skills/plugin-dev.md +434 -434
- package/knowledge/skills/popup-cro.md +520 -520
- package/knowledge/skills/positioning-angles.md +330 -330
- package/knowledge/skills/pr-review-toolkit.md +359 -359
- package/knowledge/skills/pricing-strategy.md +777 -777
- package/knowledge/skills/programmatic-seo.md +714 -714
- package/knowledge/skills/pyright-lsp.md +43 -43
- package/knowledge/skills/quality-assurance-framework.md +168 -168
- package/knowledge/skills/question-refiner.md +160 -160
- package/knowledge/skills/ralph-loop.md +205 -205
- package/knowledge/skills/refactoring-expert.md +103 -103
- package/knowledge/skills/referral-program.md +668 -668
- package/knowledge/skills/research-executor.md +164 -164
- package/knowledge/skills/review-with-security.md +12 -12
- package/knowledge/skills/rust-analyzer-lsp.md +50 -50
- package/knowledge/skills/schema-markup.md +647 -647
- package/knowledge/skills/security-audit-expert.md +124 -124
- package/knowledge/skills/security-expert.md +140 -140
- package/knowledge/skills/security-guidance.md +12 -12
- package/knowledge/skills/seedance-prompt.md +139 -139
- package/knowledge/skills/self-evolution.md +1160 -1160
- package/knowledge/skills/seo-audit.md +432 -432
- package/knowledge/skills/seo-content.md +787 -787
- package/knowledge/skills/serena.md +12 -12
- package/knowledge/skills/signup-flow-cro.md +409 -409
- package/knowledge/skills/skill-creator.md +220 -220
- package/knowledge/skills/skill-manager.md +226 -226
- package/knowledge/skills/skill-share.md +98 -98
- package/knowledge/skills/slack.md +12 -12
- package/knowledge/skills/social-content.md +878 -878
- package/knowledge/skills/spec-flow-skill.md +124 -124
- package/knowledge/skills/stripe.md +12 -12
- package/knowledge/skills/supabase.md +12 -12
- package/knowledge/skills/swift-lsp.md +40 -40
- package/knowledge/skills/synthesizer.md +236 -236
- package/knowledge/skills/template-skill.md +16 -16
- package/knowledge/skills/testing-expert.md +99 -99
- package/knowledge/skills/theme-factory.md +72 -72
- package/knowledge/skills/tiktok-research.md +208 -208
- package/knowledge/skills/typescript-lsp.md +36 -36
- package/knowledge/skills/ui-ux-pro-max.md +247 -247
- package/knowledge/skills/verify.md +15 -15
- package/knowledge/skills/visual-prompt-engineer.md +102 -102
- package/knowledge/skills/webapp-testing.md +111 -111
- package/knowledge/skills/wide-research.md +191 -191
- package/knowledge/system.md +93 -93
- package/knowledge/task-router.md +46 -37
- package/knowledge/verification.md +38 -38
- package/knowledge/worker-prompt-craft.md +66 -0
- package/knowledge/workflows/3d-viz.md +47 -47
- package/knowledge/workflows/data-pipeline.md +47 -47
- package/knowledge/workflows/db-migration.md +51 -51
- package/knowledge/workflows/feature-dev.md +41 -41
- package/knowledge/workflows/tdd-flow.md +52 -52
- package/knowledge/workflows/ui-verify.md +51 -51
- package/package.json +74 -74
- package/dist/claude-bridge.d.ts +0 -18
- package/dist/claude-bridge.js +0 -91
- package/dist/claude-bridge.js.map +0 -1
- package/dist/tools/claude-bridge-tool.d.ts +0 -4
- package/dist/tools/claude-bridge-tool.js +0 -44
- 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
|