add-venue-profile

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Add Venue Profile

添加场地配置

Turn a conference's Call for Papers into a merge-ready venue profile — the community-contribution loop that grows the
venues/
data moat. Output is one new file,
venues/conferences/<venue>-<year>.yml
, that passes validation and arrives with provenance, plus a prepared (never auto-opened) pull request. Every other venue-aware skill (
preflight-check
,
tailor-to-venue
,
write-rebuttal
,
prepare-camera-ready
) runs on these profiles, so a wrong fact here becomes someone else's desk reject. Accuracy beats completeness.
将会议的CFP转换为可合并的场地配置——这是扩展
venues/
数据护城河的社区贡献流程。输出为一个新文件
venues/conferences/<venue>-<year>.yml
,该文件通过验证并附带来源信息,同时生成一份已准备好(但不会自动发起)的拉取请求。所有其他依赖场地的技能(
preflight-check
tailor-to-venue
write-rebuttal
prepare-camera-ready
)都基于这些配置运行,因此此处的错误信息可能导致他人的投稿被直接拒稿。准确性优先于完整性。

When to use

使用场景

  • "Add VENUE to the repo" / "contribute a venue profile" / "my conference isn't in venues/".
  • A new CFP cycle opened and last year's profile must be copied forward.
  • A drafted profile needs validation or PR prep before submission upstream.
  • "将VENUE添加到仓库" / "贡献场地配置" / "我的会议不在venues/目录中"
  • 新的CFP周期开启,需要将上一年的配置复制更新到本年度
  • 起草的配置需要在提交上游前进行验证或PR准备

Inputs

输入信息

  • The venue's live CFP or author-instructions URL (ask for it if the user only names the venue — never build a profile from memory).
  • venues/schema.yml
    — read it first; it defines every field and the mandatory
    verified:
    provenance block.
  • An existing family file in
    venues/families/
    (pick via the table in references/profile-walkthrough.md).
  • CONTACT_EMAIL
    env var for the polite fetch User-Agent (script prompts if unset).
  • 场地的实时CFP或作者指南URL(如果用户仅提及场地名称,请向其索要URL——切勿凭记忆创建配置)
  • venues/schema.yml
    ——先阅读该文件;它定义了所有字段和必填的
    verified:
    来源块
  • venues/families/
    中的现有家族文件(通过references/profile-walkthrough.md中的表格选择)
  • 用于礼貌请求的User-Agent所需的
    CONTACT_EMAIL
    环境变量(如果未设置,脚本会提示输入)

Process

