oh-my-patent
Turn technical ideas or source materials into traceable patent disclosures; search planning, patent review, figures and project…
Use when applying CN, US, or PCT patent jurisdiction rules, claim formats, procedures, or timelines.
Claude Code
$ npx -y skills add illusionaireal/oh-my-patent --skill jurisdiction --agent claude-code
Codex
$ npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a codex -y
Cursor
$ npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a cursor -y
Gemini CLI
$ npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a gemini-cli -y
GitHub Copilot
$ npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a github-copilot -y
OpenCode
$ npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a opencode -y
Windsurf
$ npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a windsurf -y
name: jurisdiction description: Use when applying CN, US, or PCT patent jurisdiction rules, claim formats, procedures, or timelines.
Provides patent jurisdiction rules for CN, US, and PCT: examination type and default timeline, fee schedule, jurisdiction-specific requirements, claim format, and the examination timeline range.
> This file documents the **actual** exports of `src/skills/jurisdiction.ts`. > Every symbol, field name and number below is taken from that file. If you change > the implementation, change this document in the same commit — this document used > to describe an API that never existed, which is worse than having none.
The implementation is `src/skills/jurisdiction.ts`. From inside this skill's directory the relative import is `../jurisdiction.js`; consumers outside the package should import from the package entry, which re-exports all seven symbols (`src/index.ts`).
import { getJurisdictionRules, JurisdictionCode } from '../jurisdiction.js';
const rules = getJurisdictionRules(JurisdictionCode.CN);| Export | Kind | Notes | | --- | --- | --- | | `JurisdictionCode` | enum | `CN` / `US` / `PCT` — the only supported values | | `JurisdictionRules` | interface | see Output Types | | `ClaimFormat` | interface | see Output Types | | `ExaminationTimeline` | interface | see Output Types | | `getJurisdictionRules(code)` | function | throws on an unsupported code | | `getClaimFormat(code)` | function | throws on an unsupported code | | `getExaminationTimeline(code)` | function | throws on an unsupported code |
import { getJurisdictionRules, JurisdictionCode } from '../jurisdiction.js';
const cnRules = getJurisdictionRules(JurisdictionCode.CN);
console.log(cnRules.code); // "CN"
console.log(cnRules.country); // "中国"
console.log(cnRules.examinationType); // "实质审查"
console.log(cnRules.defaultTimeline); // 24
console.log(cnRules.fees.filing); // 950
console.log(cnRules.specialRequirements);
// ["Chinese language required", "National phase entry required for PCT", "Grace period: 6 months for disclosure"]The timeline is **not** a field of `JurisdictionRules` — it has its own getter.
import { getExaminationTimeline, JurisdictionCode } from '../jurisdiction.js';
const cn = getExaminationTimeline(JurisdictionCode.CN);
console.log(cn.minMonths, cn.maxMonths, cn.typical); // 18 36 24
const us = getExaminationTimeline(JurisdictionCode.US);
console.log(us.minMonths, us.maxMonths, us.typical); // 24 48 36
const pct = getExaminationTimeline(JurisdictionCode.PCT);
console.log(pct.minMonths, pct.maxMonths, pct.typical); // 12 30 18import { getClaimFormat, JurisdictionCode } from '../jurisdiction.js';
const cn = getClaimFormat(JurisdictionCode.CN);
console.log(cn.independentClaimTemplate);
// "一种[产品/方法],其特征在于,包括:[技术特征]"
console.log(cn.dependentClaimPrefix);
// "根据权利要求[N]所述的[产品/方法],其特征在于"
console.log(cn.multipleDependentClaims, cn.maxClaims); // false 10
const us = getClaimFormat(JurisdictionCode.US);
console.log(us.multipleDependentClaims, us.maxClaims); // true 20There is **no** `isValidJurisdiction()` helper. The getters throw on an unsupported value, so validation means checking membership before calling them:
import { JurisdictionCode, getJurisdictionRules } from '../jurisdiction.js';
const SUPPORTED = Object.values(JurisdictionCode) as string[];
function isValidJurisdiction(value: string): value is JurisdictionCode {
return SUPPORTED.includes(value);
}
isValidJurisdiction('CN'); // true
isValidJurisdiction('XX'); // false
// Unsupported codes throw rather than returning a default:
// getJurisdictionRules('XX' as JurisdictionCode) -> Error: Unsupported jurisdiction: XXNote that this skill covers CN, US and PCT only. These are the workflow's only supported jurisdictions: the single definition is the `JurisdictionCode` enum in `src/skills/jurisdiction.ts` (exported as `SUPPORTED_JURISDICTIONS` / guard
<img src="./assets/brand/png/logo-primary.png" width="720" alt="oh-my-patent — Archimedes raising a patent document with a WOW! expression"> Meet Archimedes. Turn your “Eureka!” into a patent disclosure.
Turn technical ideas or source materials into traceable patent disclosures; search planning, patent review, figures and project…
Use when recording, querying, branching, restoring, or visualizing patent brainstorm decision paths.
Use when creating or validating a patent disclosure document against the required section template.
Use when creating standardized evidence cards for patents, papers, standards, or other prior-art references.
Use when searching patents and technical literature for prior art, novelty, or patentability assessment.
Use when validating patent disclosure completeness, evidence quality, citation integrity, and workflow exit criteria.
EU AI Act per-system inventory — track each AI system's role (provider, deployer, importer, distributor, authorized…
You are the business agreement generator for `/legal agreement <type>`. You gather details from the user and produce a complete,…
Agent 专用邮箱统一管理:让 Claude Code、Codex 等平台的 Agent 用一套命令收发邮件、整理收件箱、分发任务。支持网易 ClawEmail(claw.163.com)和腾讯 Agent Mail(QQ…