Help us improve
Share bugs, ideas, or general feedback.
From patent-kit
Analyzes screened patents by decomposing claims and elements. Triggered when: - The user asks to: * "evaluate the patent" * "analyze claim elements" - `patents.db` exists with `screened_patents` table populated
npx claudepluginhub sonesuke/patent-kit --plugin patent-kitHow this skill is triggered — by the user, by Claude, or both
Slash command
/patent-kit:evaluatingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyze screened patents by decomposing claims into elements and storing analysis data in the database for further processing.
Evaluates patents for maintenance or abandonment by analyzing claim scope against family patents. Categorizes as BROADEST, COMPLEMENTARY, NARROW, SUNSET, or REVIEW for portfolio optimization.
Conducts 7-step prior art searches and patentability assessments using BigQuery keyword/CPC queries, USPTO API, and timeline analysis for invention evaluation.
Analyses patent files with claim construction, infringement assessment, validity review, and FTO analysis across seven scenarios.
Share bugs, ideas, or general feedback.
Analyze screened patents by decomposing claims into elements and storing analysis data in the database for further processing.
patents.db must exist with screened_patents table populated (from screening skill)investigation-fetching skill for data retrieval operationsinvestigation-recording skill for elements recordingElement-by-Element Analysis (The Golden Rule):
Skill-Only Database Access:
investigation-recording skill for elements recording (LLM interpretation task)output_file — do NOT pass claim text through LLM generation (see Step 3)Do NOT delegate to subagents (Agent tool) — invoke Skills directly from this session.
Process:
Get Patents to Analyze:
Skill: investigation-fetching with request "Get list of relevant patents without evaluation"Batch Fetch Patent Data (up to 10 patents in parallel):
Skill: google-patent-cli:patent-fetch for all patents in parallelRecord Claims (for each patent — mechanical, no LLM text generation):
fetch_patent returns the output_file, use sqlite3 JSON functions to INSERT directly.
Do NOT read claim text and regenerate it — LLM will summarize/compress long repetitive structures.
sqlite3 patents.db "
INSERT OR REPLACE INTO claims (patent_id, claim_number, claim_type, claim_text, created_at, updated_at)
SELECT
'<patent_id>',
CAST(json_extract(value, '$.number') AS INTEGER),
CASE
WHEN CAST(json_extract(value, '$.number') AS INTEGER) = 1 THEN 'independent'
ELSE 'dependent'
END,
json_extract(value, '$.text'),
datetime('now'),
datetime('now')
FROM json_each(json_extract(CAST(readfile('<output_file>') AS TEXT), '$.claims'));
"
sqlite3 patents.db "SELECT COUNT(*) FROM claims WHERE patent_id = '<patent_id>'"claim_type for each independent claim identified by reading claims from the DB:
sqlite3 patents.db "SELECT claim_number, substr(claim_text, 1, 80) FROM claims WHERE patent_id = '<patent_id>'"
Identify independent claims (those NOT starting with "前記", "The ... of claim", "請求項", etc.) and UPDATE:
sqlite3 patents.db "UPDATE claims SET claim_type = 'independent', updated_at = datetime('now') WHERE patent_id = '<patent_id>' AND claim_number IN (<independent_numbers>)"
Analyze and Record Elements (for each patent — LLM interpretation task):
sqlite3 patents.db "SELECT claim_number, claim_text FROM claims WHERE patent_id = '<patent_id>'"Skill: investigation-recording with request "Record elements for patent : <elements_data>"Verify Results: Confirm all claims and elements are recorded in the database
screened_patents table marked as relevant without corresponding claims/elements entries existscreened_patents marked as relevant without corresponding claims/elements entries (all evaluated)