import fs from "node:fs" ;
import path from "node:path" ;
import { describe, expect, it } from "vitest" ;
const REPO_ROOT = path.resolve(import .meta.dirname, ".." , ".." );
type GuidanceCase = {
file: string;
required?: string[];
forbidden?: string[];
};
const CASES: GuidanceCase[] = [
{
file: "skills/session-logs/SKILL.md" ,
required: ["OPENCLAW_STATE_DIR" ],
forbidden: [
"for f in ~/.openclaw/agents/<agentId>/sessions/*.jsonl",
'rg -l "phrase" ~/.openclaw/agents/<agentId>/sessions/*.jsonl',
"~/.openclaw/agents/<agentId>/sessions/<id>.jsonl" ,
],
},
{
file: "skills/gh-issues/SKILL.md" ,
required: ["OPENCLAW_CONFIG_PATH" ],
forbidden: ["cat ~/.openclaw/openclaw.json" ],
},
{
file: "skills/canvas/SKILL.md" ,
required: ["OPENCLAW_CONFIG_PATH" ],
forbidden: ["cat ~/.openclaw/openclaw.json" ],
},
{
file: "skills/openai-whisper-api/SKILL.md" ,
required: ["OPENCLAW_CONFIG_PATH" ],
},
{
file: "skills/sherpa-onnx-tts/SKILL.md" ,
required: [
"OPENCLAW_STATE_DIR" ,
"OPENCLAW_CONFIG_PATH" ,
'STATE_DIR="${OPENCLAW_STATE_DIR:-$HOME/.openclaw}"' ,
],
forbidden: [
'SHERPA_ONNX_RUNTIME_DIR: "~/.openclaw/tools/sherpa-onnx-tts/runtime"' ,
'SHERPA_ONNX_MODEL_DIR: "~/.openclaw/tools/sherpa-onnx-tts/models/vits-piper-en_US-lessac-high"' ,
"<state-dir>" ,
],
},
{
file: "skills/coding-agent/SKILL.md" ,
required: ["OPENCLAW_STATE_DIR" ],
forbidden: ["NEVER start Codex in ~/.openclaw/" ],
},
];
describe("bundled skill env-path guidance" , () => {
it.each(CASES)(
"keeps $file aligned with OPENCLAW env overrides" ,
({ file, required, forbidden }) => {
const content = fs.readFileSync(path.join(REPO_ROOT, file), "utf8" );
for (const needle of required ?? []) {
expect(content).toContain(needle);
}
for (const needle of forbidden ?? []) {
expect(content).not.toContain(needle);
}
},
);
});
Messung V0.5 in Prozent C=97 H=94 G=95
¤ Dauer der Verarbeitung: 0.4 Sekunden
¤
*© Formatika GbR, Deutschland