fix(skills): add missing opening --- to taskflow and taskflow-inbox-triage SKILL.md frontmatter (openclaw#64469)

Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test src/agents/skills.bundled-frontmatter.test.ts

Co-authored-by: extrasmall0 <"258180677"+extrasmall0@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
This commit is contained in:
Extra Small
2026-04-10 12:59:55 -07:00
committed by GitHub
parent 0ebeee8b0d
commit abb4736267
4 changed files with 27 additions and 0 deletions

View File

@@ -28,6 +28,7 @@ Docs: https://docs.openclaw.ai
- Gateway/thread routing: preserve Slack, Telegram, Mattermost, and ACP parent-thread delivery targets so subagent, cron, and stream-relay completion messages land back in the originating thread or topic. (#54840, #57056, #63228, #63506) Thanks @yzzymt.
- Agents/timeouts: extend the default LLM idle window to 120s and keep silent no-token idle timeouts on recovery paths, so slow models can retry or fall back before users see an error.
- Gateway/agents: preserve configured model selection and richer `IDENTITY.md` content across agent create/update flows and workspace moves, and fail safely instead of silently overwriting unreadable identity files. (#61577) Thanks @samzong.
- Skills/TaskFlow: restore valid frontmatter fences for the bundled `taskflow` and `taskflow-inbox-triage` skills so they stay discoverable and loadable after updates. (#64469) Thanks @extrasmall0.
- Windows/exec: settle supervisor waits from child exit state after stdout and stderr drain even when `close` never arrives, so CLI commands stop hanging or dying with forced `SIGKILL` on Windows. (#64072) Thanks @obviyus.
- Browser/sandbox: prevent sandbox browser CDP startup hangs by recreating containers when the browser security hash changes and by waiting on the correct sandbox browser lifecycle. (#62873) Thanks @Syysean.
- iMessage/self-chat: distinguish normal DM outbound rows from true self-chat using `destination_caller_id` plus chat participants, while preserving multi-handle self-chat aliases so outbound DM replies stop looping back as inbound messages. (#61619) Thanks @neeravmakwana.

View File

@@ -1,3 +1,4 @@
---
name: taskflow-inbox-triage
description: Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
metadata: { "openclaw": { "emoji": "📥" } }

View File

@@ -1,3 +1,4 @@
---
name: taskflow
description: Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
metadata: { "openclaw": { "emoji": "🪝" } }

View File

@@ -0,0 +1,24 @@
import fs from "node:fs/promises";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { describe, expect, it } from "vitest";
import { parseFrontmatter } from "./skills/frontmatter.js";
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
describe("bundled taskflow skill frontmatter", () => {
it("keeps the taskflow skills parseable from their shipped files", async () => {
const skillPaths = [
"skills/taskflow/SKILL.md",
"skills/taskflow-inbox-triage/SKILL.md",
] as const;
for (const relativePath of skillPaths) {
const raw = await fs.readFile(path.join(repoRoot, relativePath), "utf8");
const frontmatter = parseFrontmatter(raw);
expect(frontmatter.name, relativePath).toBeTruthy();
expect(frontmatter.description, relativePath).toBeTruthy();
}
});
});