From 1ac9fd69f657b0f65b72edd34d42b2cc7257b0a8 Mon Sep 17 00:00:00 2001 From: dMiller Date: Mon, 24 Aug 2026 08:14:49 -0500 Subject: [PATCH 1/7] fix(agents): correct doc-updater description claiming command-invoking tools MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The doc-updater description said it 'Runs /update-codemaps and /update-docs', but its tools are Read, Write, Edit, Bash, Grep, Glob — no command-invoking tool exists in this repo, and no agent is granted one. The agent body already does the right thing (invokes generators directly); only the description was wrong. Agent descriptions drive selection, so a false capability claim can misroute work to this agent on the assumption it can run slash commands. docs/COMMAND-AGENT-MAP.md already records the true direction (/update-codemaps -> doc-updater), so the description now matches: the agent backs those commands rather than invoking them. Applied to the canonical agent file and the two active .kiro mirrors that carried the identical string. --- .kiro/agents/doc-updater.json | 2 +- .kiro/agents/doc-updater.md | 2 +- agents/doc-updater.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.kiro/agents/doc-updater.json b/.kiro/agents/doc-updater.json index 3aef9eeb1..e61e0d98c 100644 --- a/.kiro/agents/doc-updater.json +++ b/.kiro/agents/doc-updater.json @@ -1,6 +1,6 @@ { "name": "doc-updater", - "description": "Documentation and codemap specialist. Use PROACTIVELY for updating codemaps and documentation. Runs /update-codemaps and /update-docs, generates docs/CODEMAPS/*, updates READMEs and guides.", + "description": "Documentation and codemap specialist. Use PROACTIVELY for updating codemaps and documentation. Generates docs/CODEMAPS/*, updates READMEs and guides. Backs the /update-codemaps and /update-docs commands.", "mcpServers": {}, "tools": [ "@builtin" diff --git a/.kiro/agents/doc-updater.md b/.kiro/agents/doc-updater.md index 31b19e963..ea9baa6c6 100644 --- a/.kiro/agents/doc-updater.md +++ b/.kiro/agents/doc-updater.md @@ -1,6 +1,6 @@ --- name: doc-updater -description: Documentation and codemap specialist. Use PROACTIVELY for updating codemaps and documentation. Runs /update-codemaps and /update-docs, generates docs/CODEMAPS/*, updates READMEs and guides. +description: Documentation and codemap specialist. Use PROACTIVELY for updating codemaps and documentation. Generates docs/CODEMAPS/*, updates READMEs and guides. Backs the /update-codemaps and /update-docs commands. allowedTools: - read - write diff --git a/agents/doc-updater.md b/agents/doc-updater.md index 4fd5bd46e..5cc7dac99 100644 --- a/agents/doc-updater.md +++ b/agents/doc-updater.md @@ -1,6 +1,6 @@ --- name: doc-updater -description: Documentation and codemap specialist. Use PROACTIVELY for updating codemaps and documentation. Runs /update-codemaps and /update-docs, generates docs/CODEMAPS/*, updates READMEs and guides. +description: Documentation and codemap specialist. Use PROACTIVELY for updating codemaps and documentation. Generates docs/CODEMAPS/*, updates READMEs and guides. Backs the /update-codemaps and /update-docs commands. tools: Read, Write, Edit, Bash, Grep, Glob model: haiku --- From 4d8893f607d1a59990487ee4336a90bfd0f1c669 Mon Sep 17 00:00:00 2001 From: aoright <102943475+aoright@users.noreply.github.com> Date: Wed, 19 Aug 2026 10:25:37 +0800 Subject: [PATCH 2/7] fix(ci): add tool cache directories to check-unicode-safety ignore list Signed-off-by: aoright <102943475+aoright@users.noreply.github.com> --- scripts/ci/check-unicode-safety.js | 4 ++++ tests/scripts/check-unicode-safety.test.js | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/scripts/ci/check-unicode-safety.js b/scripts/ci/check-unicode-safety.js index 96c9ba54e..faa1ea566 100644 --- a/scripts/ci/check-unicode-safety.js +++ b/scripts/ci/check-unicode-safety.js @@ -15,6 +15,10 @@ const ignoredDirs = new Set([ '.dmux', '.next', '.venv', + '.pytest_cache', + '.ruff_cache', + '.turbo', + '.cache', 'coverage', 'venv', ]); diff --git a/tests/scripts/check-unicode-safety.test.js b/tests/scripts/check-unicode-safety.test.js index 012d6586a..6831b8683 100644 --- a/tests/scripts/check-unicode-safety.test.js +++ b/tests/scripts/check-unicode-safety.test.js @@ -198,6 +198,24 @@ if ( passed++; else failed++; +if ( + test('skips tool cache directories (.pytest_cache, .ruff_cache, .turbo, .cache)', () => { + const root = makeTempRoot('ecc-unicode-cache-'); + for (const cacheDir of ['.pytest_cache', '.ruff_cache', '.turbo', '.cache']) { + fs.mkdirSync(path.join(root, cacheDir), { recursive: true }); + fs.writeFileSync( + path.join(root, cacheDir, 'cache-data.json'), + `{"cached": "${rocketEmoji}"}\n` + ); + } + + const result = runCheck(root); + assert.strictEqual(result.status, 0, result.stdout + result.stderr); + }) +) + passed++; +else failed++; + console.log(`\nPassed: ${passed}`); console.log(`Failed: ${failed}`); process.exit(failed > 0 ? 1 : 0); From ea2ec0d24911ad08b4fbddc1cf40d786576706f2 Mon Sep 17 00:00:00 2001 From: Bechor Simhaev Date: Thu, 6 Aug 2026 14:37:42 +0300 Subject: [PATCH 3/7] fix(commands): use `allowed-tools`, not `allowed_tools` Nine command files spell the key with an underscore while six other files in this repository already use `allowed-tools`. Claude Code reads the hyphenated form, so the underscored key is unrecognized and the tool pre-approval it is meant to grant never applies. --- .claude/commands/add-language-rules.md | 2 +- .claude/commands/database-migration.md | 2 +- .claude/commands/feature-development.md | 2 +- commands/marketing-campaign.md | 2 +- commands/skill-create.md | 2 +- docs/es/commands/skill-create.md | 2 +- docs/ja-JP/commands/skill-create.md | 2 +- docs/tr/commands/skill-create.md | 2 +- docs/zh-CN/commands/skill-create.md | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.claude/commands/add-language-rules.md b/.claude/commands/add-language-rules.md index 4d17abfca..4f34a2c2d 100644 --- a/.claude/commands/add-language-rules.md +++ b/.claude/commands/add-language-rules.md @@ -1,7 +1,7 @@ --- name: add-language-rules description: Workflow command scaffold for add-language-rules in everything-claude-code. -allowed_tools: ["Bash", "Read", "Write", "Grep", "Glob"] +allowed-tools: ["Bash", "Read", "Write", "Grep", "Glob"] --- # /add-language-rules diff --git a/.claude/commands/database-migration.md b/.claude/commands/database-migration.md index 855f94ec8..a8fdb23dd 100644 --- a/.claude/commands/database-migration.md +++ b/.claude/commands/database-migration.md @@ -1,7 +1,7 @@ --- name: database-migration description: Workflow command scaffold for database-migration in everything-claude-code. -allowed_tools: ["Bash", "Read", "Write", "Grep", "Glob"] +allowed-tools: ["Bash", "Read", "Write", "Grep", "Glob"] --- # /database-migration diff --git a/.claude/commands/feature-development.md b/.claude/commands/feature-development.md index 864a88015..785eb0879 100644 --- a/.claude/commands/feature-development.md +++ b/.claude/commands/feature-development.md @@ -1,7 +1,7 @@ --- name: feature-development description: Workflow command scaffold for feature-development in everything-claude-code. -allowed_tools: ["Bash", "Read", "Write", "Grep", "Glob"] +allowed-tools: ["Bash", "Read", "Write", "Grep", "Glob"] --- # /feature-development diff --git a/commands/marketing-campaign.md b/commands/marketing-campaign.md index b26237b25..832db419d 100644 --- a/commands/marketing-campaign.md +++ b/commands/marketing-campaign.md @@ -1,6 +1,6 @@ --- description: Plan and execute a full marketing campaign. Accepts a product brief and returns positioning, landing page copy, email sequence, social posts, ad variants, video scripts, and a content calendar. Can also review existing copy for conversion quality. -allowed_tools: ["Read", "Grep", "Glob", "WebSearch", "WebFetch", "Write"] +allowed-tools: ["Read", "Grep", "Glob", "WebSearch", "WebFetch", "Write"] --- # /marketing-campaign diff --git a/commands/skill-create.md b/commands/skill-create.md index aeeeec26d..8fc53f086 100644 --- a/commands/skill-create.md +++ b/commands/skill-create.md @@ -1,7 +1,7 @@ --- name: skill-create description: Analyze local git history to extract coding patterns and generate SKILL.md files. Local version of the Skill Creator GitHub App. -allowed_tools: ["Bash", "Read", "Write", "Grep", "Glob"] +allowed-tools: ["Bash", "Read", "Write", "Grep", "Glob"] --- # /skill-create - Local Skill Generation diff --git a/docs/es/commands/skill-create.md b/docs/es/commands/skill-create.md index 11aaed51f..353e7dc30 100644 --- a/docs/es/commands/skill-create.md +++ b/docs/es/commands/skill-create.md @@ -1,7 +1,7 @@ --- name: skill-create description: Analizar el historial local de git para extraer patrones de codificación y generar archivos SKILL.md. Versión local de la Skill Creator GitHub App. -allowed_tools: ["Bash", "Read", "Write", "Grep", "Glob"] +allowed-tools: ["Bash", "Read", "Write", "Grep", "Glob"] --- # /skill-create - Generación Local de Skills diff --git a/docs/ja-JP/commands/skill-create.md b/docs/ja-JP/commands/skill-create.md index 0ec4865d3..6715c67d4 100644 --- a/docs/ja-JP/commands/skill-create.md +++ b/docs/ja-JP/commands/skill-create.md @@ -1,7 +1,7 @@ --- name: skill-create description: ローカルのgit履歴を分析してコーディングパターンを抽出し、SKILL.mdファイルを生成します。Skill Creator GitHub Appのローカル版です。 -allowed_tools: ["Bash", "Read", "Write", "Grep", "Glob"] +allowed-tools: ["Bash", "Read", "Write", "Grep", "Glob"] --- # /skill-create - ローカルスキル生成 diff --git a/docs/tr/commands/skill-create.md b/docs/tr/commands/skill-create.md index c2600de66..ae676de15 100644 --- a/docs/tr/commands/skill-create.md +++ b/docs/tr/commands/skill-create.md @@ -1,7 +1,7 @@ --- name: skill-create description: Kodlama desenlerini çıkarmak ve SKILL.md dosyaları oluşturmak için yerel git geçmişini analiz et. Skill Creator GitHub App'ın yerel versiyonu. -allowed_tools: ["Bash", "Read", "Write", "Grep", "Glob"] +allowed-tools: ["Bash", "Read", "Write", "Grep", "Glob"] --- # /skill-create - Yerel Skill Oluşturma diff --git a/docs/zh-CN/commands/skill-create.md b/docs/zh-CN/commands/skill-create.md index 10867c3fc..8ab5fc7b6 100644 --- a/docs/zh-CN/commands/skill-create.md +++ b/docs/zh-CN/commands/skill-create.md @@ -1,7 +1,7 @@ --- name: skill-create description: 分析本地Git历史以提取编码模式并生成SKILL.md文件。Skill Creator GitHub应用的本地版本。 -allowed_tools: ["Bash", "Read", "Write", "Grep", "Glob"] +allowed-tools: ["Bash", "Read", "Write", "Grep", "Glob"] --- # /skill-create - 本地技能生成 From 9d233aaa63977353a34236fbed03f806851439fe Mon Sep 17 00:00:00 2001 From: Aditya Datta Date: Sat, 18 Jul 2026 18:51:46 +0530 Subject: [PATCH 4/7] Trim provider names in prompt builder --- src/llm/prompt/builder.py | 2 +- tests/test_builder.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/llm/prompt/builder.py b/src/llm/prompt/builder.py index ffa0ed1c6..57ffd84ef 100644 --- a/src/llm/prompt/builder.py +++ b/src/llm/prompt/builder.py @@ -118,7 +118,7 @@ _PROVIDER_TEMPLATE_MAP: dict[str, dict[str, Any]] = { def get_provider_builder(provider_name: str) -> PromptBuilder: - config_dict = _PROVIDER_TEMPLATE_MAP.get(provider_name.lower(), {}) + config_dict = _PROVIDER_TEMPLATE_MAP.get(provider_name.strip().lower(), {}) config = PromptConfig(**config_dict) return PromptBuilder(config) diff --git a/tests/test_builder.py b/tests/test_builder.py index 439967e91..8fcd2e742 100644 --- a/tests/test_builder.py +++ b/tests/test_builder.py @@ -83,3 +83,13 @@ class TestAdaptMessagesForProvider: messages = [Message(role=Role.USER, content="Hello")] result = adapt_messages_for_provider(messages, "ollama") assert len(result) == 1 + + def test_provider_names_allow_outer_whitespace(self): + messages = [Message(role=Role.USER, content="Hello")] + tools = [ToolDefinition(name="search", description="Search the web", parameters={})] + + result = adapt_messages_for_provider(messages, " ollama ", tools) + + assert len(result) == 2 + assert result[0].role == Role.SYSTEM + assert "Available Tools" in result[0].content From d909dbb34820d72cc7b1be7c567b488cf0ac648a Mon Sep 17 00:00:00 2001 From: kriptoburak Date: Mon, 24 Aug 2026 02:25:46 +0300 Subject: [PATCH 5/7] docs(skills): refresh TweetClaw ClawHub source --- skills/social-publisher/SKILL.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/skills/social-publisher/SKILL.md b/skills/social-publisher/SKILL.md index 03d64584a..323496fed 100644 --- a/skills/social-publisher/SKILL.md +++ b/skills/social-publisher/SKILL.md @@ -69,11 +69,7 @@ socialclaw assets upload --file ./image.png --json Before building an X schedule, collect a source packet when the campaign depends on live audience signals rather than the draft alone. -For OpenClaw users who have already approved TweetClaw in their dependency policy, use the pinned package as a separate evidence source: - -```bash -openclaw plugins install npm:@xquik/tweetclaw@1.6.31 -``` +For OpenClaw users who approved TweetClaw in their dependency policy, install the reviewed ClawHub version with `openclaw plugins install clawhub:@xquik/tweetclaw@1.6.44`. OpenClaw records ClawHub and the exact version as the update source. Keep the selector pinned. Review and approve each version change before replacing it. Use it for public tweet search, reply search, follower export, user lookup, media review, monitors, or giveaway evidence. Keep the output as research input for `schedule.json`; SocialClaw remains responsible for validation, scheduling, publishing, and delivery status. Store TweetClaw credentials in its plugin config, not in `SC_API_KEY`, schedule files, or campaign assets. Do not install it as a default ECC or SocialClaw dependency. From 2a83f10644bc35550077089d98e9d6b4218ca1b7 Mon Sep 17 00:00:00 2001 From: haelyra <49814733+haelyra@users.noreply.github.com> Date: Fri, 28 Aug 2026 15:59:31 -0400 Subject: [PATCH 6/7] Revert "docs(skills): refresh TweetClaw ClawHub source" This reverts commit d909dbb34820d72cc7b1be7c567b488cf0ac648a. --- skills/social-publisher/SKILL.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/skills/social-publisher/SKILL.md b/skills/social-publisher/SKILL.md index 323496fed..03d64584a 100644 --- a/skills/social-publisher/SKILL.md +++ b/skills/social-publisher/SKILL.md @@ -69,7 +69,11 @@ socialclaw assets upload --file ./image.png --json Before building an X schedule, collect a source packet when the campaign depends on live audience signals rather than the draft alone. -For OpenClaw users who approved TweetClaw in their dependency policy, install the reviewed ClawHub version with `openclaw plugins install clawhub:@xquik/tweetclaw@1.6.44`. OpenClaw records ClawHub and the exact version as the update source. Keep the selector pinned. Review and approve each version change before replacing it. +For OpenClaw users who have already approved TweetClaw in their dependency policy, use the pinned package as a separate evidence source: + +```bash +openclaw plugins install npm:@xquik/tweetclaw@1.6.31 +``` Use it for public tweet search, reply search, follower export, user lookup, media review, monitors, or giveaway evidence. Keep the output as research input for `schedule.json`; SocialClaw remains responsible for validation, scheduling, publishing, and delivery status. Store TweetClaw credentials in its plugin config, not in `SC_API_KEY`, schedule files, or campaign assets. Do not install it as a default ECC or SocialClaw dependency. From cb9dfabcf0d952faa7b2894a604388550834438c Mon Sep 17 00:00:00 2001 From: Aditya Datta Date: Tue, 25 Aug 2026 11:39:39 +0530 Subject: [PATCH 7/7] test: pin Ollama whitespace normalization --- tests/test_builder.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_builder.py b/tests/test_builder.py index 8fcd2e742..f12982ba1 100644 --- a/tests/test_builder.py +++ b/tests/test_builder.py @@ -2,7 +2,7 @@ import pytest from llm.core.types import Message, Role, ToolDefinition from llm.prompt import PromptBuilder, adapt_messages_for_provider -from llm.prompt.builder import PromptConfig +from llm.prompt.builder import PromptConfig, get_provider_builder class TestPromptBuilder: @@ -90,6 +90,7 @@ class TestAdaptMessagesForProvider: result = adapt_messages_for_provider(messages, " ollama ", tools) + assert get_provider_builder(" ollama ").config.tool_format == "text" assert len(result) == 2 assert result[0].role == Role.SYSTEM assert "Available Tools" in result[0].content