jurisdiction — Claude Code skill: patent rules and setup
This skill gives an agent CN, US, and PCT rules for patent claims, procedures, fees, and timelines. Use it when a task depends on jurisdiction-specific details.
npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a claude-codeWhat jurisdiction does
jurisdiction supplies rules for CN, US, and PCT patent work. Its data covers the examination procedure, default and expected timelines, fees, special requirements, and claim wording for each supported code. The skill separates general jurisdiction data from claim-format and examination-timeline lookups.
It exports JurisdictionCode, rule and output interfaces, plus getJurisdictionRules, getClaimFormat, and getExaminationTimeline. The returned data includes claim limits, dependent-claim behavior, and conditions such as language requirements or national-phase entry. The package examples use TypeScript imports from ../jurisdiction.js or the package entry point.
Only CN, US, and PCT are supported. A caller should validate the code first, since an unsupported value makes the getters throw instead of selecting a default jurisdiction.
What it helps with
- map a patent task to CN, US, or PCT rules
- retrieve an examination timeline
- choose the claim format for a jurisdiction
- check claim limits and dependent-claim support
- account for jurisdiction-specific fees and requirements
Example prompts for the agent
- Apply the
CNjurisdiction rules and list the examination timeline, fees, and special requirements. - Compare the claim formats and claim limits for
USandPCT. - Validate
EPbefore calling the jurisdiction rules and explain the result.
How to install jurisdiction
1Skills CLI (Vercel)
npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a claude-code2Manually: put the files in place
~/.claude/skills/jurisdiction/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/jurisdiction/
1Skills CLI (Vercel)
npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a codex2Manually: put the files in place
.agents/skills/jurisdiction/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a cursor2Manually: put the files in place
.cursor/skills/jurisdiction/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install illusionaireal/oh-my-patent jurisdiction2Manually: put the files in place
.github/skills/jurisdiction/SKILL.md1Skills CLI (Vercel)
npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a gemini-cli2Platform CLI
gemini skills install https://github.com/illusionaireal/oh-my-patent --path src/skills/jurisdictionManually: put the files in place
.devin/skills/jurisdiction/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about jurisdiction
How do I install jurisdiction in Claude Code?
Run npx skills add illusionaireal/oh-my-patent --skill jurisdiction -a claude-code, then check ~/.claude/skills/jurisdiction/SKILL.md.
What does jurisdiction do?
The skill provides CN, US, and PCT data for patent claims, examination, timelines, fees, and special requirements. Separate functions return claim formats and examination ranges.
Which jurisdictions does jurisdiction support?
It supports CN, US, and PCT only. Passing another code causes the getter to throw an error.
Source text
SKILL.md · MIT
---
name: jurisdiction
description: Use when applying CN, US, or PCT patent jurisdiction rules, claim formats, procedures, or timelines.
---
# Jurisdiction Rules Skill
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.
## Usage
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`).
```typescript
import { getJurisdictionRules, JurisdictionCode } from '../jurisdiction.js';
const rules = getJurisdictionRules(JurisdictionCode.CN);
```
## Exports
| 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 |
## Supported Jurisdictions
### CN (中国)
- **Country**: 中国
- **Examination Type**: 实质审查
- **Default Timeline**: 24 months
- **Examination Timeline**: 18–36 months (typical 24)
- **Claim Format**: `一种[产品/方法],其特征在于,包括:[技术特征]`
- **Dependent Claim Prefix**: `根据权利要求[N]所述的[产品/方法],其特征在于`
- **Multiple Dependent Claims**: not allowed; max 10 claims
- **Fees**: filing 950 / examination 2500 / grant 200 / maintenance 900
- **Special Requirements**: Chinese language required / National phase entry required for PCT / Grace period: 6 months for disclosure
### US (United States)
- **Country**: United States
- **Examination Type**: Substantive Examination
- **Default Timeline**: 36 months
- **Examination Timeline**: 24–48 months (typical 36)
- **Claim Format**: `A [product/method] comprising: [technical features]`
- **Dependent Claim Prefix**: `The [product/method] of claim [N], wherein`
- **Multiple Dependent Claims**: allowed; max 20 claims
- **Fees**: filing 300 / examination 700 / grant 1000 / maintenance 12000
- **Special Requirements**: First to file system / 12-month grace period / Provisional applications available
### PCT (Patent Cooperation Treaty)
- **Country**: PCT International
- **Examination Type**: International Search and Examination
- **Default Timeline**: 30 months
- **Examination Timeline**: 12–30 months (typical 18)
- **Claim Format**: `A [product/method] comprising: [technical features]`
- **Dependent Claim Prefix**: `The [product/method] of claim [N], wherein`
- **Multiple Dependent Claims**: allowed; max 10 claims
- **Fees**: filing 2500 / examination 2200 / grant 0 / maintenance 0
- **Special Requirements**: 30-month national phase entry / International Search Report included / International Preliminary Examination optional
## Examples
### Example 1: jurisdiction rules
```typescript
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"]
```
### Example 2: examination timeline
The timeline is **not** a field of `JurisdictionRules` — it has its own getter.
```typescript
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 18
```
### Example 3: claim format
```typescript
import { 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 20
```
### Example 4: validating a jurisdiction code
There is **no** `isValidJurisdiction()` helper. The getters throw on an unsupported
value, so validation means checking membership before calling them:
```typescript
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: XX
```
Note 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` / guarded by
`isValidJurisdiction`), from which `state.ts` and `plugin.jsonc` derive their
lists. Since REQ-017 the intent router no longer emits unsupported codes
(`EP` / `JP` are recognized but dropped), so "routed as A, rejected as A" can no
longer happen; unsupported requests are answered with an explicit
"not supported" instead.
## Output Types
### JurisdictionRules
- `code`: `JurisdictionCode`
- `country`: display name (`中国` / `United States` / `PCT International`)
- `examinationType`: examination procedure name
- `defaultTimeline`: **number of months** (not an object)
- `fees`: `{ filing, examination, grant, maintenance }` — all four are always present, `0` where not applicable
- `specialRequirements?`: optional list of jurisdiction-specific constraints
### ClaimFormat
- `independentClaimTemplate`: template for an independent claim
- `dependentClaimPrefix`: prefix for a dependent claim, `[N]` marking the parent claim number
- `multipleDependentClaims`: whether multiple-dependent claims are permitted
- `maxClaims`: claim-count ceiling
### ExaminationTimeline
- `minMonths`: fastest realistic examination
- `maxMonths`: slowest realistic examination
- `typical`: the value to use when a single estimate is needed
## Notes
- All three getters **throw** on an unsupported code; they never return `undefined`.
- `JurisdictionRules` deliberately carries no `claimFormat` and no `timeline`: those are
separate types fetched with `getClaimFormat()` and `getExaminationTimeline()`.
- CN requires the filing to be in Chinese; PCT covers the international phase only —
national-phase rules apply afterwards.
- Timeline ranges are estimates and vary with backlog.
© illusionaireal · MIT · illusionaireal/oh-my-patent