improve: simplify repository tooling, contribution templates, and packaged skill docs (#168708)

This commit is contained in:
Dallin Romney authored and GitHub committed 2026-10-10 22:17:17 -07:00
1 parent 610633211e
commit c57f3559f3
16 files changed
+20 -22

No files matched your search

+1 -1
View File
@@ -49,7 +49,7 @@ body:
id: repro
attributes:
label: Steps to reproduce
description: Provide the shortest deterministic repro path supported by direct observation. If the repro path cannot be grounded from the evidence, respond with exactly `NOT_ENOUGH_INFO`.
description: Provide the shortest repeatable reproduction steps supported by direct observation. If the steps cannot be grounded from the evidence, respond with exactly `NOT_ENOUGH_INFO`.
placeholder: |
1. Start OpenClaw 2026.2.17 with the attached config.
2. Send a Telegram thread reply in the affected chat.
+1 -1
View File
@@ -3,7 +3,7 @@ summary: "Generated inventory of OpenClaw plugins shipped in core, published ext
read_when:
- You are deciding whether a plugin ships in the core npm package or installs separately
- You are updating bundled plugin package metadata or release automation
- You need the canonical internal vs external plugin list
- You need the current internal vs external plugin list
title: "Plugin inventory"
---
+1 -1
View File
@@ -19,7 +19,7 @@ imports, and removes its fixture tree afterward. It accepts 1–1000 agents.
## What it measures
Each agent gets a real canonical SQLite database with four persisted sessions
Each agent gets a real SQLite database with four persisted sessions
and 512 KiB of synthetic padding in the existing cache table. The harness calls
the production `sweepCronRunSessions` sequentially, matching the scheduler's
per-agent await ordering without adding yields, accessor spies, or mocks.
+2 -2
View File
@@ -395,7 +395,7 @@ export function renderDependencyVulnerabilityGateMarkdownReport(
`- Coverage issues: ${report.coverage.upstream.issues.length}`,
`- GitHub-reviewed range reconciliations: ${report.coverage.upstream.reconciliations.length} (raw ranges retained in JSON coverage evidence)`,
"",
"An empty source response is not comprehensive vulnerability clearance. Unsupported or incomplete upstream checks are not evidence that a package is unaffected.",
"An empty source response is not a full vulnerability assessment. Unsupported or incomplete upstream checks are not evidence that a package is unaffected.",
"",
...report.graphs.flatMap((graph) => [
`### ${graph.lockfile}`,
@@ -511,7 +511,7 @@ export async function main(
`PASS dependency vulnerability gate: checked ${packageVersions} resolved ` +
`package versions across ${report.graphs.length} separate lockfile graphs; 0 known malware, ` +
`${advisories.length} non-blocking advisories recorded as release evidence; ${coverage}. ` +
"This is not comprehensive vulnerability clearance.\n",
"This is not a full vulnerability assessment.\n",
);
return 0;
}
+1 -1
View File
@@ -623,7 +623,7 @@ summary: "Generated inventory of OpenClaw plugins shipped in core, published ext
read_when:
- You are deciding whether a plugin ships in the core npm package or installs separately
- You are updating bundled plugin package metadata or release automation
- You need the canonical internal vs external plugin list
- You need the current internal vs external plugin list
title: "Plugin inventory"
---
+1 -1
View File
@@ -224,7 +224,7 @@ const candidateActionRules = Object.entries({
[candidateLabels.dirtyCandidate]: noisyPrMessage,
[candidateLabels.externalPluginCandidate]: thirdPartyExtensionMessage,
[candidateLabels.riskyInfra]:
"Closing this PR because it changes infra/CI/release/ops plumbing without maintainer context and validation. That surface is high-blast-radius; open an issue/RFC or get owner approval before sending a patch.",
"Closing this PR because it changes infra/CI/release/ops plumbing without maintainer context and validation. These changes can affect many development and release workflows; open an issue/RFC or get owner approval before sending a patch.",
[candidateLabels.docsDiscoverability]:
"Closing this PR because docs discoverability and community-plugin listing changes should go through ClawHub or a maintainer-owned docs plan, not drive-by core churn.",
[candidateLabels.lowSignalDocs]:
+1 -1
View File
@@ -1922,7 +1922,7 @@ ensure_default_node_active_shell() {
ui_error "Active Node.js must be ${NODE_SUPPORTED_VERSION_LABEL} but this shell is using ${active_version} (${active_path})"
print_active_node_paths || true
echo "Install/select Node.js ${NODE_DEFAULT_MAJOR} and ensure it is first on PATH, then rerun installer."
echo "Install/select Node.js ${NODE_DEFAULT_MAJOR} and check that it is first on PATH, then rerun installer."
return 1
}
+2 -2
View File
@@ -75,7 +75,7 @@ detect_provider() {
if command -v "$candidate" &>/dev/null; then
case "$candidate" in
podman)
fail "Podman is installed but not responding, and no responsive Docker daemon was found. Ensure the podman machine is running (podman machine start) or start Docker."
fail "Podman is installed but not responding, and no responsive Docker daemon was found. Start the podman machine (podman machine start) or start Docker."
;;
docker)
fail "Docker is installed but not running, and no responsive Podman machine was found. Start Docker or start Podman."
@@ -102,7 +102,7 @@ if ! "$CONTAINER_CMD" info &>/dev/null; then
if [[ "$CONTAINER_CMD" == "docker" ]]; then
fail "Docker daemon is not running. Start it and try again."
elif [[ "$CONTAINER_CMD" == "podman" ]]; then
fail "Podman is not responding. Ensure the podman machine is running (podman machine start)."
fail "Podman is not responding. Start the podman machine (podman machine start)."
fi
fi
+1 -1
View File
@@ -409,7 +409,7 @@ export function collectControlUiPackErrors(paths: Iterable<string>): string[] {
for (const requiredPath of REQUIRED_PACKED_PATHS) {
if (!packedPaths.has(requiredPath)) {
errors.push(
`npm package is missing required path "${requiredPath}". Ensure UI assets are built and included before publish.`,
`npm package is missing required path "${requiredPath}". Build and include UI assets before publishing.`,
);
}
}
+1 -1
View File
@@ -583,7 +583,7 @@ export async function runPnpmAuditProd({
reason: `No matching ${normalizedMinSeverity} or higher advisories returned by npm bulk for production dependencies.`,
};
stdout.write(
`${result.reason} Upstream repository advisories were not checked; this is not comprehensive vulnerability clearance.\n`,
`${result.reason} Upstream repository advisories were not checked; this is not a full vulnerability assessment.\n`,
);
return 0;
}
+1 -1
View File
@@ -996,7 +996,7 @@ function evidenceScorecardWarnings(
.filter((item) => (item.profile === "all" || item.profile === "release") && !item.scorecard)
.map(
(item) =>
`${item.path}: ${item.profile} profile qa-evidence.json does not include a scorecard field; run pnpm openclaw qa run --qa-profile ${item.profile} to produce deterministic scorecard rows`,
`${item.path}: ${item.profile} profile qa-evidence.json does not include a scorecard field; run pnpm openclaw qa run --qa-profile ${item.profile} to produce repeatable scorecard rows`,
),
...coverage.warnings,
];
+3 -3
View File
@@ -50,7 +50,7 @@ explanations, and dashboard content. Keep session and board organization here.
## Navigate and arrange the UI
Use `screen` for deterministic client commands:
Use `screen` for direct client commands:
- `navigate` to open a session by `sessionKey`;
- `sidebar_show` / `sidebar_hide` for the session sidebar;
@@ -59,8 +59,8 @@ Use `screen` for deterministic client commands:
docked panels.
`screen` broadcasts to every connected Control UI that advertises UI commands;
it cannot select one browser tab. Confirm the blast radius when several clients
may be open. If it reports no capable client, ask the user to open the Control
it cannot select one browser tab. Check which clients are connected before sending
a command. If it reports no capable client, ask the user to open the Control
UI and retry.
Use the in-app browser or an available browser-control tool when the task needs
+1 -1
View File
@@ -41,7 +41,7 @@ Use when:
Do not use when:
- Non-Hue smart devices (other brands) -> not supported
- HomeKit scenes or Shortcuts -> use Apple's ecosystem
- HomeKit scenes or Shortcuts -> use Apple's Home app or Shortcuts
- TV or entertainment system control
- Thermostat or HVAC
- Smart plugs (unless Hue smart plugs)
+1 -1
View File
@@ -21,7 +21,7 @@ description: "Author or review AgentSkills: create, repair, validate, or restruc
3. Structure the skill.
- Map shared ordered procedure to `SKILL.md`; end every step with a checkable completion criterion and finish with verification.
- Keep routing conditions in `description`; start the body with execution.
- Map branch-only detail to `references/`, deterministic helpers to `scripts/`, output resources to `assets/`, and optional UI metadata to `agents/`.
- Map branch-only detail to `references/`, repeatable helpers to `scripts/`, output resources to `assets/`, and optional UI metadata to `agents/`.
- **Done when:** every planned resource has one purpose and a direct pointer from `SKILL.md`.
4. Draft and persist.
@@ -304,9 +304,7 @@ describe("dependency-vulnerability-gate", () => {
});
expect(report.coverage.upstream.issues).toHaveLength(4);
expect(stdout.mock.calls.flat().join("")).toContain("public upstream partial");
expect(stdout.mock.calls.flat().join("")).toContain(
"not comprehensive vulnerability clearance",
);
expect(stdout.mock.calls.flat().join("")).toContain("not a full vulnerability assessment");
expect(stderr.mock.calls.flat().join("")).toContain(
"WARN incomplete upstream advisory coverage",
);
+1 -1
View File
@@ -779,7 +779,7 @@ ${packageNames.map((name) => ` ${name}@1.0.0: {}`).join("\n")}
expect(stdoutChunks.join("")).toContain(
"Upstream repository advisories were not checked",
);
expect(stdoutChunks.join("")).toContain("not comprehensive vulnerability clearance");
expect(stdoutChunks.join("")).toContain("not a full vulnerability assessment");
}
} finally {
vi.unstubAllEnvs();