You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`oh-my-vul` is a local-first, evidence-driven vulnerability research CLI and Skill collection. Keep research passive and reproduction local. Never weaken evidence gates to make a finding appear report-ready.
6
+
7
+
## Layout
8
+
9
+
-`src/cli/`: TypeScript CLI, domain workflows, renderers, and Ink TUI.
10
+
-`src/cli/__tests__/`: Node test runner coverage for CLI and TUI behavior.
11
+
-`skills/`: Canonical distributable Skills and their references, scripts, contracts, and evals.
12
+
-`agents/`: Claude Code-specific optional subagent definitions.
13
+
-`contracts/` and `shared/`: Canonical schemas and assets synchronized into Skills.
14
+
-`scripts/`: metadata, asset, packaging, and release validation.
15
+
-`openspec/`: local design artifacts; do not archive a change unless explicitly requested.
16
+
17
+
## Development
18
+
19
+
- Runtime baseline: Node.js 22 or later.
20
+
- Install dependencies with `npm install`.
21
+
- Use `npm run typecheck` for a fast TypeScript check.
22
+
- Use `npm run build && npm test` for implementation changes.
23
+
- Use `npm run release:check` before release-facing handoff.
24
+
- Run `npm run sync-assets` after changing canonical shared assets.
25
+
- Run `npm run sync-metadata` after changing package or registry metadata.
26
+
27
+
## Conventions
28
+
29
+
- Preserve deterministic JSON and non-TTY output. Ink must remain TTY-only.
30
+
- Keep `.omv/` research state private and out of source control.
31
+
- Use sanitized `demo-*`, `example-*`, or `fixture-*` data in tests and docs.
32
+
- Treat `unknown` as a valid evidence state; do not infer exploitability or observed results.
33
+
- Keep Codex and Claude Code setup paths isolated. Codex uses `.agents/skills`; Claude Code uses `.claude/skills` and optional `.claude/agents`.
34
+
- Update tests, user documentation, and `CHANGELOG.md` when behavior is user-visible.
35
+
36
+
## Completion
37
+
38
+
A change is complete when relevant tests pass, generated assets and metadata are synchronized, `git diff --check` is clean, and release-facing changes pass `npm run release:check`.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+18Lines changed: 18 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,24 @@
2
2
3
3
## Unreleased
4
4
5
+
- Added Windows as a validated platform with Python 3 runtime discovery, shell-independent Node test execution, cross-platform Skill packaging and LOC estimation, and an Ubuntu/Windows CI matrix. Claude Code remains the default platform when `--platform` is omitted.
6
+
- Reduced install overhead by replacing the static `boxen` and `cli-table3` output layer with the built-in responsive renderer, removing 21 packages from a clean npm install.
7
+
- Improved first-run setup with automatic platform-scoped health verification, explicit restart and Skill invocation guidance, compact install paths, accurate dry-run labels, and clearer download/upgrade documentation.
8
+
9
+
## v1.0.0 - 2026-07-11
10
+
11
+
- Froze the 1.0 CLI compatibility surface: workflow-first public help, grouped advanced automation commands, Skill-managed primitives hidden from public catalogs, and canonical `start`, `dashboard`, and `review` workflows replacing redundant wrappers.
12
+
- Froze the remaining 1.0 compatibility boundaries with root-only Node package exports, inventoried runtime/type exports, required-field JSON contracts for every public automation command, parser-aware `.omv` contract versioning, and package-to-installed-Skill content drift checks.
13
+
- Removed the pre-1.0 `first`, `workspace init`, `findings workflow`, `findings doctor`, `findings open`, and permanent `findings delete` routes with focused migration errors.
14
+
- Removed the undocumented experimental `omv-mcp` executable and its custom line-delimited JSON protocol before the 1.0 compatibility boundary.
15
+
- Added first-class Codex setup, doctor, and uninstall support using official `~/.agents/skills` and `.agents/skills` discovery paths, with platform-specific manifests and repository guidance in `AGENTS.md`.
16
+
- Raised the runtime baseline to Node.js 22 and added an Ink 7 / React 19 interactive research workspace.
17
+
- Bare `omv` now opens the responsive workspace in a real TTY; `omv tui` is the explicit entry, while `omv dashboard`, `--no-tui`, pipes, CI, and JSON remain deterministic plain output.
18
+
- Added keyboard workflow navigation, live filtering, evidence-first finding inspection, action-surface guidance, help, refresh, narrow-terminal layouts, and an interactive guided start flow.
19
+
- Hardened detail refresh/error recovery, explicit plain-mode routing, and terminal layouts down to a bounded 52x16 minimum.
20
+
- Expanded the TUI with Overview, Findings, Campaign, and Activity views; Summary/Evidence/Threat/History detail tabs; structured filters; and a read-only command palette.
21
+
- Added V3 full-width wrapped finding and Activity-event detail with scrolling and range indicators, plus paged access to the latest 200 Activity entries.
22
+
5
23
## v0.10.1 - npx package binary alias
6
24
7
25
- Register `oh-my-vul` as a package bin alias for `omv`, so `npx oh-my-vul setup` works. Previously only `omv` / `omv-mcp` were exported, which made npx report "could not determine executable to run".
Copy file name to clipboardExpand all lines: README.md
+85-14Lines changed: 85 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
# oh-my-vul
4
4
5
-
**Evidence-first vulnerability research for Claude Code.**
5
+
**Evidence-first vulnerability research for Codex and Claude Code.**
6
6
7
7
Plan the research, trace the evidence, reproduce locally, and turn confirmed findings into review-ready reports.
8
8
@@ -16,7 +16,7 @@ Plan the research, trace the evidence, reproduce locally, and turn confirmed fin
16
16
17
17
---
18
18
19
-
`oh-my-vul` combines Claude Code skills with a local CLI to make open-source vulnerability research repeatable:
19
+
`oh-my-vul` combines agent skills with a local CLI to make open-source vulnerability research repeatable in Codex and Claude Code:
20
20
21
21
-**Start with a clear scope.** Campaigns and attack-surface cards turn a broad target into focused research questions.
22
22
-**Keep claims tied to evidence.** Findings record the tested version, source, sink, guards, reproduction, and remaining unknowns.
@@ -26,15 +26,17 @@ Research state stays in a private `.omv/` workspace. The project is designed for
26
26
27
27
## Quick Start
28
28
29
-
**Requirements:**[Claude Code](https://docs.anthropic.com/en/docs/claude-code) and Node.js 20 or later.
29
+
**Requirements:**[Codex](https://developers.openai.com/codex/) or [Claude Code](https://docs.anthropic.com/en/docs/claude-code), Node.js 22 or later, and Python 3 for bundled Skill helpers. Windows, Linux, and macOS are supported; on Windows, use a modern Windows Terminal or PowerShell for the Ink workspace.
30
30
31
-
Install the CLI and add the skills and agents to Claude Code:
31
+
Install the CLI and add the skills to Codex:
32
32
33
33
```sh
34
-
npm install --global oh-my-vul
35
-
omv setup
34
+
npm install --global oh-my-vul@latest
35
+
omv setup --platform codex
36
36
```
37
37
38
+
`setup` prints the destination and immediately verifies the completed install. Once every check passes, restart Codex and invoke `$omv`. Codex installs user skills under `~/.agents/skills`. For Claude Code, run `omv setup --platform claude-code`, restart it, and invoke `/omv`. Claude Code remains the backward-compatible default platform.
39
+
38
40
From the root of the project you want to research, start a guided workspace:
39
41
40
42
```sh
@@ -47,42 +49,111 @@ omv start
47
49
omv start --vuln xss,auth --no-interactive
48
50
```
49
51
50
-
Open that project in Claude Code, then run:
52
+
Open that project in Codex, then invoke the Skill (or choose it from `/skills`):
51
53
52
54
```text
53
-
/omv
55
+
$omv
54
56
```
55
57
56
-
`/omv` applies the evidence and review gates, shows the active queue, and recommends the next action. From the shell, bare `omv` opens the same contextual workspace view.
58
+
Claude Code users invoke `/omv`. The Skill applies the evidence and review gates, shows the active queue, and recommends the next action. From an interactive terminal, bare `omv` opens the Ink research workspace.
59
+
60
+
## Interactive Workspace
61
+
62
+
Run `omv` or `omv tui` in a terminal to browse the priority queue and inspect evidence without leaving the shell:
63
+
64
+
```text
65
+
Tab / 1-4 Cycle or jump to Overview, Findings, Campaign, and Activity
66
+
↑/↓ or j/k Move through findings
67
+
/ Search by id, package, status, vulnerability, or action
68
+
f Filter by lifecycle status and action surface
69
+
Enter Switch queue/detail on narrow terminals
70
+
[ / ] Switch Summary, Evidence, Threat, and History detail tabs
71
+
Space Expand the selected finding or Activity event full-width
72
+
PgUp/PgDn Page through expanded detail or Activity history
73
+
g / G Jump to the first or last available line
74
+
: Open the read-only command palette
75
+
a Explain the selected CLI or agent action
76
+
r Refresh local workspace state
77
+
? Show keyboard help
78
+
q Quit and restore the previous terminal screen
79
+
```
80
+
81
+
The Findings view keeps the priority queue and splits local detail into Summary, Evidence, Threat, and History. Compact and split views may abbreviate text to preserve layout; press `Space` to open complete logical fields full-width, wrapped to the current terminal, with a visible line range and scrolling. Overview highlights current scope and next priority, Campaign shows lane counts and deterministic next actions, and Activity pages through the latest 200 local lifecycle changes. Activity rows are selectable and `Space` reveals the complete event reason, transition, and path. Structured filters compose with text search. The command palette navigates and performs local UI actions only.
82
+
83
+
The workspace is read-only: it displays commands but never executes research commands or agent skill invocations. Use `omv dashboard` for deterministic plain output, or `omv --no-tui` / `omv tui --no-tui` to disable interactive rendering. JSON commands and piped output never start Ink. Terminals below 52 columns or 16 rows show a bounded resize prompt instead of an overflowing workspace.
Every real `setup` now runs the matching platform and scope health check automatically. Run `omv doctor --strict --platform codex` separately only when diagnosing installation drift.
Replace `codex` with `claude-code` for a Claude Code installation. The two platforms use separate directories and manifests, so both can be installed safely. If a global npm install reports a permissions error, fix npm's user-level prefix instead of installing this package with `sudo`.
-**Advanced automation:** public `campaign`, `findings`, `workspace`, `radar`, `dedup`, `disclose`, `submissions`, and `config` commands listed by `omv help --all`.
129
+
130
+
Documented arguments, exit behavior, and `--json` output from those public commands follow SemVer compatibility within 1.x. Artifact scaffolding and diagnostics invoked by bundled Skills (`campaign surfaces/seed`, `eval`, `request`, `repro`, `sources`, `report`, `threat-map`, and `verification`) are deterministic but Skill-managed; use the versions installed from the same package release.
131
+
132
+
For JSON automation, [contracts/cli-json.v1.json](contracts/cli-json.v1.json) lists every public JSON form, its result kind, required typed fields, and gate behavior. Existing listed fields keep their type and meaning throughout 1.x; commands may add fields. Validation and readiness commands may return a complete diagnostic JSON document with a non-zero exit when a documented gate is not met.
Deep imports such as `oh-my-vul/dist/cli/*` are private implementation details and are blocked by the package export map. The exact runtime and type allowlist lives in [contracts/node-api.v1.json](contracts/node-api.v1.json).
141
+
142
+
Versioned `.omv` formats follow [the contract compatibility policy](contracts/README.md) and the inventory in [contracts/artifact-contracts.v1.json](contracts/artifact-contracts.v1.json). Closed contracts require a new major for any field-set change; extensible contracts permit optional additions only when supported readers and writers remain compatible. Package upgrades never rewrite private research data solely to update a schema.
143
+
144
+
CLI and bundled Skills are release-coupled. Run `omv doctor --platform codex` or `omv doctor --platform claude-code` after an upgrade; content or version drift is repaired explicitly with the scoped `omv setup ... --force` command printed by doctor.
145
+
146
+
The 1.0 surface replaces earlier redundant commands:
147
+
148
+
| Removed before 1.0 | Canonical command |
149
+
|---|---|
150
+
|`omv first`|`omv start` or `omv campaign init`|
151
+
|`omv workspace init`|`omv start`|
152
+
|`omv findings workflow`|`omv dashboard`|
153
+
|`omv findings doctor <id>`|`omv review <id>`|
154
+
|`omv findings open <id>`|`omv findings show <id>`|
0 commit comments