{"id":"b4a56371-560b-4ad5-b0d1-2c88d3ecfd1d","entityType":"agent","slug":"clawhub-zxt-invoice-dedup","name":"发票查重","canonicalUrl":"https://www.xpersona.co/agent/clawhub-zxt-invoice-dedup","canonicalPath":"/agent/clawhub-zxt-invoice-dedup","generatedAt":"2026-10-11T17:42:16.018Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T14:38:15.104Z","emptyReason":null},"description":"发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。 Skill: 发票查重 Owner: zxt Summary: 发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。 Tags: latest:1.0.1 Version history: v1.0.1 | 2026-06-17T07:36:30.297Z | user 主体迁移 v1.0.0 | 2026-05-25T08:05:15.744Z | user 正式版 v1.0.0-beta | 2026-05-22T01:07:07.677Z | user - 修改了 apiKey 的申请地址，由 https://test-eqjs.es366.cn/jxplusSkill/ 更新为 https://skill.quandianfapiao.com/ - 同步更新了用户指引、环境配置和 apiKey 提示信息中的平台注册、申请流程网址 - 其余技能功能、参数说明与接口文档保持不变 v1.0.0-al","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s176y1zx801xf9nrys54e3xztd88t1jf:invoice-dedup","sourceUrl":"https://clawhub.ai/zxt/invoice-dedup","homepage":"https://clawhub.ai/zxt/skills/invoice-dedup","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/zxt/invoice-dedup","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/zxt/skills/invoice-dedup","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。 Skill: 发票查重 Owner: zxt Summary: 发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。 Tags: latest:1.0.1 Version history: v1.0.1 | 2"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:38:15.104Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:38:15.104Z","emptyReason":null},"stars":null,"forks":null,"downloads":1048,"packageName":null,"latestVersion":"1.0.1","tractionLabel":"1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:38:14.977Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T14:38:15.104Z","lastCrawledAt":"2026-10-11T14:38:14.977Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T14:38:14.977Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.1","createdAt":"2026-06-17T07:36:30.297Z","changelog":"主体迁移","fileCount":5,"zipByteSize":8288},{"version":"1.0.0","createdAt":"2026-05-25T08:05:15.744Z","changelog":"正式版","fileCount":5,"zipByteSize":8146},{"version":"1.0.0-beta","createdAt":"2026-05-22T01:07:07.677Z","changelog":"- 修改了 apiKey 的申请地址，由 https://test-eqjs.es366.cn/jxplusSkill/ 更新为 https://skill.quandianfapiao.com/ - 同步更新了用户指引、环境配置和 apiKey 提示信息中的平台注册、申请流程网址 - 其余技能功能、参数说明与接口文档保持不变","fileCount":4,"zipByteSize":7027},{"version":"1.0.0-alpha","createdAt":"2026-05-21T09:15:28.661Z","changelog":"- 初始发布","fileCount":4,"zipByteSize":7025}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s176y1zx801xf9nrys54e3xztd88t1jf:invoice-dedup","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zxt-invoice-dedup/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zxt-invoice-dedup/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zxt-invoice-dedup/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-zxt-invoice-dedup/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-zxt-invoice-dedup/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-zxt-invoice-dedup/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T17:42:16.017Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zxt-invoice-dedup/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zxt-invoice-dedup/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zxt-invoice-dedup/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zxt-invoice-dedup/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T14:38:15.104Z","emptyReason":null},"readme":"Skill: 发票查重\n\nOwner: zxt\n\nSummary: 发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。\n\nTags: latest:1.0.1\n\nVersion history:\n\nv1.0.1 | 2026-06-17T07:36:30.297Z | user\n\n主体迁移\n\nv1.0.0 | 2026-05-25T08:05:15.744Z | user\n\n正式版\n\nv1.0.0-beta | 2026-05-22T01:07:07.677Z | user\n\n- 修改了 apiKey 的申请地址，由 https://test-eqjs.es366.cn/jxplusSkill/ 更新为 https://skill.quandianfapiao.com/\n- 同步更新了用户指引、环境配置和 apiKey 提示信息中的平台注册、申请流程网址\n- 其余技能功能、参数说明与接口文档保持不变\n\nv1.0.0-alpha | 2026-05-21T09:15:28.661Z | user\n\n- 初始发布\n\nArchive index:\n\nArchive v1.0.1: 5 files, 8288 bytes\n\nFiles: common.py (4673b), invoice_dedup.py (6166b), skill-card.md (2128b), SKILL.md (7884b), _meta.json (132b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: invoice-dedup\ndescription: 发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。\n---\n\n# 发票查重技能\n\n使用此技能将发票信息录入系统进行查重，或查询已有的查重记录。\n\n## 使用场景\n\n满足以下需求时使用：\n\n- 录入发票信息并检查是否与已有记录重复。\n- 按日期范围查询已录入的查重记录。\n\n## 触发语句示例\n\n以下用户输入应触发此技能：\n\n- 帮我查重这张发票 / 发票查重 / 这张发票有没有重复\n- 录入发票进行查重 / 录入查重\n- 查一下发票 26117000000698099579 是否重复\n- 查询查重记录 / 看一下查重记录 / 查重历史\n- 查一下5月份的查重记录\n- 列出最近的查重记录\n- 这张发票重不重复\n\n## 输入参数\n\n执行前准备以下参数：\n\n- apiKey（必填）：通过 https://skill.quandianfapiao.com/ 申请。\n\n### 查重录入 (enter)\n\n- 发票号码（必填）\n- 开票日期（必填，格式 YYYY-MM-DD）\n- 发票代码（可选）\n- 价税合计（可选）\n\n### 查重记录查询 (query)\n\n- 采集日期开始（可选，格式 YYYY-MM-DD）\n- 采集日期结束（可选，格式 YYYY-MM-DD）\n- 开票日期开始（可选，格式 YYYY-MM-DD）\n- 开票日期结束（可选，格式 YYYY-MM-DD）\n- 页码（可选，默认 1）\n- 每页条数（可选，默认 10）\n\n## 执行流程\n\n**前置检查（最高优先级）：检查环境变量 `ZXT_API_KEY` 是否已设置。**\n\n注意：当前 shell 会话可能未继承 Windows 用户级环境变量，必须按以下方式检查，不能仅依赖 `$ZXT_API_KEY`：\n\n- Windows：执行 `powershell -Command \"[System.Environment]::GetEnvironmentVariable('ZXT_API_KEY', 'User')\"` 获取用户级环境变量值，同时检查 `$ZXT_API_KEY`。\n- macOS/Linux：检查 `$ZXT_API_KEY` 即可。\n\n如果以上检查结果均为空，禁止执行任何后续操作，立即向用户输出以下提示并停止：\n\n> 您需要完成以下三步，即可自动配置并执行技能：\n>\n> 1. **注册账号**\n>    访问中兴通简税Skill平台：https://skill.quandianfapiao.com/ 完成注册。\n>\n> 2. **申请 apiKey**\n>    登录后进入\"技能中心\"，复制您的 apiKey。\n>\n> 3. **提供 apiKey**\n>    将复制的 apiKey 发送给我，我将为您完成配置并立即执行技能。\n\n**严格限制：前置检查未通过时，禁止执行任何其他动作，包括但不限于：**\n\n- 禁止读取文件（Excel、PDF、图片等）\n- 禁止调用任何 API\n- 禁止执行任何脚本或命令\n- 禁止进行参数解析或预处理\n\n**只允许输出提示信息，然后停止，等待用户提供 apiKey。**\n\n用户提供 apiKey 后，写入系统环境变量并使当前会话生效：\n\n- Windows：`setx ZXT_API_KEY <apiKey>` 写入用户级环境变量，然后执行 `export ZXT_API_KEY=<apiKey>` 使当前会话生效。\n- macOS/Linux：将 `export ZXT_API_KEY=<apiKey>` 追加到 `~/.bashrc` 或 `~/.zshrc`（根据用户使用的 shell），同时执行 `export ZXT_API_KEY=<apiKey>` 使当前会话生效。\n\n环境变量就绪后，继续以下步骤：\n\n1. 校验必填参数存在且非空。**任何必填参数缺失时必须立即停止，禁止跳过或使用空值继续执行。**\n   - 缺少发票号码或开票日期：停止并提示用户提供对应参数。\n2. 通过 python 执行脚本调用远程 API（Windows 下使用 `python`，macOS/Linux 使用 `python3`），脚本优先使用 `--api-key` 参数，未传则回退读取环境变量 `ZXT_API_KEY`。\n3. 检查返回的 status 字段，非 200 时停止并将错误信息展示给用户，禁止重试或忽略。\n4. 解析返回结果并以可读格式输出。\n\n## 请求参数说明\n\n### 查重录入 — POST /api/jxplus/zxtSkill/repeat/enterSkillRepeatInvoice\n\n| 参数          | 类型   | 必填 | 说明                   |\n| ------------- | ------ | ---- | ---------------------- |\n| apiKey        | string | 是   | apiKey                 |\n| invoiceNumber | string | 是   | 发票号码               |\n| invoiceDate   | string | 是   | 开票日期（YYYY-MM-DD） |\n| invoiceCode   | string | 否   | 发票代码               |\n| jshj          | string | 否   | 价税合计               |\n\n### 查重记录查询 — POST /api/jxplus/zxtSkill/repeat/getRepeatInvoiceList\n\n| 参数            | 类型   | 必填 | 说明                     |\n| --------------- | ------ | ---- | ------------------------ |\n| apiKey          | string | 是   | apiKey                   |\n| startDate       | string | 否   | 采集日期开始（YYYY-MM-DD）|\n| endDate         | string | 否   | 采集日期结束（YYYY-MM-DD）|\n| startKprqDate   | string | 否   | 开票日期开始（YYYY-MM-DD）|\n| endKprqDate     | string | 否   | 开票日期结束（YYYY-MM-DD）|\n| pageNo          | string | 否   | 页码，默认 1             |\n| pageSize        | string | 否   | 每页条数，默认 10        |\n\n## 返回说明\n\n### 查重录入返回字段\n\n| 字段           | 说明                       |\n| -------------- | -------------------------- |\n| invoiceNumber  | 发票号码                   |\n| invoiceCode    | 发票代码                   |\n| invoiceDate    | 开票日期                   |\n| jshj           | 价税合计                   |\n| repeatType     | 重复类型：0 不重复，1 重复 |\n| repeatTypeName | 不重复 / 重复              |\n| collectTime    | 采集时间                   |\n\n### 查重记录查询返回\n\n返回分页列表，每条记录包含上述字段，额外包含 `total`（总条数）。\n\n## 异常状态码\n\n| 状态码 | 说明                   |\n| ------ | ---------------------- |\n| 400    | 请求参数错误           |\n| 300    | 参数为空或格式错误     |\n| 305    | 无权访问该接口         |\n| 307    | 消费失败，授权余次不足 |\n| 308    | 超出接口调用次数       |\n| 500    | 系统异常               |\n\n## 接口请求示例\n\n### 查重录入 — POST /api/jxplus/zxtSkill/repeat/enterSkillRepeatInvoice\n\n请求：\n\n```json\n{\n  \"data\": {\n    \"apiKey\": \"sk-sg-9EVbsJLJnlKVLaSO4FZtPUVFysbFL\",\n    \"invoiceNumber\": \"26117000000698099579\",\n    \"invoiceDate\": \"2026-05-14\"\n  }\n}\n```\n\n成功返回：\n\n```json\n{\n  \"status\": \"200\",\n  \"message\": \"成功\",\n  \"data\": {\n    \"invoiceCode\": null,\n    \"invoiceNumber\": \"26117000000698099579\",\n    \"invoiceDate\": null,\n    \"jshj\": null,\n    \"repeatType\": \"0\",\n    \"repeatTypeName\": \"不重复\",\n    \"collectTime\": \"2026-05-18 08:58:28\"\n  },\n  \"logId\": \"2056177564666896386\"\n}\n```\n\n异常返回：\n\n```json\n{\n  \"status\": \"400\",\n  \"message\": \"开票日期不能为空\",\n  \"data\": \"\"\n}\n```\n\n### 查重记录查询 — POST /api/jxplus/zxtSkill/repeat/getRepeatInvoiceList\n\n请求：\n\n```json\n{\n  \"data\": {\n    \"apiKey\": \"sk-sg-9EVbsJLJnlKVLaSO4FZtPUVFysbFL\",\n    \"startDate\": \"2026-05-01\",\n    \"endDate\": \"2026-05-31\",\n    \"pageNo\": \"1\",\n    \"pageSize\": \"10\"\n  }\n}\n```\n\n成功返回：\n\n```json\n{\n  \"status\": \"200\",\n  \"message\": \"成功\",\n  \"data\": {\n    \"pageNo\": \"1\",\n    \"pageSize\": \"10\",\n    \"total\": \"1\",\n    \"list\": [\n      {\n        \"invoiceCode\": null,\n        \"invoiceNumber\": \"26117000000698099579\",\n        \"invoiceDate\": \"2026-05-14\",\n        \"jshj\": null,\n        \"repeatType\": \"0\",\n        \"repeatTypeName\": \"不重复\",\n        \"collectTime\": \"2026-05-18 08:59:19\"\n      }\n    ]\n  },\n  \"logId\": \"2056182604139966466\"\n}\n```\n\n## 命令示例\n\n查重录入：\n\n```bash\npython3 .claude/skills/invoice-dedup/invoice_dedup.py --api-key \"<apiKey>\" enter --invoice-number \"26117000000698099579\" --invoice-date \"2026-05-14\"\n```\n\n查重记录查询：\n\n```bash\npython3 .claude/skills/invoice-dedup/invoice_dedup.py --api-key \"<apiKey>\" query --start-date \"2026-05-01\" --end-date \"2026-05-31\" --page-no \"1\" --page-size \"10\"\n```\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn78wqnm3g9mqn7q7x83dh3jvn874tn3\",\n  \"slug\": \"invoice-dedup\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1781681790297\n}\n\nFile v1.0.1:skill-card.md\n\n## Description:\n\n发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zxt](https://clawhub.ai/user/zxt)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and business operators use this skill to submit invoice details for duplicate-entry checks and to query existing duplicate-check records by date range.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill sends invoice details and an API key to an external invoice service.\n\nMitigation: Use the skill only when sending those invoice details to the stated service is approved, and use a scoped, revocable API key.\n\nRisk: The security evidence reports unsafe API-key handling, including chat-based key collection and persistence in user shell configuration.\n\nMitigation: Do not paste real API keys into chat; prefer a proper secret manager or a temporary environment variable limited to the current run.\n\nRisk: The security evidence reports an undeclared file-upload helper in the artifact.\n\nMitigation: Review or remove the upload helper before deployment and avoid granting file access unless the upload behavior is explicitly required and documented.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/zxt/skills/invoice-dedup)\n- [ZXT Skill platform](https://skill.quandianfapiao.com/)\n\n## Skill Output:\n\n**Output Type(s):** [text, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown text with shell command examples and readable API results]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires a ZXT_API_KEY or apiKey argument and sends invoice details to the configured external service.]\n\n## Skill Version(s):\n\n1.0.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.0: 5 files, 8146 bytes\n\nFiles: common.py (4673b), invoice_dedup.py (6166b), skill-card.md (2081b), SKILL.md (7884b), _meta.json (132b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: invoice-dedup\ndescription: 发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。\n---\n\n# 发票查重技能\n\n使用此技能将发票信息录入系统进行查重，或查询已有的查重记录。\n\n## 使用场景\n\n满足以下需求时使用：\n\n- 录入发票信息并检查是否与已有记录重复。\n- 按日期范围查询已录入的查重记录。\n\n## 触发语句示例\n\n以下用户输入应触发此技能：\n\n- 帮我查重这张发票 / 发票查重 / 这张发票有没有重复\n- 录入发票进行查重 / 录入查重\n- 查一下发票 26117000000698099579 是否重复\n- 查询查重记录 / 看一下查重记录 / 查重历史\n- 查一下5月份的查重记录\n- 列出最近的查重记录\n- 这张发票重不重复\n\n## 输入参数\n\n执行前准备以下参数：\n\n- apiKey（必填）：通过 https://skill.quandianfapiao.com/ 申请。\n\n### 查重录入 (enter)\n\n- 发票号码（必填）\n- 开票日期（必填，格式 YYYY-MM-DD）\n- 发票代码（可选）\n- 价税合计（可选）\n\n### 查重记录查询 (query)\n\n- 采集日期开始（可选，格式 YYYY-MM-DD）\n- 采集日期结束（可选，格式 YYYY-MM-DD）\n- 开票日期开始（可选，格式 YYYY-MM-DD）\n- 开票日期结束（可选，格式 YYYY-MM-DD）\n- 页码（可选，默认 1）\n- 每页条数（可选，默认 10）\n\n## 执行流程\n\n**前置检查（最高优先级）：检查环境变量 `ZXT_API_KEY` 是否已设置。**\n\n注意：当前 shell 会话可能未继承 Windows 用户级环境变量，必须按以下方式检查，不能仅依赖 `$ZXT_API_KEY`：\n\n- Windows：执行 `powershell -Command \"[System.Environment]::GetEnvironmentVariable('ZXT_API_KEY', 'User')\"` 获取用户级环境变量值，同时检查 `$ZXT_API_KEY`。\n- macOS/Linux：检查 `$ZXT_API_KEY` 即可。\n\n如果以上检查结果均为空，禁止执行任何后续操作，立即向用户输出以下提示并停止：\n\n> 您需要完成以下三步，即可自动配置并执行技能：\n>\n> 1. **注册账号**\n>    访问中兴通简税Skill平台：https://skill.quandianfapiao.com/ 完成注册。\n>\n> 2. **申请 apiKey**\n>    登录后进入\"技能中心\"，复制您的 apiKey。\n>\n> 3. **提供 apiKey**\n>    将复制的 apiKey 发送给我，我将为您完成配置并立即执行技能。\n\n**严格限制：前置检查未通过时，禁止执行任何其他动作，包括但不限于：**\n\n- 禁止读取文件（Excel、PDF、图片等）\n- 禁止调用任何 API\n- 禁止执行任何脚本或命令\n- 禁止进行参数解析或预处理\n\n**只允许输出提示信息，然后停止，等待用户提供 apiKey。**\n\n用户提供 apiKey 后，写入系统环境变量并使当前会话生效：\n\n- Windows：`setx ZXT_API_KEY <apiKey>` 写入用户级环境变量，然后执行 `export ZXT_API_KEY=<apiKey>` 使当前会话生效。\n- macOS/Linux：将 `export ZXT_API_KEY=<apiKey>` 追加到 `~/.bashrc` 或 `~/.zshrc`（根据用户使用的 shell），同时执行 `export ZXT_API_KEY=<apiKey>` 使当前会话生效。\n\n环境变量就绪后，继续以下步骤：\n\n1. 校验必填参数存在且非空。**任何必填参数缺失时必须立即停止，禁止跳过或使用空值继续执行。**\n   - 缺少发票号码或开票日期：停止并提示用户提供对应参数。\n2. 通过 python 执行脚本调用远程 API（Windows 下使用 `python`，macOS/Linux 使用 `python3`），脚本优先使用 `--api-key` 参数，未传则回退读取环境变量 `ZXT_API_KEY`。\n3. 检查返回的 status 字段，非 200 时停止并将错误信息展示给用户，禁止重试或忽略。\n4. 解析返回结果并以可读格式输出。\n\n## 请求参数说明\n\n### 查重录入 — POST /api/jxplus/zxtSkill/repeat/enterSkillRepeatInvoice\n\n| 参数          | 类型   | 必填 | 说明                   |\n| ------------- | ------ | ---- | ---------------------- |\n| apiKey        | string | 是   | apiKey                 |\n| invoiceNumber | string | 是   | 发票号码               |\n| invoiceDate   | string | 是   | 开票日期（YYYY-MM-DD） |\n| invoiceCode   | string | 否   | 发票代码               |\n| jshj          | string | 否   | 价税合计               |\n\n### 查重记录查询 — POST /api/jxplus/zxtSkill/repeat/getRepeatInvoiceList\n\n| 参数            | 类型   | 必填 | 说明                     |\n| --------------- | ------ | ---- | ------------------------ |\n| apiKey          | string | 是   | apiKey                   |\n| startDate       | string | 否   | 采集日期开始（YYYY-MM-DD）|\n| endDate         | string | 否   | 采集日期结束（YYYY-MM-DD）|\n| startKprqDate   | string | 否   | 开票日期开始（YYYY-MM-DD）|\n| endKprqDate     | string | 否   | 开票日期结束（YYYY-MM-DD）|\n| pageNo          | string | 否   | 页码，默认 1             |\n| pageSize        | string | 否   | 每页条数，默认 10        |\n\n## 返回说明\n\n### 查重录入返回字段\n\n| 字段           | 说明                       |\n| -------------- | -------------------------- |\n| invoiceNumber  | 发票号码                   |\n| invoiceCode    | 发票代码                   |\n| invoiceDate    | 开票日期                   |\n| jshj           | 价税合计                   |\n| repeatType     | 重复类型：0 不重复，1 重复 |\n| repeatTypeName | 不重复 / 重复              |\n| collectTime    | 采集时间                   |\n\n### 查重记录查询返回\n\n返回分页列表，每条记录包含上述字段，额外包含 `total`（总条数）。\n\n## 异常状态码\n\n| 状态码 | 说明                   |\n| ------ | ---------------------- |\n| 400    | 请求参数错误           |\n| 300    | 参数为空或格式错误     |\n| 305    | 无权访问该接口         |\n| 307    | 消费失败，授权余次不足 |\n| 308    | 超出接口调用次数       |\n| 500    | 系统异常               |\n\n## 接口请求示例\n\n### 查重录入 — POST /api/jxplus/zxtSkill/repeat/enterSkillRepeatInvoice\n\n请求：\n\n```json\n{\n  \"data\": {\n    \"apiKey\": \"sk-sg-9EVbsJLJnlKVLaSO4FZtPUVFysbFL\",\n    \"invoiceNumber\": \"26117000000698099579\",\n    \"invoiceDate\": \"2026-05-14\"\n  }\n}\n```\n\n成功返回：\n\n```json\n{\n  \"status\": \"200\",\n  \"message\": \"成功\",\n  \"data\": {\n    \"invoiceCode\": null,\n    \"invoiceNumber\": \"26117000000698099579\",\n    \"invoiceDate\": null,\n    \"jshj\": null,\n    \"repeatType\": \"0\",\n    \"repeatTypeName\": \"不重复\",\n    \"collectTime\": \"2026-05-18 08:58:28\"\n  },\n  \"logId\": \"2056177564666896386\"\n}\n```\n\n异常返回：\n\n```json\n{\n  \"status\": \"400\",\n  \"message\": \"开票日期不能为空\",\n  \"data\": \"\"\n}\n```\n\n### 查重记录查询 — POST /api/jxplus/zxtSkill/repeat/getRepeatInvoiceList\n\n请求：\n\n```json\n{\n  \"data\": {\n    \"apiKey\": \"sk-sg-9EVbsJLJnlKVLaSO4FZtPUVFysbFL\",\n    \"startDate\": \"2026-05-01\",\n    \"endDate\": \"2026-05-31\",\n    \"pageNo\": \"1\",\n    \"pageSize\": \"10\"\n  }\n}\n```\n\n成功返回：\n\n```json\n{\n  \"status\": \"200\",\n  \"message\": \"成功\",\n  \"data\": {\n    \"pageNo\": \"1\",\n    \"pageSize\": \"10\",\n    \"total\": \"1\",\n    \"list\": [\n      {\n        \"invoiceCode\": null,\n        \"invoiceNumber\": \"26117000000698099579\",\n        \"invoiceDate\": \"2026-05-14\",\n        \"jshj\": null,\n        \"repeatType\": \"0\",\n        \"repeatTypeName\": \"不重复\",\n        \"collectTime\": \"2026-05-18 08:59:19\"\n      }\n    ]\n  },\n  \"logId\": \"2056182604139966466\"\n}\n```\n\n## 命令示例\n\n查重录入：\n\n```bash\npython3 .claude/skills/invoice-dedup/invoice_dedup.py --api-key \"<apiKey>\" enter --invoice-number \"26117000000698099579\" --invoice-date \"2026-05-14\"\n```\n\n查重记录查询：\n\n```bash\npython3 .claude/skills/invoice-dedup/invoice_dedup.py --api-key \"<apiKey>\" query --start-date \"2026-05-01\" --end-date \"2026-05-31\" --page-no \"1\" --page-size \"10\"\n```\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn78wqnm3g9mqn7q7x83dh3jvn874tn3\",\n  \"slug\": \"invoice-dedup\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1779696315744\n}\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nRecords invoice details with a remote invoice service to check for duplicate entries and retrieve prior deduplication records. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[sunriseorient](https://clawhub.ai/user/sunriseorient) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nFinance, operations, and accounting users use this skill to submit invoice numbers, dates, and optional invoice details for duplicate-entry checks, or to query previously recorded deduplication history by date range. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires an API key for a remote invoice service and sends invoice data to that service. <br>\nMitigation: Use it only when the remote service is trusted for the invoice data involved, and provide credentials through a scoped temporary environment variable or a local secret manager. <br>\nRisk: The security summary says the skill asks users to share and permanently store an API key in unsafe ways. <br>\nMitigation: Do not paste the API key into chat or store it in shell startup files; rotate the key if it was already shared. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/sunriseorient/invoice-dedup) <br>\n- [Invoice service platform](https://skill.quandianfapiao.com/) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, shell commands, guidance] <br>\n**Output Format:** [Markdown and plain text with inline shell command examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Returns readable invoice deduplication status, paginated history summaries, or API error messages.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.0-beta: 4 files, 7027 bytes\n\nFiles: common.py (4673b), invoice_dedup.py (6166b), SKILL.md (7884b), _meta.json (137b)\n\nFile v1.0.0-beta:SKILL.md\n\n---\nname: invoice-dedup\ndescription: 发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。\n---\n\n# 发票查重技能\n\n使用此技能将发票信息录入系统进行查重，或查询已有的查重记录。\n\n## 使用场景\n\n满足以下需求时使用：\n\n- 录入发票信息并检查是否与已有记录重复。\n- 按日期范围查询已录入的查重记录。\n\n## 触发语句示例\n\n以下用户输入应触发此技能：\n\n- 帮我查重这张发票 / 发票查重 / 这张发票有没有重复\n- 录入发票进行查重 / 录入查重\n- 查一下发票 26117000000698099579 是否重复\n- 查询查重记录 / 看一下查重记录 / 查重历史\n- 查一下5月份的查重记录\n- 列出最近的查重记录\n- 这张发票重不重复\n\n## 输入参数\n\n执行前准备以下参数：\n\n- apiKey（必填）：通过 https://skill.quandianfapiao.com/ 申请。\n\n### 查重录入 (enter)\n\n- 发票号码（必填）\n- 开票日期（必填，格式 YYYY-MM-DD）\n- 发票代码（可选）\n- 价税合计（可选）\n\n### 查重记录查询 (query)\n\n- 采集日期开始（可选，格式 YYYY-MM-DD）\n- 采集日期结束（可选，格式 YYYY-MM-DD）\n- 开票日期开始（可选，格式 YYYY-MM-DD）\n- 开票日期结束（可选，格式 YYYY-MM-DD）\n- 页码（可选，默认 1）\n- 每页条数（可选，默认 10）\n\n## 执行流程\n\n**前置检查（最高优先级）：检查环境变量 `ZXT_API_KEY` 是否已设置。**\n\n注意：当前 shell 会话可能未继承 Windows 用户级环境变量，必须按以下方式检查，不能仅依赖 `$ZXT_API_KEY`：\n\n- Windows：执行 `powershell -Command \"[System.Environment]::GetEnvironmentVariable('ZXT_API_KEY', 'User')\"` 获取用户级环境变量值，同时检查 `$ZXT_API_KEY`。\n- macOS/Linux：检查 `$ZXT_API_KEY` 即可。\n\n如果以上检查结果均为空，禁止执行任何后续操作，立即向用户输出以下提示并停止：\n\n> 您需要完成以下三步，即可自动配置并执行技能：\n>\n> 1. **注册账号**\n>    访问中兴通简税Skill平台：https://skill.quandianfapiao.com/ 完成注册。\n>\n> 2. **申请 apiKey**\n>    登录后进入\"技能中心\"，复制您的 apiKey。\n>\n> 3. **提供 apiKey**\n>    将复制的 apiKey 发送给我，我将为您完成配置并立即执行技能。\n\n**严格限制：前置检查未通过时，禁止执行任何其他动作，包括但不限于：**\n\n- 禁止读取文件（Excel、PDF、图片等）\n- 禁止调用任何 API\n- 禁止执行任何脚本或命令\n- 禁止进行参数解析或预处理\n\n**只允许输出提示信息，然后停止，等待用户提供 apiKey。**\n\n用户提供 apiKey 后，写入系统环境变量并使当前会话生效：\n\n- Windows：`setx ZXT_API_KEY <apiKey>` 写入用户级环境变量，然后执行 `export ZXT_API_KEY=<apiKey>` 使当前会话生效。\n- macOS/Linux：将 `export ZXT_API_KEY=<apiKey>` 追加到 `~/.bashrc` 或 `~/.zshrc`（根据用户使用的 shell），同时执行 `export ZXT_API_KEY=<apiKey>` 使当前会话生效。\n\n环境变量就绪后，继续以下步骤：\n\n1. 校验必填参数存在且非空。**任何必填参数缺失时必须立即停止，禁止跳过或使用空值继续执行。**\n   - 缺少发票号码或开票日期：停止并提示用户提供对应参数。\n2. 通过 python 执行脚本调用远程 API（Windows 下使用 `python`，macOS/Linux 使用 `python3`），脚本优先使用 `--api-key` 参数，未传则回退读取环境变量 `ZXT_API_KEY`。\n3. 检查返回的 status 字段，非 200 时停止并将错误信息展示给用户，禁止重试或忽略。\n4. 解析返回结果并以可读格式输出。\n\n## 请求参数说明\n\n### 查重录入 — POST /api/jxplus/zxtSkill/repeat/enterSkillRepeatInvoice\n\n| 参数          | 类型   | 必填 | 说明                   |\n| ------------- | ------ | ---- | ---------------------- |\n| apiKey        | string | 是   | apiKey                 |\n| invoiceNumber | string | 是   | 发票号码               |\n| invoiceDate   | string | 是   | 开票日期（YYYY-MM-DD） |\n| invoiceCode   | string | 否   | 发票代码               |\n| jshj          | string | 否   | 价税合计               |\n\n### 查重记录查询 — POST /api/jxplus/zxtSkill/repeat/getRepeatInvoiceList\n\n| 参数            | 类型   | 必填 | 说明                     |\n| --------------- | ------ | ---- | ------------------------ |\n| apiKey          | string | 是   | apiKey                   |\n| startDate       | string | 否   | 采集日期开始（YYYY-MM-DD）|\n| endDate         | string | 否   | 采集日期结束（YYYY-MM-DD）|\n| startKprqDate   | string | 否   | 开票日期开始（YYYY-MM-DD）|\n| endKprqDate     | string | 否   | 开票日期结束（YYYY-MM-DD）|\n| pageNo          | string | 否   | 页码，默认 1             |\n| pageSize        | string | 否   | 每页条数，默认 10        |\n\n## 返回说明\n\n### 查重录入返回字段\n\n| 字段           | 说明                       |\n| -------------- | -------------------------- |\n| invoiceNumber  | 发票号码                   |\n| invoiceCode    | 发票代码                   |\n| invoiceDate    | 开票日期                   |\n| jshj           | 价税合计                   |\n| repeatType     | 重复类型：0 不重复，1 重复 |\n| repeatTypeName | 不重复 / 重复              |\n| collectTime    | 采集时间                   |\n\n### 查重记录查询返回\n\n返回分页列表，每条记录包含上述字段，额外包含 `total`（总条数）。\n\n## 异常状态码\n\n| 状态码 | 说明                   |\n| ------ | ---------------------- |\n| 400    | 请求参数错误           |\n| 300    | 参数为空或格式错误     |\n| 305    | 无权访问该接口         |\n| 307    | 消费失败，授权余次不足 |\n| 308    | 超出接口调用次数       |\n| 500    | 系统异常               |\n\n## 接口请求示例\n\n### 查重录入 — POST /api/jxplus/zxtSkill/repeat/enterSkillRepeatInvoice\n\n请求：\n\n```json\n{\n  \"data\": {\n    \"apiKey\": \"sk-sg-9EVbsJLJnlKVLaSO4FZtPUVFysbFL\",\n    \"invoiceNumber\": \"26117000000698099579\",\n    \"invoiceDate\": \"2026-05-14\"\n  }\n}\n```\n\n成功返回：\n\n```json\n{\n  \"status\": \"200\",\n  \"message\": \"成功\",\n  \"data\": {\n    \"invoiceCode\": null,\n    \"invoiceNumber\": \"26117000000698099579\",\n    \"invoiceDate\": null,\n    \"jshj\": null,\n    \"repeatType\": \"0\",\n    \"repeatTypeName\": \"不重复\",\n    \"collectTime\": \"2026-05-18 08:58:28\"\n  },\n  \"logId\": \"2056177564666896386\"\n}\n```\n\n异常返回：\n\n```json\n{\n  \"status\": \"400\",\n  \"message\": \"开票日期不能为空\",\n  \"data\": \"\"\n}\n```\n\n### 查重记录查询 — POST /api/jxplus/zxtSkill/repeat/getRepeatInvoiceList\n\n请求：\n\n```json\n{\n  \"data\": {\n    \"apiKey\": \"sk-sg-9EVbsJLJnlKVLaSO4FZtPUVFysbFL\",\n    \"startDate\": \"2026-05-01\",\n    \"endDate\": \"2026-05-31\",\n    \"pageNo\": \"1\",\n    \"pageSize\": \"10\"\n  }\n}\n```\n\n成功返回：\n\n```json\n{\n  \"status\": \"200\",\n  \"message\": \"成功\",\n  \"data\": {\n    \"pageNo\": \"1\",\n    \"pageSize\": \"10\",\n    \"total\": \"1\",\n    \"list\": [\n      {\n        \"invoiceCode\": null,\n        \"invoiceNumber\": \"26117000000698099579\",\n        \"invoiceDate\": \"2026-05-14\",\n        \"jshj\": null,\n        \"repeatType\": \"0\",\n        \"repeatTypeName\": \"不重复\",\n        \"collectTime\": \"2026-05-18 08:59:19\"\n      }\n    ]\n  },\n  \"logId\": \"2056182604139966466\"\n}\n```\n\n## 命令示例\n\n查重录入：\n\n```bash\npython3 .claude/skills/invoice-dedup/invoice_dedup.py --api-key \"<apiKey>\" enter --invoice-number \"26117000000698099579\" --invoice-date \"2026-05-14\"\n```\n\n查重记录查询：\n\n```bash\npython3 .claude/skills/invoice-dedup/invoice_dedup.py --api-key \"<apiKey>\" query --start-date \"2026-05-01\" --end-date \"2026-05-31\" --page-no \"1\" --page-size \"10\"\n```\n\nFile v1.0.0-beta:_meta.json\n\n{\n  \"ownerId\": \"kn78wqnm3g9mqn7q7x83dh3jvn874tn3\",\n  \"slug\": \"invoice-dedup\",\n  \"version\": \"1.0.0-beta\",\n  \"publishedAt\": 1779412027677\n}\n\nArchive v1.0.0-alpha: 4 files, 7025 bytes\n\nFiles: common.py (4667b), invoice_dedup.py (6172b), SKILL.md (7896b), _meta.json (138b)\n\nFile v1.0.0-alpha:SKILL.md\n\n---\nname: invoice-dedup\ndescription: 发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。\n---\n\n# 发票查重技能\n\n使用此技能将发票信息录入系统进行查重，或查询已有的查重记录。\n\n## 使用场景\n\n满足以下需求时使用：\n\n- 录入发票信息并检查是否与已有记录重复。\n- 按日期范围查询已录入的查重记录。\n\n## 触发语句示例\n\n以下用户输入应触发此技能：\n\n- 帮我查重这张发票 / 发票查重 / 这张发票有没有重复\n- 录入发票进行查重 / 录入查重\n- 查一下发票 26117000000698099579 是否重复\n- 查询查重记录 / 看一下查重记录 / 查重历史\n- 查一下5月份的查重记录\n- 列出最近的查重记录\n- 这张发票重不重复\n\n## 输入参数\n\n执行前准备以下参数：\n\n- apiKey（必填）：通过 https://test-eqjs.es366.cn/jxplusSkill/ 申请。\n\n### 查重录入 (enter)\n\n- 发票号码（必填）\n- 开票日期（必填，格式 YYYY-MM-DD）\n- 发票代码（可选）\n- 价税合计（可选）\n\n### 查重记录查询 (query)\n\n- 采集日期开始（可选，格式 YYYY-MM-DD）\n- 采集日期结束（可选，格式 YYYY-MM-DD）\n- 开票日期开始（可选，格式 YYYY-MM-DD）\n- 开票日期结束（可选，格式 YYYY-MM-DD）\n- 页码（可选，默认 1）\n- 每页条数（可选，默认 10）\n\n## 执行流程\n\n**前置检查（最高优先级）：检查环境变量 `ZXT_API_KEY` 是否已设置。**\n\n注意：当前 shell 会话可能未继承 Windows 用户级环境变量，必须按以下方式检查，不能仅依赖 `$ZXT_API_KEY`：\n\n- Windows：执行 `powershell -Command \"[System.Environment]::GetEnvironmentVariable('ZXT_API_KEY', 'User')\"` 获取用户级环境变量值，同时检查 `$ZXT_API_KEY`。\n- macOS/Linux：检查 `$ZXT_API_KEY` 即可。\n\n如果以上检查结果均为空，禁止执行任何后续操作，立即向用户输出以下提示并停止：\n\n> 您需要完成以下三步，即可自动配置并执行技能：\n>\n> 1. **注册账号**\n>    访问中兴通简税Skill平台：https://test-eqjs.es366.cn/jxplusSkill/ 完成注册。\n>\n> 2. **申请 apiKey**\n>    登录后进入\"技能中心\"，复制您的 apiKey。\n>\n> 3. **提供 apiKey**\n>    将复制的 apiKey 发送给我，我将为您完成配置并立即执行技能。\n\n**严格限制：前置检查未通过时，禁止执行任何其他动作，包括但不限于：**\n\n- 禁止读取文件（Excel、PDF、图片等）\n- 禁止调用任何 API\n- 禁止执行任何脚本或命令\n- 禁止进行参数解析或预处理\n\n**只允许输出提示信息，然后停止，等待用户提供 apiKey。**\n\n用户提供 apiKey 后，写入系统环境变量并使当前会话生效：\n\n- Windows：`setx ZXT_API_KEY <apiKey>` 写入用户级环境变量，然后执行 `export ZXT_API_KEY=<apiKey>` 使当前会话生效。\n- macOS/Linux：将 `export ZXT_API_KEY=<apiKey>` 追加到 `~/.bashrc` 或 `~/.zshrc`（根据用户使用的 shell），同时执行 `export ZXT_API_KEY=<apiKey>` 使当前会话生效。\n\n环境变量就绪后，继续以下步骤：\n\n1. 校验必填参数存在且非空。**任何必填参数缺失时必须立即停止，禁止跳过或使用空值继续执行。**\n   - 缺少发票号码或开票日期：停止并提示用户提供对应参数。\n2. 通过 python 执行脚本调用远程 API（Windows 下使用 `python`，macOS/Linux 使用 `python3`），脚本优先使用 `--api-key` 参数，未传则回退读取环境变量 `ZXT_API_KEY`。\n3. 检查返回的 status 字段，非 200 时停止并将错误信息展示给用户，禁止重试或忽略。\n4. 解析返回结果并以可读格式输出。\n\n## 请求参数说明\n\n### 查重录入 — POST /api/jxplus/zxtSkill/repeat/enterSkillRepeatInvoice\n\n| 参数          | 类型   | 必填 | 说明                   |\n| ------------- | ------ | ---- | ---------------------- |\n| apiKey        | string | 是   | apiKey                 |\n| invoiceNumber | string | 是   | 发票号码               |\n| invoiceDate   | string | 是   | 开票日期（YYYY-MM-DD） |\n| invoiceCode   | string | 否   | 发票代码               |\n| jshj          | string | 否   | 价税合计               |\n\n### 查重记录查询 — POST /api/jxplus/zxtSkill/repeat/getRepeatInvoiceList\n\n| 参数            | 类型   | 必填 | 说明                     |\n| --------------- | ------ | ---- | ------------------------ |\n| apiKey          | string | 是   | apiKey                   |\n| startDate       | string | 否   | 采集日期开始（YYYY-MM-DD）|\n| endDate         | string | 否   | 采集日期结束（YYYY-MM-DD）|\n| startKprqDate   | string | 否   | 开票日期开始（YYYY-MM-DD）|\n| endKprqDate     | string | 否   | 开票日期结束（YYYY-MM-DD）|\n| pageNo          | string | 否   | 页码，默认 1             |\n| pageSize        | string | 否   | 每页条数，默认 10        |\n\n## 返回说明\n\n### 查重录入返回字段\n\n| 字段           | 说明                       |\n| -------------- | -------------------------- |\n| invoiceNumber  | 发票号码                   |\n| invoiceCode    | 发票代码                   |\n| invoiceDate    | 开票日期                   |\n| jshj           | 价税合计                   |\n| repeatType     | 重复类型：0 不重复，1 重复 |\n| repeatTypeName | 不重复 / 重复              |\n| collectTime    | 采集时间                   |\n\n### 查重记录查询返回\n\n返回分页列表，每条记录包含上述字段，额外包含 `total`（总条数）。\n\n## 异常状态码\n\n| 状态码 | 说明                   |\n| ------ | ---------------------- |\n| 400    | 请求参数错误           |\n| 300    | 参数为空或格式错误     |\n| 305    | 无权访问该接口         |\n| 307    | 消费失败，授权余次不足 |\n| 308    | 超出接口调用次数       |\n| 500    | 系统异常               |\n\n## 接口请求示例\n\n### 查重录入 — POST /api/jxplus/zxtSkill/repeat/enterSkillRepeatInvoice\n\n请求：\n\n```json\n{\n  \"data\": {\n    \"apiKey\": \"sk-sg-9EVbsJLJnlKVLaSO4FZtPUVFysbFL\",\n    \"invoiceNumber\": \"26117000000698099579\",\n    \"invoiceDate\": \"2026-05-14\"\n  }\n}\n```\n\n成功返回：\n\n```json\n{\n  \"status\": \"200\",\n  \"message\": \"成功\",\n  \"data\": {\n    \"invoiceCode\": null,\n    \"invoiceNumber\": \"26117000000698099579\",\n    \"invoiceDate\": null,\n    \"jshj\": null,\n    \"repeatType\": \"0\",\n    \"repeatTypeName\": \"不重复\",\n    \"collectTime\": \"2026-05-18 08:58:28\"\n  },\n  \"logId\": \"2056177564666896386\"\n}\n```\n\n异常返回：\n\n```json\n{\n  \"status\": \"400\",\n  \"message\": \"开票日期不能为空\",\n  \"data\": \"\"\n}\n```\n\n### 查重记录查询 — POST /api/jxplus/zxtSkill/repeat/getRepeatInvoiceList\n\n请求：\n\n```json\n{\n  \"data\": {\n    \"apiKey\": \"sk-sg-9EVbsJLJnlKVLaSO4FZtPUVFysbFL\",\n    \"startDate\": \"2026-05-01\",\n    \"endDate\": \"2026-05-31\",\n    \"pageNo\": \"1\",\n    \"pageSize\": \"10\"\n  }\n}\n```\n\n成功返回：\n\n```json\n{\n  \"status\": \"200\",\n  \"message\": \"成功\",\n  \"data\": {\n    \"pageNo\": \"1\",\n    \"pageSize\": \"10\",\n    \"total\": \"1\",\n    \"list\": [\n      {\n        \"invoiceCode\": null,\n        \"invoiceNumber\": \"26117000000698099579\",\n        \"invoiceDate\": \"2026-05-14\",\n        \"jshj\": null,\n        \"repeatType\": \"0\",\n        \"repeatTypeName\": \"不重复\",\n        \"collectTime\": \"2026-05-18 08:59:19\"\n      }\n    ]\n  },\n  \"logId\": \"2056182604139966466\"\n}\n```\n\n## 命令示例\n\n查重录入：\n\n```bash\npython3 .claude/skills/invoice-dedup/invoice_dedup.py --api-key \"<apiKey>\" enter --invoice-number \"26117000000698099579\" --invoice-date \"2026-05-14\"\n```\n\n查重记录查询：\n\n```bash\npython3 .claude/skills/invoice-dedup/invoice_dedup.py --api-key \"<apiKey>\" query --start-date \"2026-05-01\" --end-date \"2026-05-31\" --page-no \"1\" --page-size \"10\"\n```\n\nFile v1.0.0-alpha:_meta.json\n\n{\n  \"ownerId\": \"kn78wqnm3g9mqn7q7x83dh3jvn874tn3\",\n  \"slug\": \"invoice-dedup\",\n  \"version\": \"1.0.0-alpha\",\n  \"publishedAt\": 1779354928661\n}","readmeExcerpt":"Skill: 发票查重 Owner: zxt Summary: 发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。 Tags: latest:1.0.1 Version history: v1.0.1 | 2026-06-17T07:36:30.297Z | user 主体迁移 v1.0.0 | 2026-05-25T08:05:15.744Z | user 正式版 v1.0.0-beta | 2026-05-22T01:07:07.677Z | user - 修改了 apiKey 的申请地址，由 https://test-eqjs.es366.cn/jxplusSkill/ 更新为 https://skill.quandianfapiao.com/ - 同步更新了用户指引、环境配置和 apiKey 提示信息中的平台注册、申请流程网址 - 其余技能功能、参数说明与接口文档保持不变 v1.0.0-al","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n  \"data\": {\n    \"apiKey\": \"sk-sg-9EVbsJLJnlKVLaSO4FZtPUVFysbFL\",\n    \"invoiceNumber\": \"26117000000698099579\",\n    \"invoiceDate\": \"2026-05-14\"\n  }\n}"},{"language":"json","snippet":"{\n  \"status\": \"200\",\n  \"message\": \"成功\",\n  \"data\": {\n    \"invoiceCode\": null,\n    \"invoiceNumber\": \"26117000000698099579\",\n    \"invoiceDate\": null,\n    \"jshj\": null,\n    \"repeatType\": \"0\",\n    \"repeatTypeName\": \"不重复\",\n    \"collectTime\": \"2026-05-18 08:58:28\"\n  },\n  \"logId\": \"2056177564666896386\"\n}"},{"language":"json","snippet":"{\n  \"status\": \"400\",\n  \"message\": \"开票日期不能为空\",\n  \"data\": \"\"\n}"},{"language":"json","snippet":"{\n  \"data\": {\n    \"apiKey\": \"sk-sg-9EVbsJLJnlKVLaSO4FZtPUVFysbFL\",\n    \"startDate\": \"2026-05-01\",\n    \"endDate\": \"2026-05-31\",\n    \"pageNo\": \"1\",\n    \"pageSize\": \"10\"\n  }\n}"},{"language":"json","snippet":"{\n  \"status\": \"200\",\n  \"message\": \"成功\",\n  \"data\": {\n    \"pageNo\": \"1\",\n    \"pageSize\": \"10\",\n    \"total\": \"1\",\n    \"list\": [\n      {\n        \"invoiceCode\": null,\n        \"invoiceNumber\": \"26117000000698099579\",\n        \"invoiceDate\": \"2026-05-14\",\n        \"jshj\": null,\n        \"repeatType\": \"0\",\n        \"repeatTypeName\": \"不重复\",\n        \"collectTime\": \"2026-05-18 08:59:19\"\n      }\n    ]\n  },\n  \"logId\": \"2056182604139966466\"\n}"},{"language":"bash","snippet":"python3 .claude/skills/invoice-dedup/invoice_dedup.py --api-key \"<apiKey>\" enter --invoice-number \"26117000000698099579\" --invoice-date \"2026-05-14\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: invoice-dedup\ndescription: 发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。\n---\n\n# 发票查重技能\n\n使用此技能将发票信息录入系统进行查重，或查询已有的查重记录。\n\n## 使用场景\n\n满足以下需求时使用：\n\n- 录入发票信息并检查是否与已有记录重复。\n- 按日期范围查询已录入的查重记录。\n\n## 触发语句示例\n\n以下用户输入应触发此技能：\n\n- 帮我查重这张发票 / 发票查重 / 这张发票有没有重复\n- 录入发票进行查重 / 录入查重\n- 查一下发票 26117000000698099579 是否重复\n- 查询查重记录 / 看一下查重记录 / 查重历史\n- 查一下5月份的查重记录\n- 列出最近的查重记录\n- 这张发票重不重复\n\n## 输入参数\n\n执行前准备以下参数：\n\n- apiKey（必填）：通过 https://skill.quandianfapiao.com/ 申请。\n\n### 查重录入 (enter)\n\n- 发票号码（必填）\n- 开票日期（必填，格式 YYYY-MM-DD）\n- 发票代码（可选）\n- 价税合计（可选）\n\n### 查重记录查询 (query)\n\n- 采集日期开始（可选，格式 YYYY-MM-DD）\n- 采集日期结束（可选，格式 YYYY-MM-DD）\n- 开票日期开始（可选，格式 YYYY-MM-DD）\n- 开票日期结束（可选，格式 YYYY-MM-DD）\n- 页码（可选，默认 1）\n- 每页条数（可选，默认 10）\n\n## 执行流程\n\n**前置检查（最高优先级）：检查环境变量 `ZXT_API_KEY` 是否已设置。**\n\n注意：当前 shell 会话可能未继承 Windows 用户级环境变量，必须按以下方式检查，不能仅依赖 `$ZXT_API_KEY`：\n\n- Windows：执行 `powershell -Command \"[System.Environment]::GetEnvironmentVariable('ZXT_API_KEY', 'User')\"` 获取用户级环境变量值，同时检查 `$ZXT_API_KEY`。\n- macOS/Linux：检查 `$ZXT_API_KEY` 即可。\n\n如果以上检查结果均为空，禁止执行任何后续操作，立即向用户输出以下提示并停止：\n\n> 您需要完成以下三步，即可自动配置并执行技能：\n>\n> 1. **注册账号**\n>    访问中兴通简税Skill平台：https://skill.quandianfapiao.com/ 完成注册。\n>\n> 2. **申请 apiKey**\n>    登录后进入\"技能中心\"，复制您的 apiKey。\n>\n> 3. **提供 apiKey**\n>    将复制的 apiKey 发送给我，我将为您完成配置并立即执行技能。\n\n**严格限制：前置检查未通过时，禁止执行任何其他动作，包括但不限于：**\n\n- 禁止读取文件（Excel、PDF、图片等）\n- 禁止调用任何 API\n- 禁止执行任何脚本或命令\n- 禁止进行参数解析或预处理\n\n**只允许输出提示信息，然后停止，等待用户提供 apiKey。**\n\n用户提供 apiKey 后，写入系统环境变量并使当前会话生效：\n\n- Windows：`setx ZXT_API_KEY <apiKey>` 写入用户级环境变量，然后执行 `export ZXT_API_KEY=<apiKey>` 使当前会话生效。\n- macOS/Linux：将 `export ZXT_API_KEY=<apiKey>` 追加到 `~/.bashrc` 或 `~/.zshrc`（根据用户使用的 shell），同时执行 `export ZXT_API_KEY=<apiKey>` 使当前会话生效。\n\n环境变量就绪后，继续以下步骤：\n\n1. 校验必填参数存在且非空。**任何必填参数缺失时必须立即停止，禁止跳过或使用空值继续执行。**\n   - 缺少发票号码或开票日期：停止并提示用户提供对应参数。\n2. 通过 python 执行脚本调用远程 API（Windows 下使用 `python`，macOS/Linux 使用 `python3`），脚本优先使用 `--api-key` 参数，未传则回退读取环境变量 `ZXT_API_KEY`。\n3. 检查返回的 status 字段，非 200 时停止并将错误信息展示给用户，禁止重试或忽略。\n4. 解析返回结果并以可读格式输出。\n\n## 请求参数说明\n\n### 查重录入 — POST /api/jxplus/zxtSkill/repeat/enterSkillRepeatInvoice\n\n| 参数          | 类型   | 必填 | 说明                   |\n| ------------- | ------ | ---- | ---------------------- |\n| apiKey        | string | 是   | apiKey                 |\n| invoiceNumber | string | 是   | 发票号码               |\n| invoiceDate   | string | 是   | 开票日期（YYYY-MM-DD） |\n| invoiceCode   | string | 否   | 发票代码               |\n| jshj          | string | 否   | 价税合计               |\n\n### 查重记录查询 — POST /api/jxplus/zxtSkill/repeat/getRepeatInvoiceList\n\n| 参数            | 类型   | 必填 | 说明                     |\n| --------------- | ------ | ---- | ------------------------ |\n| apiKey          | string | 是   | apiKey                   |\n| startDate       | string | 否   | 采集日期开始（YYYY-MM-DD）|\n| endDate         | string | 否   | 采集日期结束（YYYY-MM-DD）|\n| startKprqDate   | string | 否   | 开票日期开始（YYYY-MM-DD）|\n| endKprqDate     | string | 否   | 开票日期结束（YYYY-MM-DD）|\n| pageNo          | string | 否   | 页码，默认 1             |\n| pageSize        | string | 否   | 每页条数，默认 10        |\n\n## 返回说明\n\n### 查重录入返回字段\n\n| 字段           | 说明 "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn78wqnm3g9mqn7q7x83dh3jvn874tn3\",\n  \"slug\": \"invoice-dedup\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1781681790297\n}"},{"path":"skill-card.md","content":"## Description:\n\n发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zxt](https://clawhub.ai/user/zxt)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and business operators use this skill to submit invoice details for duplicate-entry checks and to query existing duplicate-check records by date range.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill sends invoice details and an API key to an external invoice service.\n\nMitigation: Use the skill only when sending those invoice details to the stated service is approved, and use a scoped, revocable API key.\n\nRisk: The security evidence reports unsafe API-key handling, including chat-based key collection and persistence in user shell configuration.\n\nMitigation: Do not paste real API keys into chat; prefer a proper secret manager or a temporary environment variable limited to the current run.\n\nRisk: The security evidence reports an undeclared file-upload helper in the artifact.\n\nMitigation: Review or remove the upload helper before deployment and avoid granting file access unless the upload behavior is explicitly required and documented.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/zxt/skills/invoice-dedup)\n- [ZXT Skill platform](https://skill.quandianfapiao.com/)\n\n## Skill Output:\n\n**Output Type(s):** [text, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown text with shell command examples and readable API results]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires a ZXT_API_KEY or apiKey argument and sends invoice details to the configured external service.]\n\n## Skill Version(s):\n\n1.0.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。 Skill: 发票查重 Owner: zxt Summary: 发票查重技能。录入发票进行查重、查询查重记录。适用于验证发票是否重复录入的场景。 Tags: latest:1.0.1 Version history: v1.0.1 | 2026-06-17T07:36:30.297Z | user 主体迁移 v1.0.0 | 2026-05-25T08:05:15.744Z | user 正式版 v1.0.0-beta | 2026-05-22T01:07:07.677Z | user - 修改了 apiKey 的申请地址，由 https://test-eqjs.es366.cn/jxplusSkill/ 更新为 https://skill.quandianfapiao.com/ - 同步更新了用户指引、环境配置和 apiKey 提示信息中的平台注册、申请流程网址 - 其余技能功能、参数说明与接口文档保持不变 v1.0.0-al","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":774,"uniquenessScore":57,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T14:38:15.104Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T14:38:15.104Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T17:42:16.018Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}