Trigger Conditions
When the user says any of the following statements, this Skill is started:
- "Self-media Software Analysis Report"
- "Generate a technical report"
- "Analyze this project"
- "Help me write a technical analysis"
- "Learn about this open-source project"
Agent Execution Flow
Phase 1: Project Acquisition (Dialogue Round 1)
Agent Opening:
I will help you generate a professional technical analysis report. First, please tell me the project source:
- GitHub link(public or private repository)
- Local project path(absolute path)
Collect information:
- Wait for the user to provide the project source
- If it is a private GitHub repository, ask whether a Token is needed
Verify availability:
# GitHub项目
git clone --depth 1 <url> /tmp/analysis-repo 2>&1
# 本地项目
ls -la <path>
If you encounter private repository permission issues:
This project appears to be private and I cannot access it directly. You can:
- Provide a Personal Access Token
- Or package the project and send it to me
Phase 2: Project Identification and Confirmation (Dialogue Round 2)
Automatically detect project type:
Read key project files and determine the project type:
| Detection basis | Project type |
|---|---|
| package.json + src/pages or routes | Web application |
| package.json + bin field | CLI tool |
| Python/Rust + algorithm-related directories | Algorithm library |
| Large amount of configuration + plugin system | Framework/Platform |
| Android/iOS directories | Mobile app |
| data/db/query related | Data tool |
| Unable to identify | General project |
Agent informs the user of the detection result:
I detected that this is a [project type] project.
Key features:
- Primary language: [Python/JavaScript/Rust, etc.]
- Core modules: [list main directories]
- Tech stack: [extracted from package.json, etc.]
Is this judgment accurate? If not, please tell me the actual type.
Wait for the user to confirm or correct
Phase 3: Report Configuration (Dialogue Round 3)
Ask about the report template:
Please choose a report template:
A. Concise Overview(3 chapters, about 3,000 words)
- Suitable for: quickly understanding the project
- Chapters: Overview + Architecture + Highlights
B. Standard Analysis(5 chapters, about 8,000 words) ⭐Recommended
- Suitable for: routine technical review
- Chapters: Overview + Architecture + Mechanisms + Ecosystem + Tech Stack
C. In-depth Analysis(7 chapters, about 12,000 words)
- Suitable for: in-depth technical audit
- Chapters: Standard 5 chapters + Performance + Security + Future Outlook
D. Custom
- You specify the number of chapters and the topic
Ask about content style:
Please choose a writing style:
- Academic style - Humorous but rigorous, with metaphors, like a tech blog
- Technical style - Precise and professional, dense with terminology, like architecture documentation
- Popular science style - Easy to understand, story-driven, suitable for non-technical readers
- Business style - Value-oriented, with data, suitable for investment scenarios
Ask about analysis depth:
Please choose the analysis depth:
- Overview(30%) - Concept-level explanation, no code
- Standard(60%) - Moderately in-depth, a small amount of pseudocode
- Expert(100%) - Deep analysis, real code + detailed explanation
Ask about output format:
Please choose the output format (multiple selections allowed):
- Markdown (editable source)
- Word document (.docx, formal report)
- PDF (suitable for publishing and sharing)
Phase 4: Personalized configuration (4th round of dialogue)
Ask about illustration requirements:
Do you need illustrations? Number of illustrations per chapter:
- 0 (text only, suitable for projects that already have design diagrams)
- 1 (1 concept diagram per chapter)
- 2 (architecture diagram + flowchart per chapter)
- 3 (comprehensive visual presentation)
Ask about special focus points (optional):
Are there any modules or features you especially want me to focus on analyzing? (Press Enter to skip)
Ask about font preferences (only needed for Word output):
If generating a Word document, font settings:
- Heading font: [SimHei/Microsoft YaHei/SimSun]
- Body font: [FangSong/SimSun/Microsoft YaHei]
(The output format will be confirmed after generation is complete)
Confirm and summarize:
Okay, configuration complete! Let me confirm:
Configuration item Your choice Project [Project name] Type [Project type] Template [A/B/C/D] Style [Academic/Technical/Popular science/Business] Depth [Overview/Standard/Expert] Illustrations [0-3 per chapter] Once confirmed, I will begin generating the report. This process will take about 10-15 minutes.
Confirm to start?(Reply "start" or "modify")
Phase 5: Execute generation
After the user confirms, the Agent executes the following steps:
Step 1: Project acquisition
# GitHub项目
git clone --depth 1 <url> /tmp/analysis-repo
# 本地项目
cp -r <local_path> /tmp/analysis-repo
Step 2: Project analysis
Read and analyze:
- README.md - Project overview
- package.json / Cargo.toml / pyproject.toml - Tech stack
- src/ directory structure - Architecture analysis
- docs/ - Existing documentation
Extract key information and save it to the context.
Step 3: Multi-Agent collaborative chapter generation
Start team task mode, with the PM (you) as coordinator:
团队构成:
- PM(你): 任务分配、进度监控、结果汇总
- Writer-1: 第1章(概述)
- Writer-2: 第2章(架构)
- Writer-3: 第3章(机制)
- Writer-4: 第4章(生态/技术栈,根据模板动态分配)
- QA: 质量验证
Shared whiteboard mechanism:
Create a shared state file that all Agents can read from and write to:
// /tmp/analysis-shared-board.json
{
"project_info": { /* 项目分析结果 */ },
"config": {
"template": "B",
"style": "学术风",
"depth": "标准",
"images_per_chapter": 2
},
"chapters": {
"01-overview": { "status": "pending", "writer": "Writer-1", "content": null },
"02-architecture": { "status": "pending", "writer": "Writer-2", "content": null },
"03-mechanism": { "status": "pending", "writer": "Writer-3", "content": null },
"04-ecosystem": { "status": "pending", "writer": "Writer-4", "content": null },
"05-techstack": { "status": "pending", "writer": "Writer-4", "content": null }
},
"images": {
"generated": [],
"assigned": []
},
"qa_report": null
}
Task workflow for each Writer Agent:
- Read the shared whiteboard - Get project information and configuration
- Read the assigned chapter Prompt template
- Write the chapter content(1000-2000 words)
- Generate illustrations(if configured for >0 images)
- Use nano-banana-pro to generate 2K illustrations
- Update the whiteboard: images.generated
- Save the chapter to a temporary file
- Update the whiteboard: chapters.[chapter].status = "completed"
PM monitoring logic:
# 每2分钟检查一次白板进度
while True:
board = read_shared_board()
completed = sum(1 for ch in board["chapters"].values() if ch["status"] == "completed")
total = len(board["chapters"])
if completed == total:
break
# 向用户汇报进度
print(f"进度: {completed}/{total} 章节已完成")
sleep(120)
Step 4: Generate illustrations (if configured for >0 per chapter)
If the user selects 0 illustrations:
- Skip this step
- Do not insert any image references into the chapter
- Proceed directly to the next step
If the user selects 1-3 illustrations:
Each Writer Agent independently generates illustrations:
cd ~/clawd/skills/nano-banana-pro
export $(grep -v '^#' .env | xargs)
uv run scripts/generate_image.py \
--prompt "[根据章节内容生成的学术风格配图Prompt]" \
--filename "/tmp/analysis/images/XX-topic.png" \
--resolution 2K
After generation, update the shared whiteboard:
"images": {
"generated": [
"01-hero.png",
"02-architecture.png",
...
]
}
Step 5: QA quality verification
Start the QA Agent(verify each chapter in parallel or sequentially):
QA Agent任务:
1. 读取共享白板,获取所有章节文件路径
2. 逐章验证:
- 内容准确性(技术描述是否正确)
- 完整性(是否覆盖要求的深度)
- 风格符合度(是否符合选择的风格)
- 流畅度(阅读体验)
- 配图质量(如果配置了配图)
3. 生成QA报告,更新白板:qa_report
4. 标记各章节:pass / need_fix
如果章节需要修改:
- 返回给对应Writer Agent修改
- 修改后重新验证
- 最多3轮迭代
After QA passes, continue to the next step.
Step 6: Merge and convert
Merge Markdown:
cat 01-*.md 02-*.md ... > complete.md
Format conversion (based on the user's choice in Phase 4):
Ask the user to confirm the output format:
The report content has been generated and passed QA verification.> Please select the final output format(s) (multiple selections allowed):
- Markdown (editable source)
- Word document (.docx, formal report)
- PDF (suitable for publishing and sharing)
If multiple formats are selected, I will package them into a zip and send it.
After waiting for user confirmation, perform the conversion:
Markdown: Use complete.md directly
Word (if selected):
pandoc complete.md -o report.docx --toc --toc-depth=2
python3 adjust_fonts.py report.docx "[标题字体]" "[正文字体]"
PDF (if selected):
pandoc complete.md -o report.pdf --pdf-engine=xelatex
Multi-file packaging (if 2 or more formats are selected):
zip 技术报告-完整版.zip complete.md report.docx report.pdf images/
Step 6: Delivery
✅ Report generation complete!
File list:
- 📄 Complete report.md (editable source)
- 📘 Technical report.docx (Word document, bold headings + FangSong body text)
- 📕 Technical report.pdf (PDF format)
- 🖼️ Illustrations folder (X 2K resolution images)
Sending files...
Send all generated files to the user.
Special case handling
Case 1: Project clone failed
Encountered a problem while cloning the project: [error message]
Possible reasons:
- Private repository requires a Token
- Network issue
- Repository does not exist
Suggestion: [specific solution]
Case 2: Project type cannot be identified
I cannot automatically identify this project type. Please tell me:
- What type of project is this? (Web app/CLI tool/algorithm library/framework/other)
- What is its main function?
Case 3: User requests modifications
Received modification feedback. Please tell me the specific changes:
- Which chapter needs to be modified?
- What are the modifications?
- Do you need to adjust the illustrations?
Then regenerate the corresponding chapter.
Situation 4: Generation takes too long
Report is being generated, [X/Y] chapters completed...
Estimated remaining time: about Z minutes
You can preview the completed chapters first: [File]
Situation 5: Shared whiteboard access conflict
If multiple Writer Agents read and write the whiteboard at the same time:
- Use a file locking mechanism (lockfile)
- Or use Git for version control
- Or relay through the PM (send all write operations to the PM, and the PM updates the whiteboard)
Recommended solution: relay through the PM
Writer -> 向PM汇报进度 -> PM更新白板 -> 广播给其他Agent
Situation 6: QA verification fails
If QA discovers chapter quality issues:
- QA marks on the shared whiteboard: chapters.[chapter].status = "need_fix"
- QA explains the issues in detail in qa_report
- The PM notifies the corresponding Writer Agent to revise
- After revision, the Writer resubmits to QA
- At most 3 iterations; if it still fails, mark it as "warning" and continue
Chapter Prompt Template
Academic Style Prompt Template
你是一个技术文档撰写专家。请基于以下项目信息,撰写[章节名称]。
## 项目信息
{project_analysis_result}
## 写作要求
- 风格:幽默但严谨,像顶级会议论文
- 深度:[概述/标准/专家]
- 字数:[根据深度调整]
- 配图:如果需要,在适当位置插入 
## 章节大纲
[根据章节类型提供的大纲]
请直接输出完整的Markdown格式章节内容。
Technical Style Prompt Template
你是一个技术架构师。请基于以下项目信息,撰写[章节名称]。
## 项目信息
{project_analysis_result}
## 写作要求
- 风格:精准专业,术语准确
- 深度:[概述/标准/专家]
- 包含:架构图描述、关键代码片段、性能数据
- 配图:如果需要,在适当位置插入
请直接输出完整的Markdown格式章节内容。
(Popular science style and business style are similar...)
Dependency Check
Before execution, check whether the following dependencies are available:
# 检查pandoc
which pandoc || echo "pandoc未安装"
# 检查python-docx
python3 -c "import docx" 2>&1 || echo "python-docx未安装"
# 检查nano-banana-pro
ls ~/clawd/skills/nano-banana-pro/scripts/generate_image.py
# 检查Git
which git
If anything is missing, tell the user how to install it.
Output File Structure
/tmp/analysis-output/
├── 01-overview.md
├── 02-architecture.md
├── 03-mechanism.md
├── 04-ecosystem.md
├── 05-techstack.md
├── images/
│ ├── 01-hero.png
│ ├── 02-architecture.png
│ └── ...
├── complete.md # 合并后的完整Markdown
├── 技术报告.docx # Word文档(如选择)
└── 技术报告.pdf # PDF文档(如选择)
Shared Whiteboard Usage Example
Whiteboard initialization (executed by the PM)
import json
board = {
"project_info": {
"name": "OpenClaw",
"type": "framework",
"language": "TypeScript",
"tech_stack": ["Node.js", "WebSocket", "TypeBox"],
"description": "个人AI助手平台"
},
"config": {
"template": "B",
"style": "学术风",
"depth": "标准",
"images_per_chapter": 2,
"title_font": "黑体",
"body_font": "仿宋"
},
"chapters": {
"01-overview": {
"status": "pending",
"writer": "Writer-1",
"content_path": None,
"word_count": 0
},
"02-architecture": {
"status": "pending",
"writer": "Writer-2",
"content_path": None,
"word_count": 0
},
"03-mechanism": {
"status": "pending",
"writer": "Writer-3",
"content_path": None,
"word_count": 0
},
"04-ecosystem": {
"status": "pending",
"writer": "Writer-4",
"content_path": None,
"word_count": 0
},
"05-techstack": {
"status": "pending",
"writer": "Writer-4",
"content_path": None,
"word_count": 0
}
},
"images": {
"generated": [],
"failed": []
},
"qa_report": {
"status": "pending",
"results": {}
}
}
with open("/tmp/analysis-shared-board.json", "w") as f:
json.dump(board, f, indent=2)
Writer Agent reads the whiteboard
import json
def read_board():
with open("/tmp/analysis-shared-board.json", "r") as f:
return json.load(f)
def update_board(updates):
"""更新白板(通过PM中转)"""
board = read_board()
board.update(updates)
with open("/tmp/analysis-shared-board.json", "w") as f:
json.dump(board, f, indent=2)
# Writer Agent使用示例
board = read_board()
my_chapter = "01-overview"
config = board["config"]
project_info = board["project_info"]
# 撰写章节...
# 完成后更新白板
update_board({
"chapters": {
my_chapter: {
"status": "completed",
"content_path": "/tmp/analysis/01-overview.md",
"word_count": 1850
}
}
})
PM monitors progress
def check_progress():
board = read_board()
total = len(board["chapters"])
completed = sum(1 for ch in board["chapters"].values()
if ch["status"] == "completed")
return {
"completed": completed,
"total": total,
"percentage": (completed / total) * 100
}
# 每2分钟检查一次
while True:
progress = check_progress()
print(f"进度: {progress['completed']}/{progress['total']} "
f"({progress['percentage']:.0f}%)")
if progress["completed"] == progress["total"]:
break
time.sleep(120)
Example Dialogue Flow
User: Self-media software analysis report
Agent: I will help you generate a professional technical analysis report. First, please tell me the project source:
- GitHub link (public or private repository)
- Local project path (absolute path)
User: https://github.com/openclaw/openclaw
Agent: [Clone the project and analyze...]
I detected that this is a framework/platform project.
Key features:
- Main language: TypeScript
- Core modules: Gateway, Agent, Channels, Skills
- Tech stack: Node.js, WebSocket, TypeBox
Is this judgment accurate?
User: Accurate
Agent: Please choose a report template: A. Concise Overview (3 chapters) B. Standard Analysis (5 chapters) C. In-depth Analysis (7 chapters) D. Custom
User: B
Agent: Please choose a writing style:
- Academic style 2. Technical style 3. Popular science style 4. Business style
User: 1
...(continue the subsequent dialogue)
Skill version: 2.0 | Agent Usage Guide | Updated: 2026-02-03