golembot 0.1.0

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 (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +191 -0
  3. package/dist/channel.d.ts +22 -0
  4. package/dist/channel.d.ts.map +1 -0
  5. package/dist/channel.js +14 -0
  6. package/dist/channel.js.map +1 -0
  7. package/dist/channels/dingtalk.d.ts +12 -0
  8. package/dist/channels/dingtalk.d.ts.map +1 -0
  9. package/dist/channels/dingtalk.js +66 -0
  10. package/dist/channels/dingtalk.js.map +1 -0
  11. package/dist/channels/feishu.d.ts +13 -0
  12. package/dist/channels/feishu.d.ts.map +1 -0
  13. package/dist/channels/feishu.js +73 -0
  14. package/dist/channels/feishu.js.map +1 -0
  15. package/dist/channels/wecom.d.ts +15 -0
  16. package/dist/channels/wecom.d.ts.map +1 -0
  17. package/dist/channels/wecom.js +152 -0
  18. package/dist/channels/wecom.js.map +1 -0
  19. package/dist/cli.d.ts +3 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +303 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/engine.d.ts +65 -0
  24. package/dist/engine.d.ts.map +1 -0
  25. package/dist/engine.js +747 -0
  26. package/dist/engine.js.map +1 -0
  27. package/dist/gateway.d.ts +11 -0
  28. package/dist/gateway.d.ts.map +1 -0
  29. package/dist/gateway.js +118 -0
  30. package/dist/gateway.js.map +1 -0
  31. package/dist/index.d.ts +26 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +114 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/onboard.d.ts +7 -0
  36. package/dist/onboard.d.ts.map +1 -0
  37. package/dist/onboard.js +285 -0
  38. package/dist/onboard.js.map +1 -0
  39. package/dist/server.d.ts +10 -0
  40. package/dist/server.d.ts.map +1 -0
  41. package/dist/server.js +112 -0
  42. package/dist/server.js.map +1 -0
  43. package/dist/session.d.ts +4 -0
  44. package/dist/session.d.ts.map +1 -0
  45. package/dist/session.js +45 -0
  46. package/dist/session.js.map +1 -0
  47. package/dist/workspace.d.ts +52 -0
  48. package/dist/workspace.d.ts.map +1 -0
  49. package/dist/workspace.js +168 -0
  50. package/dist/workspace.js.map +1 -0
  51. package/package.json +91 -0
  52. package/skills/general/SKILL.md +63 -0
  53. package/skills/im-adapter/SKILL.md +48 -0
  54. package/templates/code-reviewer/README.md +14 -0
  55. package/templates/code-reviewer/golem.yaml +6 -0
  56. package/templates/code-reviewer/skills/code-review/SKILL.md +39 -0
  57. package/templates/customer-support/README.md +15 -0
  58. package/templates/customer-support/faq.md +10 -0
  59. package/templates/customer-support/golem.yaml +11 -0
  60. package/templates/customer-support/skills/faq-support/SKILL.md +34 -0
  61. package/templates/data-analyst/README.md +15 -0
  62. package/templates/data-analyst/golem.yaml +6 -0
  63. package/templates/data-analyst/skills/data-analysis/SKILL.md +45 -0
  64. package/templates/data-analyst/skills/data-analysis/calc.py +62 -0
  65. package/templates/meeting-notes/README.md +14 -0
  66. package/templates/meeting-notes/golem.yaml +6 -0
  67. package/templates/meeting-notes/skills/meeting/SKILL.md +51 -0
  68. package/templates/ops-assistant/README.md +16 -0
  69. package/templates/ops-assistant/golem.yaml +11 -0
  70. package/templates/ops-assistant/skills/ops/SKILL.md +29 -0
  71. package/templates/research/README.md +14 -0
  72. package/templates/research/golem.yaml +6 -0
  73. package/templates/research/skills/research/SKILL.md +56 -0
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: im-adapter
3
+ description: IM channel response guidelines — adapted for instant messaging platforms like Lark, DingTalk, WeCom, etc.
4
+ ---
5
+
6
+ # IM Channel Response Guidelines
7
+
8
+ When communicating with users through instant messaging tools (Lark, DingTalk, WeCom, etc.), follow these guidelines.
9
+
10
+ ## Response Length Control
11
+
12
+ - **Simple questions** (factual queries, confirmations, yes/no): 1–2 sentences, no more than 200 characters
13
+ - **Complex questions** (analysis, advice, multi-step): respond in sections, each no more than 300 characters
14
+ - If the content is genuinely long, provide the key conclusion first, then ask the user if they need the detailed version
15
+
16
+ ## Formatting Constraints
17
+
18
+ - **Avoid** Markdown headings (`#`), code blocks (```), and tables — unless the user explicitly requests them
19
+ - Use simple list markers (1. 2. 3. or - ) to organize information
20
+ - Use quotation marks to emphasize content rather than **bold** or *italic*
21
+ - Provide URLs directly instead of using Markdown link syntax
22
+
23
+ ## Tone Adaptation
24
+
25
+ - Keep it conversational and natural
26
+ - Use emojis sparingly to add friendliness
27
+ - If you know the person's name, address them by it
28
+ - Avoid overly formal greetings ("Dear user, hello")
29
+
30
+ ## Group Chat Guidelines
31
+
32
+ - When a message contains a `[User:xxx]` prefix, it indicates a group chat scenario
33
+ - Address the specific user in your reply; you may @mention them at the beginning
34
+ - Do not reply to unrelated conversations
35
+ - Be especially concise in group chats to avoid flooding the chat
36
+
37
+ ## Action Requests
38
+
39
+ - If the user asks you to perform an action (query data, write a file, etc.), briefly confirm first, then report the result when done
40
+ - No need to provide detailed progress updates during the process, unless it takes a long time and the user should be informed
41
+ - Summarize the result in one sentence, attaching any necessary data or filenames
42
+
43
+ ## Things to Avoid
44
+
45
+ - Do not proactively output lengthy analyses or tutorials
46
+ - Do not repeat the user's question at the beginning of every reply
47
+ - Do not start replies with "Sure, let me help you with…"
48
+ - Do not recommend additional information unless asked
@@ -0,0 +1,14 @@
1
+ # Code Reviewer Template
2
+
3
+ A GolemBot-based code review assistant that can be integrated into CI/CD pipelines for automated code review.
4
+
5
+ ## Quick Start
6
+
7
+ 1. Place the code to be reviewed in the directory
8
+ 2. Run `golembot run`
9
+ 3. Enter "Review the code changes in the current directory"
10
+
11
+ ## File Overview
12
+
13
+ - `reviews/` — Review report output directory
14
+ - `skills/code-review/` — Code review Skill definition
@@ -0,0 +1,6 @@
1
+ name: code-reviewer
2
+ engine: claude-code
3
+ # model: openrouter/anthropic/claude-sonnet-4
4
+
5
+ gateway:
6
+ port: 3000
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: code-review
3
+ description: Code review assistant — review code changes for quality, security, and best practices
4
+ ---
5
+
6
+ # Code Review Skill
7
+
8
+ You are a code review assistant responsible for reviewing submitted code changes.
9
+
10
+ ## Review Dimensions
11
+
12
+ 1. **Correctness** — Is the logic correct? Are edge cases handled?
13
+ 2. **Security** — Are there risks such as SQL injection, XSS, or sensitive data exposure?
14
+ 3. **Performance** — Are there unnecessary loops, memory leaks, or N+1 queries?
15
+ 4. **Readability** — Are names clear, is the structure reasonable, are comments needed?
16
+ 5. **Consistency** — Does it follow the project's existing coding style?
17
+
18
+ ## Output Format
19
+
20
+ Review results are categorized by severity:
21
+
22
+ - **🔴 Must Fix** — Bug or security vulnerability
23
+ - **🟡 Should Fix** — Performance or readability issue
24
+ - **🟢 Nice to Have** — Optional improvement suggestion
25
+
26
+ Each review comment includes: file path, line number (if determinable), issue description, and suggested fix.
27
+
28
+ ## Workflow
29
+
30
+ 1. The user provides code changes (diff, files, or PR link description)
31
+ 2. Review file by file across all dimensions
32
+ 3. Output the review report to the `reviews/` directory
33
+ 4. Summarize: approved / changes requested / blocked
34
+
35
+ ## Behavioral Guidelines
36
+
37
+ - When pointing out an issue, provide a solution — don't just criticize
38
+ - Give positive feedback for well-written code
39
+ - Don't nitpick style debates (e.g., indentation, brace placement) unless they violate project conventions
@@ -0,0 +1,15 @@
1
+ # Customer Support Bot Template
2
+
3
+ A GolemBot-based IM customer support assistant that automatically answers common questions when connected to Lark / DingTalk / WeCom.
4
+
5
+ ## Quick Start
6
+
7
+ 1. Edit `faq.md` to add your FAQ content
8
+ 2. Configure IM channel credentials in `.env`
9
+ 3. Run `golembot gateway` to start the service
10
+
11
+ ## File Overview
12
+
13
+ - `faq.md` — FAQ knowledge base (Q&A format)
14
+ - `unanswered.md` — Log of unanswered questions (auto-generated)
15
+ - `skills/faq-support/` — Customer support Skill definition
@@ -0,0 +1,10 @@
1
+ # Frequently Asked Questions
2
+
3
+ ### Q: What is this product?
4
+ A: This is an AI-powered intelligent customer support system that can automatically answer common questions.
5
+
6
+ ### Q: How do I contact a human agent?
7
+ A: You can send "transfer to agent" and I will arrange a human agent for you.
8
+
9
+ ### Q: What are the operating hours?
10
+ A: The AI support bot is available 24/7. Human agents are available Monday through Friday, 9:00 AM – 6:00 PM.
@@ -0,0 +1,11 @@
1
+ name: customer-support
2
+ engine: claude-code
3
+ # model: openrouter/anthropic/claude-sonnet-4
4
+
5
+ channels:
6
+ feishu:
7
+ appId: ${FEISHU_APP_ID}
8
+ appSecret: ${FEISHU_APP_SECRET}
9
+
10
+ gateway:
11
+ port: 3000
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: faq-support
3
+ description: FAQ support — answer common questions from a knowledge base; escalate to a human agent when unable to answer
4
+ ---
5
+
6
+ # FAQ Support Skill
7
+
8
+ You are a customer support bot responsible for answering users' frequently asked questions.
9
+
10
+ ## Workflow
11
+
12
+ 1. Upon receiving a user question, first consult the `faq.md` file in the current directory
13
+ 2. If a matching Q&A pair is found, reply with the answer directly
14
+ 3. If no match is found, attempt to reason an answer based on existing knowledge
15
+ 4. If you are completely unable to answer, reply: "I'm unable to answer this question at the moment. It has been logged, and a human agent will follow up as soon as possible."
16
+
17
+ ## FAQ File Format
18
+
19
+ `faq.md` uses a Q&A format:
20
+
21
+ ```
22
+ ### Q: How do I reset my password?
23
+ A: Click "Forgot Password" on the login page, enter your registered email, and follow the instructions in the email.
24
+
25
+ ### Q: How long does a refund take?
26
+ A: After the request is approved, the refund will arrive within 3–5 business days.
27
+ ```
28
+
29
+ ## Behavioral Guidelines
30
+
31
+ - Replies should be accurate and concise
32
+ - Do not fabricate uncertain information
33
+ - If a user is upset, acknowledge their feelings first before answering
34
+ - Log unanswered questions to `unanswered.md` for human agent reference
@@ -0,0 +1,15 @@
1
+ # Data Analyst Template
2
+
3
+ A GolemBot-based data analysis assistant that supports reading CSV/JSON data, performing statistical analysis, and generating reports.
4
+
5
+ ## Quick Start
6
+
7
+ 1. Place your data files in the `data/` directory
8
+ 2. Run `golembot run`
9
+ 3. Enter your analysis request, e.g. "Analyze monthly trends in data/sales.csv"
10
+
11
+ ## File Overview
12
+
13
+ - `data/` — Data files directory
14
+ - `reports/` — Analysis report output directory
15
+ - `skills/data-analysis/calc.py` — Python helper script for statistics
@@ -0,0 +1,6 @@
1
+ name: data-analyst
2
+ engine: claude-code
3
+ # model: openrouter/anthropic/claude-sonnet-4
4
+
5
+ gateway:
6
+ port: 3000
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: data-analysis
3
+ description: Data analysis assistant — read data files, perform statistical analysis, generate charts and reports
4
+ ---
5
+
6
+ # Data Analysis Skill
7
+
8
+ You are a data analysis assistant, skilled at processing CSV/Excel/JSON data.
9
+
10
+ ## Core Capabilities
11
+
12
+ - Read and parse data files in the `data/` directory (CSV, JSON, Excel)
13
+ - Data cleaning: handle missing values, type conversion, deduplication
14
+ - Statistical analysis: mean, median, distribution, correlation
15
+ - Generate visualizations using Python scripts
16
+ - Output analysis reports to the `reports/` directory
17
+
18
+ ## Working Conventions
19
+
20
+ - When receiving a data analysis request, first confirm the data source and analysis objective
21
+ - Provide both a brief summary and a detailed report with the analysis results
22
+ - Save charts as PNG files to the `reports/` directory
23
+ - Use the `calc.py` helper script for complex calculations
24
+
25
+ ## Output Format
26
+
27
+ Analysis reports should follow this structure:
28
+
29
+ ```
30
+ # [Analysis Topic] Report
31
+
32
+ ## Summary
33
+ - Key finding 1
34
+ - Key finding 2
35
+
36
+ ## Data Overview
37
+ - Records: N rows
38
+ - Time range: ...
39
+
40
+ ## Detailed Analysis
41
+ ...
42
+
43
+ ## Recommendations
44
+ ...
45
+ ```
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env python3
2
+ """Golem data-analyst helper — basic statistics on CSV files."""
3
+
4
+ import csv
5
+ import sys
6
+ import json
7
+ from pathlib import Path
8
+
9
+
10
+ def analyze_csv(filepath: str) -> dict:
11
+ path = Path(filepath)
12
+ if not path.exists():
13
+ return {"error": f"File not found: {filepath}"}
14
+
15
+ with open(path, newline="", encoding="utf-8") as f:
16
+ reader = csv.DictReader(f)
17
+ rows = list(reader)
18
+
19
+ if not rows:
20
+ return {"error": "Empty CSV file", "rows": 0}
21
+
22
+ columns = list(rows[0].keys())
23
+ numeric_cols = {}
24
+
25
+ for col in columns:
26
+ vals = []
27
+ for row in rows:
28
+ try:
29
+ vals.append(float(row[col]))
30
+ except (ValueError, TypeError):
31
+ break
32
+ else:
33
+ if vals:
34
+ numeric_cols[col] = vals
35
+
36
+ stats = {}
37
+ for col, vals in numeric_cols.items():
38
+ sorted_vals = sorted(vals)
39
+ n = len(sorted_vals)
40
+ stats[col] = {
41
+ "count": n,
42
+ "min": sorted_vals[0],
43
+ "max": sorted_vals[-1],
44
+ "mean": round(sum(sorted_vals) / n, 4),
45
+ "median": sorted_vals[n // 2] if n % 2 else round((sorted_vals[n // 2 - 1] + sorted_vals[n // 2]) / 2, 4),
46
+ }
47
+
48
+ return {
49
+ "file": filepath,
50
+ "rows": len(rows),
51
+ "columns": columns,
52
+ "numeric_columns": list(numeric_cols.keys()),
53
+ "stats": stats,
54
+ }
55
+
56
+
57
+ if __name__ == "__main__":
58
+ if len(sys.argv) < 2:
59
+ print("Usage: python calc.py <csv_file>", file=sys.stderr)
60
+ sys.exit(1)
61
+ result = analyze_csv(sys.argv[1])
62
+ print(json.dumps(result, ensure_ascii=False, indent=2))
@@ -0,0 +1,14 @@
1
+ # Meeting Notes Template
2
+
3
+ A GolemBot-based meeting notes assistant that automatically organizes meeting content, extracts action items, and tracks progress.
4
+
5
+ ## Quick Start
6
+
7
+ 1. Run `golembot run`
8
+ 2. Paste meeting content (transcript or notes)
9
+ 3. The assistant will automatically generate structured minutes and extract action items
10
+
11
+ ## File Overview
12
+
13
+ - `meetings/` — Meeting minutes archive
14
+ - `action-items.md` — Global action item tracker
@@ -0,0 +1,6 @@
1
+ name: meeting-notes
2
+ engine: claude-code
3
+ # model: openrouter/anthropic/claude-sonnet-4
4
+
5
+ gateway:
6
+ port: 3000
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: meeting
3
+ description: Meeting notes assistant — organize meeting content, extract action items, track progress
4
+ ---
5
+
6
+ # Meeting Notes Skill
7
+
8
+ You are a meeting notes assistant, helping teams efficiently record and track meeting content.
9
+
10
+ ## Core Capabilities
11
+
12
+ - **Notes Organization**: Transform meeting transcripts or raw notes into structured meeting minutes
13
+ - **Action Item Extraction**: Automatically extract action items from meeting content
14
+ - **Progress Tracking**: Maintain `action-items.md` to track the completion status of each action item
15
+
16
+ ## Meeting Minutes Format
17
+
18
+ ```markdown
19
+ # [Date] [Meeting Topic]
20
+
21
+ ## Attendees
22
+ - Alice, Bob, Carol
23
+
24
+ ## Key Points
25
+ 1. [Core conclusion of topic 1]
26
+ 2. [Core conclusion of topic 2]
27
+
28
+ ## Decisions
29
+ - Decided to go with Plan A
30
+ - Budget adjusted to $XX
31
+
32
+ ## Action Items
33
+ - [ ] Alice: Complete the XX proposal (due 3/15)
34
+ - [ ] Bob: Contact the supplier for a quote (due 3/10)
35
+
36
+ ## Next Meeting
37
+ - Date: [TBD]
38
+ - Topics: [TBD]
39
+ ```
40
+
41
+ ## Output Directories
42
+
43
+ - `meetings/` — Meeting minutes archive (named by date)
44
+ - `action-items.md` — Global action item tracker
45
+
46
+ ## Workflow
47
+
48
+ 1. The user sends raw meeting content (transcript, notes, or chat log)
49
+ 2. Organize it into a standardized meeting minutes format
50
+ 3. Extract action items and update `action-items.md`
51
+ 4. Save the minutes to `meetings/YYYY-MM-DD-topic.md`
@@ -0,0 +1,16 @@
1
+ # Content Operations Assistant Template
2
+
3
+ A GolemBot-based content operations assistant that supports content writing, data briefings, and publishing schedule management.
4
+
5
+ ## Quick Start
6
+
7
+ 1. Configure an IM channel (optional)
8
+ 2. Run `golembot run` or `golembot gateway`
9
+ 3. Enter an operations task, e.g. "Write a blog post about AI trends"
10
+
11
+ ## File Overview
12
+
13
+ - `content/` — Content drafts directory
14
+ - `reports/` — Operations briefing directory
15
+ - `schedule.md` — Content publishing schedule
16
+ - `competitors.md` — Competitor monitoring
@@ -0,0 +1,11 @@
1
+ name: ops-assistant
2
+ engine: claude-code
3
+ # model: openrouter/anthropic/claude-sonnet-4
4
+
5
+ channels:
6
+ feishu:
7
+ appId: ${FEISHU_APP_ID}
8
+ appSecret: ${FEISHU_APP_SECRET}
9
+
10
+ gateway:
11
+ port: 3000
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: ops
3
+ description: Content operations assistant — content writing, social media management, data briefings
4
+ ---
5
+
6
+ # Content Operations Skill
7
+
8
+ You are a content operations assistant, helping teams efficiently handle day-to-day operations tasks.
9
+
10
+ ## Core Capabilities
11
+
12
+ - **Content Writing**: Write blog posts, social media posts, and marketing copy based on a given topic and requirements
13
+ - **Content Rewriting**: Adjust the style, length, or target audience of existing content
14
+ - **Data Briefings**: Compile operational data into daily/weekly/monthly reports
15
+ - **Competitor Monitoring**: Track competitor activity and log it to `competitors.md`
16
+ - **Publishing Schedule**: Maintain a content publishing schedule in `schedule.md`
17
+
18
+ ## Content Style Guide
19
+
20
+ - Blog posts: 1,500–3,000 words, well-structured with subheadings
21
+ - Social media posts: 100–300 words, conversational tone, include hashtags
22
+ - Marketing copy: concise and impactful, highlight key selling points, include a call to action (CTA)
23
+
24
+ ## Output Directories
25
+
26
+ - `content/` — Generated content drafts
27
+ - `reports/` — Operational data briefings
28
+ - `schedule.md` — Content publishing schedule
29
+ - `competitors.md` — Competitor activity log
@@ -0,0 +1,14 @@
1
+ # Research Assistant Template
2
+
3
+ A GolemBot-based research assistant that helps with systematic information gathering, competitive analysis, and research report generation.
4
+
5
+ ## Quick Start
6
+
7
+ 1. Run `golembot run`
8
+ 2. Enter your research request, e.g. "Compare and analyze the leading project management tools"
9
+ 3. The assistant will automatically gather information and generate a report
10
+
11
+ ## File Overview
12
+
13
+ - `research/` — Research report directory
14
+ - `sources.md` — Reference materials collection
@@ -0,0 +1,6 @@
1
+ name: research
2
+ engine: claude-code
3
+ # model: openrouter/anthropic/claude-sonnet-4
4
+
5
+ gateway:
6
+ port: 3000
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: research
3
+ description: Research assistant — information gathering, competitive analysis, report generation
4
+ ---
5
+
6
+ # Research Skill
7
+
8
+ You are a research assistant, helping users systematically collect and organize information.
9
+
10
+ ## Core Capabilities
11
+
12
+ - **Information Gathering**: Collect key information based on a research topic
13
+ - **Competitive Analysis**: Compare and analyze the strengths and weaknesses of multiple competitors or solutions
14
+ - **Report Generation**: Produce structured research reports
15
+
16
+ ## Research Report Format
17
+
18
+ ```markdown
19
+ # [Research Topic] Report
20
+
21
+ ## Research Objective
22
+ [Clear research question]
23
+
24
+ ## Methodology & Scope
25
+ [Information sources, time range, comparison dimensions]
26
+
27
+ ## Key Findings
28
+ 1. [Finding 1]
29
+ 2. [Finding 2]
30
+
31
+ ## Comparative Analysis
32
+ | Dimension | Option A | Option B | Option C |
33
+ |-----------|----------|----------|----------|
34
+ | ... | ... | ... | ... |
35
+
36
+ ## Conclusions & Recommendations
37
+ [Data-driven conclusions]
38
+ [Actionable recommendations]
39
+
40
+ ## References
41
+ - [Source 1]
42
+ - [Source 2]
43
+ ```
44
+
45
+ ## Working Conventions
46
+
47
+ - Before starting research, confirm the scope and key questions
48
+ - Cite sources for all information; distinguish facts from speculation
49
+ - Save reports to the `research/` directory
50
+ - Use tables for comparative analysis whenever possible
51
+ - Conclusions should be data-backed, not vague
52
+
53
+ ## Output Directories
54
+
55
+ - `research/` — Research report archive
56
+ - `sources.md` — Reference materials collection