* fix(skills): align skill-creator validation with the runtime schema
quick_validate.py rejected skills the runtime accepts and accepted skills
the runtime drops:
- Read SKILL.md with utf-8-sig so a BOM-prefixed file (Windows editors)
is not reported as missing frontmatter.
- Allow the DeerFlow frontmatter fields (argument-hint, required-secrets,
secrets-autonomous, version, author) that the runtime schema accepts.
- Reject empty name/description, which the loader drops.
- Validate required-secrets/secrets-autonomous shapes like the runtime
validator, so a malformed declaration fails before packaging.
Tests cover each case in backend/tests/test_skill_creator_quick_validate.py.
* fix(skills): close the remaining skill-creator parity gaps
- Read SKILL.md with utf-8-sig in utils.parse_skill_md too, so a BOM file
that quick_validate now accepts does not fail in run_eval/run_loop/
improve_description.
- Stringify YAML keys before the unexpected-key check, so mixed non-string
keys report cleanly instead of raising TypeError in sorted().
- Accept trailing whitespace on the frontmatter delimiters, matching the
runtime parser.
Each case has a regression test that fails on the previous commit.
* fix(skills): validate allowed-tools and stop over-rejecting compatibility
The reviewer found two remaining parity gaps:
- allowed-tools was not validated, while the runtime parser rejects
non-string list items, empty tool names, unmatched closing parentheses
and unclosed quotes. Mirror those shape rules.
- compatibility was rejected for non-string or >500-char values, but the
runtime validator never inspects it. Drop the check so this script does
not reject skills the runtime accepts.
Each case has a regression test that fails on the previous commit.
* fix(skills): reject unclosed parenthesized allowed-tools patterns
The runtime parser raises when the scan ends with depth > 0; the
quick_validate loop only checked for an unmatched closing parenthesis.
Add the depth check and move the unclosed-pattern case to the rejected
tests.
* fix(skill-creator): tolerate non-object timing measurements
Treat optional timing JSON values that are not objects as missing measurements so they cannot abort benchmark aggregation. Preserve grading durations, character-count fallback and recorded zeros; add regression coverage for both layouts and subsequent runs.
* fix(skill-creator): warn and validate timing measurements
* fix(skill-creator): tolerate unreadable timing files
---------
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
* fix(skill-creator): preserve recorded token counts in benchmarks
Read timing.json token measurements independently of grading duration and retain recorded zero values. Keep the existing character-count fallback for missing measurements and add benchmark/report regression coverage.
* fix(skillscan): distinguish token metrics from credentials
Recognize typed token counts, numeric benchmark summaries, and signed deltas so skill-creator documentation passes deterministic review. Preserve credential names, string values, duplicate-key detection, and cloud-token findings; add regression coverage and document the boundary.
---------
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
- Remove f-string prefix on 7 strings with no placeholders (F541)
in analyze.py, aggregate_benchmark.py, run_loop.py, generate_review.py
- Remove unused `os` import in quick_validate.py (F401)
Found by ruff via HUMMBL Arbiter (https://hummbl.io/audit).
* feat: add IM channels system for Feishu, Slack, and Telegram integration
Bridge external messaging platforms to DeerFlow via LangGraph Server with
async message bus, thread management, and per-channel configuration.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address review comments on IM channels system
Fix topic_id handling in store remove/list_entries and manager commands,
correct Telegram reply threading, remove unused imports/variables, update
docstrings and docs to match implementation, and prevent config mutation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* update skill creator
* fix im reply text
* fix comments
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>