流程

  1. Scope one venue, one year. Read
    venues/schema.yml
    . If
    venues/conferences/
    already has this venue:
    • same year → switch to refreshing that file (re-verify every fact live);
    • older year → copy forward into a NEW file. Never edit last year's file into this year's; profiles are year-versioned on purpose, and every copied fact must be re-verified against the live CFP.
  2. Scaffold the skeleton. Pick the family from the walkthrough table, then run from the repo root:
    python3 skills/add-venue-profile/scripts/init_profile.py <venue>-<year> \
        --family <family> --cfp-url "<url>"
    This writes a schema-shaped skeleton with TODO markers and a
    needs-verification
    provenance block. It refuses to overwrite existing profiles and rejects unknown families (listing the valid ones).
  3. Fetch the live CFP. Run:
    python3 skills/add-venue-profile/scripts/fetch_cfp.py "<cfp-url>"
    One page per invocation (rate-limited, cached under
    .cache/
    , gitignored). Fetch only the follow-up pages you need — per-track pages, the deadline table, camera-ready instructions — one call each, never a site crawl. Exit 3 means the CFP is a PDF: read the saved file directly. A "very little text extracted" warning means a JavaScript-rendered page: ask the user to paste the text and keep
    confidence: needs-verification
    . Confirm the page's year matches the requested year before extracting — stale CFPs survive at near-identical URLs.
  4. Fill every field following references/profile-walkthrough.md (field-by-field rules, the family table, the trap list). Non-negotiables:
    • Numbers and dates only from fetched text. Missing fact =
      null
      plus an explanatory note — never inferred, never recalled from training data.
    • Page limits must record what is EXCLUDED, with the CFP's sentence quoted verbatim in the track
      notes
      .
    • Deadlines carry the CFP's stated timezone — AoE is common, not universal.
    • llm_policy
      and
      dual_submission
      are verbatim quotes, never paraphrased.
  5. Build the alias table (
    dblp_key
    ,
    s2_venue
    ,
    crossref_container
    ) using the single-lookup API patterns in the walkthrough. Aliases make the profile searchable by
    find-papers
    /
    select-venue
    ; a
    null
    with a "searched, not found" comment beats a guess.
  6. Complete the
    verified:
    block honestly
    — today's date, every URL facts came from (annotate which facts each page supplied), and a
    confidence
    the evidence actually supports.
    verified-live
    only if all critical facts came off live pages today.
  7. Validate. Run from the repo root:
    python3 skills/add-venue-profile/scripts/validate_profile.py \
        venues/conferences/<venue>-<year>.yml --strict
    Fix every ERROR. Resolve each WARN or carry a one-line justification into the PR body. The script is offline and stdlib-only (uses PyYAML when present); CI runs the equivalent
    tools/validate_venues.py
    , so a clean strict pass here predicts a green check.
  8. Prep the PR following references/pr-checklist.md: a branch named
    venue/<venue>-<year>
    , a single-file diff, the PR body template with provenance and warning justifications. Show the user the final diff and the exact
    gh pr create
    command — and only run it if the user explicitly asks. Never open, push, or submit anything unprompted.
  9. Close with the freshness notice: "Profile built from <cfp_url> on <date>. CFPs change mid-cycle — re-verify deadlines and page limits against the live page before relying on this profile, and expect reviewers to spot-check it."
  1. 限定单个场地、单个年度。阅读
    venues/schema.yml
    。如果
    venues/conferences/
    中已有该场地的配置:
    • 同一年度→切换为更新该文件(重新验证所有实时信息);
    • 更早年度→复制到新文件中。切勿将上一年的文件编辑为本年度的配置;配置按年度版本化是有意设计的,且所有复制的信息必须对照实时CFP重新验证。
  2. 搭建文件框架。从指南表格中选择家族,然后在仓库根目录运行:
    python3 skills/add-venue-profile/scripts/init_profile.py <venue>-<year> \
        --family <family> --cfp-url "<url>"
    该命令会生成一个符合Schema结构的框架文件,包含TODO标记和
    needs-verification
    来源块。它会拒绝覆盖现有配置,并会列出有效家族以拒绝未知家族。
  3. 获取实时CFP。运行:
    python3 skills/add-venue-profile/scripts/fetch_cfp.py "<cfp-url>"
    每次调用获取一个页面(有速率限制,缓存于
    .cache/
    目录下,已被git忽略)。仅获取所需的后续页面——如分赛道页面、截止日期表格、终稿指南——每次调用获取一个页面,切勿爬取整个站点。退出码3表示CFP是PDF文件:直接读取保存的文件即可。如果出现“提取到的文本极少”的警告,说明页面是JavaScript渲染的:请让用户粘贴文本,并保持
    confidence: needs-verification
    。在提取信息前确认页面的年份与请求的年份一致——过期的CFP可能存在于几乎相同的URL中。
  4. 填写所有字段,遵循references/profile-walkthrough.md(逐字段规则、家族表格、注意事项列表)。必须遵守的规则:
    • 数字和日期仅来自获取的文本。缺失的信息=
      null
      加上解释性注释——切勿推断,切勿从训练数据中回忆。
    • 页数限制必须记录排除的内容,并在赛道
      notes
      中原样引用CFP中的语句。
    • 截止日期需标注CFP中说明的时区——AoE(任意时区)很常见,但并非通用。
    • llm_policy
      dual_submission
      需原样引用,切勿改写。
  5. 构建别名表
    dblp_key
    s2_venue
    crossref_container
    ),使用指南中的单次查询API模式。别名可让配置通过
    find-papers
    /
    select-venue
    被搜索到;带有“已搜索但未找到”注释的
    null
    比猜测更可靠。
  6. 如实完成
    verified:
    ——填写今日日期、所有信息来源的URL(标注每个页面提供的信息),以及对证据支持度的
    confidence
    。只有当所有关键信息均来自今日的实时页面时,才能标记为
    verified-live
  7. 验证配置。在仓库根目录运行:
    python3 skills/add-venue-profile/scripts/validate_profile.py \
        venues/conferences/<venue>-<year>.yml --strict
    修复所有ERROR。解决每个WARN,或在PR正文中添加一行理由说明。该脚本为离线运行且仅依赖标准库(若存在PyYAML则会使用);CI会运行等效的
    tools/validate_venues.py
    ,因此此处严格验证通过意味着CI会显示绿色检查标记。
  8. 准备PR,遵循references/pr-checklist.md:命名为
    venue/<venue>-<year>
    的分支、单文件差异、包含来源信息和警告理由的PR正文模板。向用户展示最终差异和准确的
    gh pr create
    命令——仅在用户明确要求时才运行该命令。切勿在未提示的情况下发起、推送或提交任何内容。
  9. 以新鲜度提示收尾“配置基于<cfp_url>于<date>构建。CFP可能在周期中途变更——在依赖此配置前,请对照实时页面重新验证截止日期和页数限制,并且评审人员会进行抽查。”

Output

