From 5280d748036481ae31ad576af49f2179832a68cd Mon Sep 17 00:00:00 2001
From: zongtingwei <20228131062@m.scnu.edu.cn>
Date: Wed, 25 Mar 2026 22:01:20 +0800
Subject: [PATCH 1/2] Add skills contribution note to README headers
---
README.md | 3 +++
README.zh-CN.md | 4 ++++
2 files changed, 7 insertions(+)
diff --git a/README.md b/README.md
index 05b4aa2..c7c1fe9 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,9 @@
Built on the [NanoClaw](https://github.com/qwibitai/nanoclaw) architecture with bioinformatics tools and skills from the [STELLA](https://github.com/zaixizhang/STELLA) project, powered by the [Claude Agent SDK](https://docs.anthropic.com/en/docs/agents-sdk).
+
+ New BioClaw-compatible skills are first contributed to Bioclaw_Skills_Hub, where they can be iterated and tested before being promoted into the main BioClaw repository. If you want to contribute new skills, please submit them there first. Skills that prove useful and stable in practice may later be integrated into BioClaw itself. To get newly promoted skills and updates from BioClaw, pull the latest version of this repository with git pull.
+
## Join WeChat Group
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 0c43000..377903f 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -12,6 +12,10 @@
[](https://www.biorxiv.org/content/10.1101/2025.07.01.662467v2)
[](https://arxiv.org/abs/2507.02004)
+
+ 新的 BioClaw 兼容 skills 会先提交到 Bioclaw_Skills_Hub 仓库,在那里先完成迭代和测试,再视效果同步到主 BioClaw 仓库中。如果你想贡献新的 skills,请优先提交到该仓库。经过验证、效果稳定的 skills,后续会逐步整合进 BioClaw。若想获取这些后续合入的 skills 和更新内容,请在本仓库中执行 git pull。
+
+
---
From 8c482dcc2598b785744a1ac329e90aa64c106c1a Mon Sep 17 00:00:00 2001
From: zongtingwei <20228131062@m.scnu.edu.cn>
Date: Wed, 25 Mar 2026 22:22:06 +0800
Subject: [PATCH 2/2] Align WhatsApp tests with current channel behavior
---
src/channels/whatsapp.test.ts | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/channels/whatsapp.test.ts b/src/channels/whatsapp.test.ts
index aa31cfe..b0bdbf7 100644
--- a/src/channels/whatsapp.test.ts
+++ b/src/channels/whatsapp.test.ts
@@ -5,6 +5,9 @@ import { EventEmitter } from 'events';
// Mock config
vi.mock('../config.js', () => ({
+ ALLOW_WHATSAPP_SELF_MESSAGES: false,
+ ASSISTANT_NAME: 'Bioclaw',
+ GROUPS_DIR: '/tmp/bioclaw-test-groups',
STORE_DIR: '/tmp/bioclaw-test-store',
}));
@@ -81,6 +84,7 @@ let fakeSocket: ReturnType;
// Mock Baileys
vi.mock('@whiskeysockets/baileys', () => {
return {
+ downloadMediaMessage: vi.fn().mockResolvedValue(Buffer.from('image-bytes')),
default: vi.fn(() => fakeSocket),
Browsers: {
macOS: vi.fn((browser: string) => ['Mac OS', browser, '14.4.1']),
@@ -97,6 +101,9 @@ vi.mock('@whiskeysockets/baileys', () => {
restartRequired: 515,
},
makeCacheableSignalKeyStore: vi.fn((keys: unknown) => keys),
+ fetchLatestBaileysVersion: vi.fn().mockResolvedValue({
+ version: [2, 3000, 1035194821],
+ }),
useMultiFileAuthState: vi.fn().mockResolvedValue({
state: {
creds: {},
@@ -333,6 +340,7 @@ describe('WhatsAppChannel', () => {
expect(opts.onChatMetadata).toHaveBeenCalledWith(
'registered@g.us',
expect.any(String),
+ 'WhatsApp Group red@g.us',
);
expect(opts.onMessage).toHaveBeenCalledWith(
'registered@g.us',
@@ -368,6 +376,7 @@ describe('WhatsAppChannel', () => {
expect(opts.onChatMetadata).toHaveBeenCalledWith(
'unregistered@g.us',
expect.any(String),
+ 'WhatsApp Group red@g.us',
);
expect(opts.onMessage).not.toHaveBeenCalled();
});
@@ -467,7 +476,9 @@ describe('WhatsAppChannel', () => {
expect(opts.onMessage).toHaveBeenCalledWith(
'registered@g.us',
- expect.objectContaining({ content: 'Check this photo' }),
+ expect.objectContaining({
+ content: expect.stringContaining('Check this photo'),
+ }),
);
});
@@ -592,6 +603,7 @@ describe('WhatsAppChannel', () => {
expect(opts.onChatMetadata).toHaveBeenCalledWith(
'1234567890@s.whatsapp.net',
expect.any(String),
+ 'WhatsApp DM Self',
);
});
@@ -618,6 +630,7 @@ describe('WhatsAppChannel', () => {
expect(opts.onChatMetadata).toHaveBeenCalledWith(
'registered@g.us',
expect.any(String),
+ 'WhatsApp Group red@g.us',
);
});
@@ -644,6 +657,7 @@ describe('WhatsAppChannel', () => {
expect(opts.onChatMetadata).toHaveBeenCalledWith(
'0000000000@lid',
expect.any(String),
+ 'WhatsApp DM Unknown',
);
});
});