Install
openclaw skills install @englandtong/web-search-rulesVerify and govern web research intake
openclaw skills install @englandtong/web-search-rulesVersion: 4.1.0
Use this skill to control the path from a research question to reusable evidence:
question -> search plan -> discovery -> open sources -> verify claims
-> deduplicate -> classify -> stage -> review -> archive -> audit
Respond in the user's language. Keep source records and machine-readable enum values in English.
This skill owns web-research evidence and research-intake state. It does not own project targets, coding-loop state, or final QA acceptance.
project-lifecycle-navigator for project discovery or direction review.daily-workflow for explicit checkpoint, wrap-up, or handoff memory.cms-project-governance for formal target, Work Order, Controller, or QA state.agent-loop-engineering for authorized implementation and verification.ai-workflow-os only to route a combined request; this skill remains authoritative for web-research intake.Read SECURITY.md before any local write, cloud write, browser automation, deletion, or migration.
discovered at best. None of them is an opened source.Extract:
Do not browse merely to satisfy the intake system. If the user only asks to organize supplied sources, start from those sources. If facts may have changed, verify them with current sources before presenting them as current.
For each material claim, identify the preferred source class:
For technical questions, prefer official documentation and primary research. For high-stakes medical, legal, financial, security, or regulatory claims, use current authoritative sources and state limits clearly.
Treat search-result snippets as discovery evidence only. Open the source and inspect the relevant passage before using it to support a claim.
Use these evidence states:
discovered: result was found but not opened;opened: source content was inspected;supported: inspected source directly supports the claim;corroborated: an independent source also supports the claim;conflicted: credible sources disagree;cannot-confirm: available evidence is insufficient.Never promote discovered to supported from a title or snippet alone.
Keep both original and normalized URLs. Normalize conservatively, remove tracking parameters when safe, and deduplicate exact or canonical equivalents. Do not merge records merely because titles are similar.
Read references/rule-engine.md for normalization, matching, conflict handling, and claim/source separation.
Evaluate at three separate levels:
Use these source trust levels:
| Level | Default behavior |
|---|---|
trusted | May auto-stage. Still verify freshness, relevance, and claim support. |
allowed | May stage; review before archive. |
review | Stage metadata or summary only; require review before full archive. |
blocked | Do not fetch full content or archive unless the user explicitly overrides for this run. |
Domain trust is not claim truth. A trusted site can contain outdated, opinionated, incomplete, or irrelevant material.
Metadata is not claim truth either. A declared date can be a template default, a declared author can be an aggregator, and an embedded language tag can be wrong. When a conclusion depends on a metadata field, open the artifact and confirm it, or mark the claim cannot-confirm.
One source supports awareness, not a conclusion. Before a claim is recorded as supported, either:
single-source and state what would change the assessment.Numeric, legal, medical, pricing, version, and deadline claims always require a primary source read directly, never a restatement. Do not average conflicting values into a middle number; preserve the conflict.
Supported rule types:
exact_urldomainpath_prefixkeyword for trusted metadata onlytopicsource_typeClassification priority:
blocked rule;trusted rule;allowed rule;review default.If same-priority rules conflict, stop classification for the affected items and ask the user. Do not silently choose the broader rule.
Use explicit intake states:
discovered -> opened -> extracted -> staged -> needs-review -> approved -> archived
| | |
+-> blocked +-> rejected +-> superseded
Each staged record should include:
{
"record_id": "WEB-YYYYMMDD-001",
"original_url": "",
"normalized_url": "",
"title": "",
"publisher": "",
"published_at": "",
"retrieved_at": "",
"topic": "",
"source_type": "",
"trust_level": "review",
"evidence_state": "opened",
"status": "needs-review",
"claims_supported": [],
"conflicts": [],
"summary": "",
"rule_applied": "",
"decision_reason": "",
"archive_target": ""
}
Keep facts, source statements, interpretation, assumptions, and recommendations separate.
Before archiving, confirm that:
Archive a concise record with provenance and a direct link. Do not archive unsupported agent conclusions as if they were source facts.
Append audit records only after an operation actually occurs. Record the operation, item count, source/target, confirmation reference, result, timestamp, and failures. Do not log secrets or full sensitive bodies.
Use this canonical directory when persistent configuration is requested:
~/.skill-config/web-search-rules/
Minimum config.json:
{
"version": "4.1.0",
"platform": "obsidian",
"rules_store": "search-url-library",
"staging_store": "unorganized-search-content",
"confirmation_policy": "standard",
"default_trust_level": "review",
"cloud_upload_policy": "confirm_each_batch",
"adapter": {
"name": "obsidian",
"method": "filesystem",
"cloud_upload": false,
"capabilities": ["read", "write", "list", "stage", "archive"]
}
}
Reject or remove secret-like fields. Detect legacy configs read-only, show a migration comparison, copy only confirmed non-secret data, and never delete the source automatically.
Before an adapter-specific operation:
Read references/platform-adapters.md and only the selected platform's operation file. Do not load all platform files by default.
| Action | Default |
|---|---|
read | May proceed within the user's request. |
local_stage | May proceed only when local persistence is requested or already configured. |
rule_write | Confirm the rule and its scope. |
archive | Confirm unless a narrow archive policy already covers it. |
cloud_upload | Confirm platform, target, content class, and batch count. |
browser_automation | Confirm platform/session and require manual login. |
delete | Itemized dry run plus second confirmation. |
migrate | Source/target manifest, copy-first plan, validation, and second confirmation. |
Report concise counts and evidence quality:
Research Intake Report
Question: ...
Results discovered/opened: 24 / 12
Supported claims: 7
Conflicts or cannot-confirm items: 2
Deduplicated records: 10
Staged / needs review / blocked: 5 / 4 / 1
Archive or cloud write: Not executed
Next decision: confirm the 4 review items or refine the search.
Label unexecuted persistence or platform actions as Not Executed, never as successful.
references/rule-engine.md: URL normalization, rule priority, and claim-level evidence.references/platform-adapters.md: capability contract and platform selection.references/platform-comparison.md: privacy and collaboration tradeoffs.references/obsidian-operations.md: local vault operations.references/feishu-dingtalk-operations.md: Feishu and DingTalk operations.references/tencent-docs-operations.md: Tencent Docs operations.references/ima-operations.md: IMA operations.references/notebooklm-operations.md: NotebookLM high-risk flow.references/migration-and-testing.md: migration, dry runs, and release tests.references/examples.md: report and workflow examples.references/platform-operation-guide-zh.md: Chinese platform guidance.