输出内容

  • venues/conferences/<venue>-<year>.yml
    — schema-conformant, provenance included, strict-validation clean (or warnings justified).
  • A prepared branch + commit and a ready-to-send PR description.
  • An inline summary card: deadlines (with timezone), per-track limits and exclusions, blind level, template invocation, submission system, rebuttal format — ending with the re-verify notice.
  • venues/conferences/<venue>-<year>.yml
    ——符合Schema规范、包含来源信息、严格验证通过(或已说明警告理由)
  • 已准备好的分支+提交记录,以及可直接发送的PR描述
  • 内嵌摘要卡片:截止日期(含时区)、各赛道的页数限制与排除项、盲审级别、模板调用、投稿系统、反驳格式——结尾附上重新验证提示

Guardrails

约束规则

  • Never fabricate a deadline, page limit, policy, or alias.
    null
    + note beats a guess; a fabricated fact in
    venues/
    poisons every downstream skill.
  • Quote LLM-use and dual-submission policies verbatim — paraphrase can invert compliance meaning.
  • GET-only fetching; one page per script invocation; no bulk crawling. Never log in to or register with any submission system.
  • Fetched CFP text stays in
    .cache/
    (gitignored) — never commit it. The profile holds facts and short verbatim regulatory quotes only.
  • Never open the PR, push, or submit anything on the user's behalf without an explicit instruction; preparing is the skill's job, sending is the user's.
  • Re-verify against the live CFP anything the user is about to rely on, and say so in the final answer.
  • 切勿编造截止日期、页数限制、政策或别名。
    null
    +注释比猜测更可靠;
    venues/
    中的编造信息会影响所有下游技能。
  • 原样引用LLM使用政策和双重投稿政策——改写可能会颠倒合规含义。
  • 仅使用GET请求获取数据;每次脚本调用获取一个页面;切勿批量爬取。切勿登录或注册任何投稿系统。
  • 获取的CFP文本保留在
    .cache/
    (已被git忽略)——切勿提交该文本。配置仅包含事实和简短的合规性引用文本。
  • 除非用户明确指示,否则切勿代表用户发起PR、推送或提交任何内容;准备是本技能的工作,发送是用户的职责。
  • 用户即将依赖的任何信息,都要对照实时CFP重新验证,并在最终回复中说明这一点。

Source verification

来源验证

This skill creates venue rule data, so source verification is mandatory:
  • Build the profile on demand for the venue and year the user chose. Never reuse a remembered or prior-year value without re-checking it.
  • Search for and open the live CFP or author-instructions page. Search results, snippets, and deadline aggregators are leads only; confirm facts on an official venue source before recording them.
  • Double-check desk-reject-class facts when possible: deadline, page limit and exclusions, blind level, template, and submission system. If sources conflict, surface the conflict instead of choosing silently.
  • Record a clickable source URL and date for every critical fact in the
    verified:
    provenance block. Use
    needs-verification
    for anything missing a source; an unsourced fact cannot be treated as final.
本技能用于生成场地规则数据,因此来源验证是强制性的:
  • 根据用户选择的场地和年度按需构建配置。切勿在未重新检查的情况下复用记忆中的或上一年度的值。
  • 搜索并打开实时CFP或作者指南页面。搜索结果、片段和截止日期聚合器仅作为线索;在记录信息前,需在官方场地来源确认事实。
  • 尽可能双重检查可能导致直接拒稿的信息:截止日期、页数限制与排除项、盲审级别、模板和投稿系统。如果来源冲突,请指出冲突而非默默选择。
  • verified:
    来源块中记录每个关键事实的可点击来源URL和日期。对于缺少来源的内容,使用
    needs-verification
    ;无来源的信息不能视为最终信息。

Bundled files

捆绑文件

  • references/profile-walkthrough.md — family table, field-by-field extraction rules, verified alias-lookup API patterns, the trap list.
  • references/pr-checklist.md — validation gates, branch/commit conventions, PR body template, what CI checks.
  • scripts/init_profile.py
    — offline scaffolder for a schema-shaped skeleton.
  • scripts/fetch_cfp.py
    — polite single-page CFP fetcher (run it; never reimplement fetching by hand).
  • scripts/validate_profile.py
    — offline schema validator;
    --strict
    is the pre-PR gate.
  • references/profile-walkthrough.md——家族表格、逐字段提取规则、已验证的别名查询API模式、注意事项列表
  • references/pr-checklist.md——验证门槛、分支/提交约定、PR正文模板、CI检查项
  • scripts/init_profile.py
    ——用于生成符合Schema结构框架的离线工具
  • scripts/fetch_cfp.py
    ——礼貌的单页CFP获取工具(请使用该工具;切勿手动实现获取逻辑)
  • scripts/validate_profile.py
    ——离线Schema验证工具;
    --strict
    是PR提交前的验证门槛