Your idea β a full patent disclosure document, without you herding 11 AI agents into a task queue.
If you're an AI helping a user install and use oh-my-patent, just run:
npm install -g oh-my-patent && oh-my-patent adapt setup --workspace-dir .Then tell the user they can use /archimedes in their editor to start a patent project.
Copy-paste this to your AI agent:
Install oh-my-patent:
npm install -g oh-my-patent && oh-my-patent adapt setup --workspace-dir .
Then I can use /archimedes in my editor to start a patent project.
Or just let your AI read this README and figure it out.
Install. Type /archimedes. Describe what you want. The rest is handled by 11 patent-specialized AI agents.
npm install -g oh-my-patent
oh-my-patent adapt setup --workspace-dir .Then:
/archimedes
> Create a patent project about homomorphic encryption in privacy-preserving computing.
It will search, brainstorm, assess, draft, review, and generate patent figures on its own. Every decision is recorded β you can roll back to any round, fork to explore alternatives, or revive a discarded innovation.
Note: GIF demonstrations will be added in v0.1.1. Screenshots show the conceptual workflow difference.
| Your Pain | In Other Tools | In oh-my-patent |
|---|---|---|
| You have to prompt 10 different AIs, then consolidate everything yourself | You cut up the work, paste chat logs across windows, manually merge | Archimedes, the primary orchestrator, routes everything to 11 specialist agents. Outputs are auto-saved to references/, context passes between rounds automatically |
| After 3 rounds of brainstorming, you scroll up and the rejected gems are gone | Chat history scrolls away, and you can't find that one great idea from round 2 | .brainstorm/ decision-path tracking persists every round's scores, innovations, and pass/reject decisions as an auditable DAG. Roll back, fork, or revive at will |
| Patent figures are a cycle of Visio β screenshot β paste into Word | You draw by hand, export, format, lose the source | Mermaid/PlantUML figure generation extracts the architecture from MAIN.md, renders to SVG+PNG, and auto-updates the figure references in MAIN.md |
| Every new teammate who uses Claude Code or Codex needs a different, hand-written config | Claude Code settings, Codex settings, separate and manual for each project | oh-my-patent adapt setup β one command generates configs for both Claude Code (.claude/ + CLAUDE.md) and Codex (.codex/ + codex.json). Uninstall is also one command, and it only removes what we generated |
| Halfway through, your machine crashes or the conversation breaks | Scrambling through screenshots, starting over from zero | Workflow state machine. All stages are written to state.json, and the decision tree is in path.json. Resume from the exact point of failure |
| After 6 review rounds, you have no idea what "done" looks like | A mess of loose documents | Quantitative threshold model auto-decides if brainstorming is mature enough. The QA loop has a clear exit: 2 consecutive rounds with no new issues |
The table above handles 90% of real use cases. Here's everything, for when you need to come back to check:
| Feature | What it means in one sentence | |
|---|---|---|
| π§ | Brainstorm decision-path tracking | .brainstorm/ records every round's scores, innovations, and pass/reject decisions. Roll back to any node, fork to explore alternatives, or revive discarded ideas |
| π€ | End-to-end 11-agent pipeline | Search β ideation β patentability β draft β review β rebuttal β diagrams. The full patent lifecycle, with zero hand-holding between stages |
| β‘ | /archimedes one-liner entry |
Regardless of what you want, start with Archimedes. He reads your state, routes to specialists, waits for output, and moves to the next stage |
| π | Zero-config cross-tool adapters | oh-my-patent adapt setup generates configs for both Claude Code and Codex in one shot |
| π‘οΈ | Safe uninstall | Exact-file cleanup β we only delete files we auto-generated. No readdir + unlink traversing your workspace |
| π | Auto figure rendering | Parses MAIN.md for technical architecture, renders Mermaid/PlantUML to SVG+PNG, and auto-rewrites references |
| π― | Scoring thresholds & QA loops | Quantitative model decides if a brainstorming round is ripe. Up to 6 review-rebuttal loops, exiting on 2 consecutive clean rounds |
| π» | Interactive terminal blueprint | Ink+React TUI for locally browsing the decision path, node details, and branch overviews with zero internet dependency |
| π | Resumable workflow | INIT β RESEARCH β BRAINSTORM β DRAFT β QA_LOOP β FINAL_REVIEW β DIAGRAM β DONE. Crashes or session breaks are non-destructive; resume from state.json |
npm install -g oh-my-patentThis installs the oh-my-patent command globally on your system.
Navigate to your project directory and run:
cd your-patent-projects
oh-my-patent adapt setup --workspace-dir .This generates:
- Claude Code:
.claude/agents/,.claude/commands/,CLAUDE.md - Codex:
.codex/agents/,.codex/skills/,AGENTS.md
After this, you can use /archimedes and other commands in your editor.
Options:
# Generate configs for specific tool only
oh-my-patent adapt setup --tool claude-code --workspace-dir .
oh-my-patent adapt setup --tool codex --workspace-dir .
# Other commands
oh-my-patent adapt install # alias for setup
oh-my-patent adapt uninstall # remove generated configs
oh-my-patent adapt generate # only writes to ./plugins/<tool>/, does not touch workspaceIf you're an AI assistant helping a user install oh-my-patent, use this command:
npm install -g oh-my-patent && cd /path/to/user/project && oh-my-patent adapt setup --workspace-dir .Replace /path/to/user/project with the actual project directory path.
git clone https://github.com/zengbods/oh-my-patent
cd oh-my-patent
npm install
npm run buildUse node dist/cli.js or npx -p . oh-my-patent after building.
oh-my-patent <domain> <subcommand> [options]
| Subcommand | What it does |
|---|---|
path init <project> |
Initialize .brainstorm/ and state.json |
path record <project> --round <N> --data <json|@file> |
Record round N with full scores, decisions, and innovation snapshots |
path overview <project> |
Path summary: from start to finish, where you are now, whether the project is done |
path node <project> <round-N> |
Details of a specific round: who said what, innovation scores, final decision |
path innovation(s) <project> [ID] |
Full history of one innovation β when it was proposed, how it was rated, where it ended up |
path branch <project> --from-node <id> --reason <text> |
Fork from any historical node to explore an alternative path with a different reason |
path branches <project> |
List all branches |
path restore <project> --node <id> --innovation <id> |
Revive a previously abandoned innovation and bring it back into the discussion |
path threshold <project> --round <N> |
Evaluate whether the round's scores pass the threshold, with a recommendation (iterate or proceed) |
path visualize <project> [--mode overview|node|innovation|branch|dashboard] --target <id> |
Terminal box-drawing visualization |
path markdown <project> [--mode overview|node|innovation|branch] --target <id> |
Export a Markdown report |
| Subcommand | What it does |
|---|---|
diagram render <project> --specs <json|@file> --phase draft|final |
Batch render into figures/ (SVG+PNG), and auto-update MAIN.md figure references |
diagram status <project> |
Get the list of rendered figures (figureNumber, phase, file paths) |
diagram rerender <project> --figure <ID> --source <mmd|@file> --engine mermaid|plantuml |
Update single figure (use after editing Mermaid/PlantUML source) |
| Subcommand | What it does |
|---|---|
adapt setup [--tool claude-code|codex] [--workspace-dir .] |
Recommended entry. Installs editor configs, then shows the exact uninstall command |
adapt install |
Behavior identical to setup |
adapt uninstall [--tool <name>] [--workspace-dir .] |
Exact-file removal only. We do not touch your custom files |
adapt generate |
Writes to plugins/<tool>/ only, does not write to the workspace |
oh-my-patent tui [project-path]Launches an Ink+React terminal UI. Navigate the decision path, view scores, switch branches, and revive innovations β all locally, no internet needed.
User proposes a topic
β
[INIT] Generate `projects/{NN}-{topic_slug}/`
Initialize .patent/state.json + .brainstorm/path.json
β
[RESEARCH] Patent search
β references/landscape.md (generated by landscape-analyst)
β
[BRAINSTORM_R1] Round 1
Head-to-head: innovation-architect generates candidates + adversarial-examiner attacks them
Scores are recorded, innovation snapshots saved to .brainstorm/nodes/round-1.json
β
[BRAINSTORM_R2] Round 2
Deep assessment by security-engineer, compliance-analyst, and evaluator
β (threshold passed / 2 rounds done)
[DRAFT] Generate initial disclosure
β MAIN.md (generated by patent-disclosure-writer)
β
[QA_LOOP] Review-rebuttal loop
Reviewer raises issues β technical-responder writes revisions
β€ 6 rounds, exiting on 2 consecutive rounds with no new issues
β
[FINAL_REVIEW] Final pass, can loop back to QA_LOOP
β
[DIAGRAM] Automatically render patent figures
β figures/ (SVG + PNG, with automatic references rewritten in MAIN.md)
β
[DONE] Quality gate: quality-gate check β finished
If the agent crashes mid-sentence: read state.json β resume from the exact stage
If you regret a round: `path branch --from-node round-{N}` β explore an alternative
If a long-forgotten innovation was actually good: `path restore` β bring it back
The system is split into four layers:
| Layer | What it governs | Key files |
|---|---|---|
| Orchestration | Agent/skill/command definitions. Defined once, consumed everywhere | plugin.jsonc, opencode.jsonc, .opencode/skills/ |
| Engine | Path tracking, state machine, figure rendering, threshold logic | src/core/ |
| Command | Unified CLI layer wrapping the engine's capabilities | src/cli.ts, src/commands/ |
| Adapter | Converts orchestration definitions into Claude Code / Codex -ready configs | src/adapters/claude/, src/adapters/codex/ |
Data flow between the layers:
plugin.jsonc (orchestration layer definition)
β
[Adapters] generate automatically
β
.claude/ (Claude Code) <ββ one file, consumed all tools
.codex/ (Codex) <ββ
AGENTS.md / CLAUDE.md
codex.json
β
AI in your editor invokes 11 specialist agents
β
Output β .brainstorm/ decision-path records
Output β state.json workflow state machine
Output β references/ with standardized filenames
Output β MAIN.md + figures/
CLI commands = automated operations on .brainstorm/ + .patent/ + references/
TUI = visualized browsing of .brainstorm/
oh-my-patent/ # Core repo: configs and engine; no project deliverables
βββ src/
β βββ cli.ts # CLI entry point
β βββ core/
β β βββ brainstorm-path.ts # Decision-path data model + scoring thresholds
β β βββ path-persistence.ts # Atomic writes + rollback
β β βββ path-graph.ts # Graph structure + forking algorithms
β β βββ diagram-renderer.ts # Mermaid/PlantUML β SVG/PNG
β β βββ threshold-config.ts # Quantitative threshold model
β βββ commands/ # path init/record/overview/branch/restore...
β βββ adapters/ # Zero-config cross-tool adapters
β β βββ claude/ # β .claude/ + CLAUDE.md
β β βββ codex/ # β .codex/ + AGENTS.md + codex.json
β βββ tui/ # Ink+React interactive UI
βββ plugin.jsonc
βββ opencode.jsonc
βββ dist/ (compiled output)
projects/{NN}-{topic_slug}/ # One Git repo per patent
βββ .brainstorm/
β βββ path.json # Metadata + edges + current node + final decision
β βββ nodes/
β β βββ round-{n}.json # Round detail: scores, innovations, decisions, timestamps
β βββ snapshots/
β β βββ round-{n}-innovations.json # Innovation history snapshots
β βββ branches/
β βββ {branchId}/ # Branch steps β independent node copies
βββ .patent/
β βββ state.json # Workflow state machine: at DRAFT? QA round 3?
βββ references/
β βββ landscape.md # Search results
β βββ brainstorm_round1_archimedes.md
β βββ argue_round2_adversarial-examiner.md
β βββ ... # Every agent output follows a strict naming convention
βββ figures/
β βββ 001-system-overview.png
β βββ 001-system-overview.svg
β βββ figures-manifest.json # Version management
βββ MAIN.md # Final disclosure (auto-updated by diagram inserter)
βββ conversation.md # Chronological conversation log
npm run build # Compile TypeScript β dist/
npm test # Run the vitest test suite
npm run lint # tsc --noEmit type checkingSpecial thanks to:
- LINUX DO Community
- All contributors who helped improve this project
- The open-source community for the amazing tools and libraries that made this possible
MIT