Cooplens

Other
educationgaokao

Analyze Chinese-foreign cooperative undergraduate programs and institutions for parents with official-source verification, direct parent-facing answers before Markdown/PDF reports, local project/ranking indexes as discovery-only aids, multi-project comparison, province/score/rank candidate retrieval, and CoopLens S1/S2/S3 style report workflows. Use when Codex is asked for CoopLens, 中外合作办学项目/机构分析, 家长版择校报告, 单项目分析, 多项目对比, 按省份分数位次检索候选项目, 官方来源核验, or cooperative-program comparison.

Install

openclaw skills install @c-narcissus/cooplens-skill

CoopLens Skill v0.9.4

Use Order

  1. Before producing any CoopLens analysis, read references/core_workflow.md.
  2. When a task requires source collection, fact verification, ranking lookup, admission data, tuition/certificate checks, curriculum checks, employment/further-study data, or current-year approvals, also read references/source_methods.md.
  3. When generating or validating structured reports, read references/schema.md and prompts/report_modules.md.
  4. Use scripts/cooplens_core.py for deterministic local-index lookup, ranking-name lookup, package validation, privacy checks, report policy checks, and best-effort link checks.

Operating Contract

  • At the beginning of every CoopLens execution, before source collection or analysis, obtain the runtime date/time through an available tool instead of relying on model memory, file timestamps, cached years, or the user prompt. Preferred order: user_info.get_user_info when available for the user's local date/time; otherwise run python scripts/cooplens_core.py runtime-date or an equivalent system/Python date tool. Record current_date, current_year, timezone, date_source_tool, and checked_at internally.
  • In every direct chat answer, Markdown report, and PDF report, put a visible runtime-date line immediately after the fixed disclaimer: 检索执行日期:YYYY年MM月DD日(时区:...;通过工具获取) and use that year to decide current-year approvals, current-year admissions, and whether the latest completed admission year is available.
  • Treat data/project_major_index.json and data/rankings_local_compact.json as discovery and alias-matching aids only. Do not cite them as final user-facing sources.
  • Verify every key fact through opened official or authoritative original sources before writing it into a direct answer, Markdown report, or PDF.
  • Apply this globally: empty URLs, unreachable URLs, and sources whose content does not contain the corresponding fact are not valid evidence. If verification fails, do not write the data value; write only that no valid public source was verified.
  • All user-facing numeric data values must carry the approximate-prefix rule: write immediately before the value for scores, ranks, rankings, percentages/rates, tuition/fees, plan counts, enrollment counts, rank gaps, cost totals, course ratios, and calculated ranges in direct chat answers, Markdown, and PDF. Do not show a bare numeric data value such as 589分, 第133名, 30%, 4.8万元/年, or 120人; write 约589分, 约第133名, 约30%, 约4.8万元/年, 约120人.
  • Reference sources must never be text-only. Every user-facing source must be a clickable hyperlink or citation that opens to the original page/PDF/attachment, and the direct chat answer, Markdown, and PDF must all include sources for the same facts rather than hiding sources in only one format.
  • Important numeric indicators must be hyperlinks themselves, not merely followed by a source column or source list. For scores, ranks, rankings, rates, tuition/fees, plan counts, enrollment counts, rank gaps, cost totals, course ratios, industry scale, market size, revenue, profit, growth, headcount, recruitment counts and calculated ranges, the displayed value must be written as a clickable value such as [约589分](https://...), [约第133名](https://...), [约30%](https://...), or an HTML <a href="...">约589分</a> anchor. In direct ChatGPT chat where native citations cannot wrap the number, put the citation immediately after the numeric value as the fallback; Markdown and PDF should use the number itself as the hyperlink. If an important numeric value cannot be directly linked to a valid source, do not silently leave it bare; mark it as 【未满足:数字未直接链接来源】 or withhold the value.
  • Function 1 and Function 2 must include a 专业与行业前景分析 module, not just curriculum and employment rates. The module must map the major to its main industry/sub-industry, then analyze industry scale, prosperity/cycle signals, leading-company performance, 人工智能对行业的影响, 行业员工招聘的影响, and 如何应对. This analysis must be written from the future employment horizon of roughly 4–8 years after enrollment, not only the current hiring market: explicitly cover AI productivity impact, task automation/augmentation, whether future industry talent demand is likely to expand, shrink or structurally upgrade, and what a student should do to stay employable by graduation and early career. Every number in this module follows the same and numeric-self-link rules.
  • For 升学率、出国率、考研率、保研率, write the year, data source/link, and source-validity status. If project-level data is not public, state the checked year/source level and the unresolved boundary instead of omitting the item.
  • Start every user-facing text produced under this skill with the fixed disclaimer defined in references/core_workflow.md.
  • For functions 1/2/3, answer the parent directly in chat first, then generate Markdown/PDF from the same facts unless the user explicitly asks not to.
  • Keep final reports parent-facing: no internal claim ledger, no script output, no claim_id, no audit_status, no verified/unresolved labels, and no local-cache wording as evidence.

Packaging Contract

  • License the package as MIT-0; keep license.txt in the skill root.
  • Keep OpenClaw-style compatibility: a single skill folder with SKILL.md, frontmatter name and description, and plain-language operating instructions.
  • Do not include install hooks, post-install scripts, obfuscated commands, encoded shell payloads, hidden network startup behavior, secrets, credentials, or machine-specific absolute paths.
  • Require user-invoked validation for network checks; link-check only opens URLs explicitly present in a report file.

Helper Commands

Run from the skill root:

python scripts/cooplens_core.py runtime-date
python scripts/cooplens_core.py validate
python scripts/cooplens_core.py query --query "<学校/项目/专业>" --top 8
python scripts/cooplens_core.py rank-query --query "<学校或外方高校>" --top 8
python scripts/cooplens_core.py report-check <report.md>
python scripts/cooplens_core.py numeric-link-check <report.md> --annotate-out <marked.md>
python scripts/cooplens_core.py industry-check <report.md>
python scripts/cooplens_core.py future-employment-check <report.md>
python scripts/cooplens_core.py link-check <report.md> --max-urls 20