Skip to content

Commit 81bac43

Browse files
authored
Merge pull request #25 from bx33661/bx3/fix-preflight-issues
feat: Campaign, PatternPacks, provenance, readiness gates + OSS polish
2 parents 9fadcaa + 7b6f5c8 commit 81bac43

161 files changed

Lines changed: 11493 additions & 720 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,19 @@
44
# Project-scoped Codex installs created by `omv setup --scope project`
55
.codex/
66

7-
# Local assistant/OpenSpec scaffolding and nested worktrees
7+
# Local assistant scaffolding and nested worktrees
88
.agents/
99
.claude/
1010
.github/prompts/
1111
.github/skills/
12-
openspec/
13-
SPEC.md
1412
oh-my-codex/
1513
oh-my-claudecode/
1614

15+
# OpenSpec: publish accepted specs; keep in-progress change drafts local
16+
openspec/changes/
17+
# Root historical vision draft only (do not match openspec/**/spec.md on case-insensitive FS)
18+
/SPEC.md
19+
1720
# TypeScript build output
1821
dist/
1922
node_modules/

.npmignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
**/__pycache__/**
2+
**/*.pyc
3+
**/*.pyd
4+
**/*.pyo
5+
**/test_*.py

AGENTS.md

Lines changed: 47 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -9,68 +9,44 @@ The project ships a TypeScript CLI (`omv`) for installing skills, plus Markdown
99
```
1010
src/
1111
cli/
12-
omv.ts — CLI entry point (setup / doctor / findings / help)
13-
setup.ts — copies installable skills to ~/.claude/skills/ or ./.claude/skills/
14-
doctor.ts — checks installation health
15-
findings.ts — creates, lists, validates, and promotes Evidence.v1 handoffs
16-
paths.ts — path utilities (claudeSkillsDir, projectSkillsDir, findingsDir, packageRoot, …)
12+
omv.ts — thin CLI entry (dispatches to commands/)
13+
commands/ — one module per top-level command (findings, campaign, review, …)
14+
findings.ts — Evidence.v1 parse / validate / score / doctor / archive
15+
workflow.ts — shared readiness + next-action policy
16+
review.ts — report-readiness verdicts (ready | needs-*)
17+
campaign.ts — Campaign.v1 first-mile research plans
18+
setup.ts / doctor.ts — install skills+agents; health checks
19+
paths.ts — claudeSkillsDir, findingsDir, packageRoot, …
1720
index.ts — package exports
1821
19-
skills/
20-
omv/SKILL.md — collection manager (/omv)
21-
omv-find/SKILL.md — find and rank audit targets (/omv-find)
22-
omv-find/references/
23-
scoring.md — scoring rubric, confidence adjustments, filtering, LOC estimation
24-
output-contract.md — final table contract, audit tips, invalid-request template
25-
omv-find/scripts/check_output.py — heuristic eval checker
26-
omv-find/evals/evals.json — behavior-focused eval scenarios
27-
omv-find/evals/golden/ — stable golden outputs
28-
omv-report/SKILL.md — generate VulDB/CVE/GHSA/OSV reports (/omv-report)
29-
omv-report/references/
30-
ecosystems.md — vendor/product/version rules, CWE mapping, duplicate-CVE databases
31-
report-templates.md — VulDB, GHSA, OSV JSON, Markdown advisory templates
32-
examples/ — filled advisory examples
33-
omv-report/scripts/check_output.py — heuristic eval checker
34-
omv-report/evals/evals.json — behavior-focused report-generation eval scenarios
35-
omv-report/evals/golden/ — stable golden outputs
22+
skills/ — 9 installable skills (self-contained after setup)
23+
omv, omv-find, omv-audit, omv-repro, omv-report,
24+
omv-radar, omv-dedup, omv-disclose, omv-critic
3625
3726
shared/
38-
references/
39-
ecosystems.md — ecosystem registry sources, GitHub search shapes, flagship exclusions
40-
vuln-patterns.md — vulnerability aliases and source -> sink -> guard patterns
41-
cvss-builder.md — CVSS v3.1 metric decision table and common vectors
42-
scripts/
43-
collect_metadata.py — collects GitHub and selected registry metadata as JSON
44-
estimate_loc.sh — estimates source LOC from a GitHub URL or local checkout
27+
references/ — ecosystems, vuln-patterns, cvss-builder, per-eco patterns/
28+
pattern-packs/ — 14 PatternPack.v1 JSON manifests
29+
scripts/ — collect_metadata, estimate_loc, run_evals, …
4530
4631
contracts/
47-
evidence.v1.yaml — finding object: the typed boundary between omv-find and omv-report
48-
candidate-list.v1.yaml — candidate table entry schema produced by omv-find
49-
threat-map.v1.yaml — dataflow threat map schema (planned: omv-audit M2+)
50-
51-
agents/
52-
vuln-scanner.md — passive candidate discovery
53-
dataflow-tracer.md — source -> sink -> guard analysis
54-
cvss-analyst.md — CVSS v3.1 computation
55-
dedup-analyst.md — duplicate CVE/GHSA search
56-
report-writer.md — platform-specific advisory rendering
57-
guard-checker.md — adversarial guard bypass assessment
58-
verifier.md — adversarial conclusion refutation
59-
60-
.claude/agents/ — Claude Code project subagent registration (auto-discovered)
61-
<name>.md — frontmatter (name, description, tools, model) + system prompt body
62-
Each subagent's body references the matching agents/*.md domain spec. See
63-
docs/architecture/agent-team-upgrade.md for the orchestration design.
32+
evidence.v1.yaml — finding object (find → report boundary)
33+
candidate-list.v1.yaml — omv-find table entries
34+
threat-map.v1.yaml — source → transform → sink graph (omv-audit sidecar)
35+
verification.v1.yaml — adversarial verifier review sidecar
36+
campaign.v1.yaml — research campaign plan + seed lanes
37+
source-ref.v1.yaml / report-provenance.v1.yaml / submission.v1.yaml
38+
39+
agents/ — Claude Code subagent specs (installed by omv setup)
40+
vuln-scanner, dataflow-tracer, guard-checker, cvss-analyst,
41+
dedup-analyst, report-writer, verifier
6442
6543
scripts/
66-
sync_metadata.py — sync package, registry, and README metadata
67-
sync_skill_assets.py — sync canonical shared/contract assets into self-contained skill dirs
68-
validate_skill.py — validates all skill directories and optional .skill packages
69-
package_skill.sh — builds a .skill archive from a skill directory
70-
release_check.py — release-time validator, package builder, SHA-256 manifest printer
71-
72-
registry.yaml — collection metadata: versions, produces/consumes bindings
73-
.github/workflows/validate.yml — CI validation, packaging checks, stable golden evals
44+
sync_metadata.py / sync_skill_assets.py / validate_skill.py
45+
package_skill.sh / release_check.py / pattern_packs.py
46+
47+
registry.yaml — skills, agents, contracts, versions
48+
openspec/ — accepted specs + change archive
49+
.github/workflows/validate.yml
7450
```
7551

7652
## CLI
@@ -86,13 +62,30 @@ npx oh-my-vul setup --dry-run # preview only
8662
omv doctor
8763
omv doctor --json
8864

65+
# Workspace + campaign
66+
omv dashboard
67+
omv first --target <name> --ecosystem npm --vuln traversal --no-interactive
68+
omv campaign list|show|seed <id>
69+
omv review <id> --strict
70+
8971
# Manage project-local Evidence.v1 findings
9072
omv findings list
9173
omv findings init <id>
9274
omv findings init <id> --status candidate|confirmed|blocked --force
9375
omv findings validate
9476
omv findings validate <id|path>
9577
omv findings promote <id|path> --status candidate|confirmed|blocked
78+
omv findings workflow
79+
omv findings doctor <id>
80+
omv findings archive <id> --reason blocked|reported
81+
82+
# Sidecars and release gates
83+
omv threat-map init|validate <id>
84+
omv verification init|validate <id>
85+
omv sources init|validate <id>
86+
omv report artifacts|provenance <id>
87+
omv repro init <id>
88+
omv eval --json
9689
```
9790

9891
Build the CLI:

CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,15 @@
22

33
## Unreleased
44

5-
- Richer ThreatMap.v1 rendering: `omv findings show` now displays the full `source → transforms → sink` dataflow per path with per-path confidence, bypassable guards, and a summary line. Previously the renderer collapsed each path to a single `[source] -> [sink]` line, discarding transforms, confidence, and the summary block that the producer now writes.
5+
### Planned for v0.10.0 — Campaign + evidence graph (draft)
6+
7+
Ship when release notes and `registry.yaml` / `package.json` versions are bumped together.
8+
9+
- **Campaign.v1 first-mile planning**`omv campaign init|list|show|seed` and the `omv first` alias. Seeding creates conservative candidate Evidence only and never overwrites existing findings or creates proof artifacts.
10+
- **SourceRef.v1 + report provenance**`omv sources init|show|validate` and `omv report provenance` manifests that hash Evidence, reports, and available local dependencies. Missing manifests warn; stale confirmed manifests fail artifact checks.
11+
- **PatternPack.v1 + unified evals** — 14 JSON pattern-pack manifests (including R/Lua), manifest-driven find/audit asset sync, and `omv eval` with human/JSON/JUnit output.
12+
- **ThreatMap rich render**`omv findings show` prints full `source → transforms → sink` paths with confidence, bypassable guards, and summary (no longer collapses to a single source→sink line).
13+
- **Readiness policy helpers**`isReportReady` / `isSubmissionScoreReady` / `resolveDoctorNextAction` in `workflow.ts` as the shared report-readiness gate used by doctor and review; maintainer docs (`AGENTS.md`, `CLAUDE.md`, `SPEC.md` banner) aligned with the current tree.
614

715
## v0.9.0 - CLI command split and local findings dedup
816

CLAUDE.md

Lines changed: 18 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -7,72 +7,32 @@ The project ships a TypeScript CLI (`omv`) for installing skills, plus Markdown
77
## Structure
88

99
```
10-
src/
11-
cli/
12-
omv.ts — CLI entry point (setup / doctor / help)
13-
setup.ts — copies skills/ to ~/.claude/skills/
14-
doctor.ts — checks installation health
15-
paths.ts — path utilities (claudeSkillsDir, packageRoot, …)
16-
index.ts — package exports
17-
18-
skills/
19-
omv/SKILL.md — collection manager (/omv)
20-
omv-find/SKILL.md — find and rank audit targets (/omv-find)
21-
omv-find/references/
22-
scoring.md — scoring rubric, confidence adjustments, filtering, LOC estimation
23-
output-contract.md — final table contract, audit tips, invalid-request template
24-
omv-find/scripts/check_output.py — heuristic eval checker
25-
omv-find/evals/evals.json — behavior-focused eval scenarios
26-
omv-find/evals/golden/ — stable golden outputs
27-
omv-report/SKILL.md — generate VulDB/CVE/GHSA/OSV reports (/omv-report)
28-
omv-report/references/
29-
ecosystems.md — vendor/product/version rules, CWE mapping, duplicate-CVE databases
30-
report-templates.md — VulDB, GHSA, OSV JSON, Markdown advisory templates
31-
examples/ — filled advisory examples
32-
omv-report/scripts/check_output.py — heuristic eval checker
33-
omv-report/evals/evals.json — behavior-focused report-generation eval scenarios
34-
omv-report/evals/golden/ — stable golden outputs
35-
36-
shared/
37-
references/
38-
ecosystems.md — ecosystem registry sources, GitHub search shapes, flagship exclusions
39-
vuln-patterns.md — vulnerability aliases and source -> sink -> guard patterns
40-
cvss-builder.md — CVSS v3.1 metric decision table and common vectors
41-
scripts/
42-
collect_metadata.py — collects GitHub and selected registry metadata as JSON
43-
estimate_loc.sh — estimates source LOC from a GitHub URL or local checkout
44-
45-
contracts/
46-
evidence.v1.yaml — finding object: the typed boundary between omv-find and omv-report
47-
candidate-list.v1.yaml — candidate table entry schema produced by omv-find
48-
threat-map.v1.yaml — dataflow threat map schema (planned: omv-audit M2+)
49-
50-
agents/
51-
vuln-scanner.md — passive candidate discovery
52-
dataflow-tracer.md — source -> sink -> guard analysis
53-
cvss-analyst.md — CVSS v3.1 computation
54-
dedup-analyst.md — duplicate CVE/GHSA search
55-
report-writer.md — platform-specific advisory rendering
56-
57-
scripts/
58-
validate_skill.py — validates all skill directories and optional .skill packages
59-
package_skill.sh — builds a .skill archive from a skill directory
60-
release_check.py — release-time validator, package builder, SHA-256 manifest printer
61-
62-
registry.yaml — collection metadata: versions, produces/consumes bindings
63-
.github/workflows/validate.yml — CI validation, packaging checks, stable golden evals
10+
src/cli/ — TypeScript CLI (commands/ split; findings/workflow/review/campaign domain modules)
11+
skills/ — 9 omv-* skills (find, audit, repro, report, radar, dedup, disclose, critic, manager)
12+
shared/ — references, pattern-packs, eval runner helpers
13+
contracts/ — Evidence, ThreatMap, Verification, Campaign, SourceRef, Submission, …
14+
agents/ — subagent specs installed to ~/.claude/agents/ by omv setup
15+
openspec/ — accepted specs + change archive
16+
registry.yaml — versions and produces/consumes bindings
6417
```
6518

19+
Canonical maintainer map: see `AGENTS.md` (kept in sync with the current tree). Early vision draft `SPEC.md` is historical only.
20+
6621
## CLI
6722

6823
```sh
69-
# Install skills to ~/.claude/skills/
24+
# Install skills + agents
7025
npx oh-my-vul setup
71-
npx oh-my-vul setup --force # overwrite existing
72-
npx oh-my-vul setup --dry-run # preview only
26+
npx oh-my-vul setup --scope project
27+
npx oh-my-vul setup --force
28+
npx oh-my-vul setup --dry-run
7329

74-
# Check installation health
30+
# Health and workspace
7531
omv doctor
32+
omv doctor --strict
33+
omv dashboard
34+
omv review <id> --strict
35+
omv findings workflow
7636
```
7737

7838
Build the CLI:

CODE_OF_CONDUCT.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, caste, color, religion, or sexual
10+
identity and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
14+
15+
## Our Standards
16+
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
19+
20+
* Demonstrating empathy and kindness toward other people
21+
* Being respectful of differing opinions, viewpoints, and experiences
22+
* Giving and gracefully accepting constructive feedback
23+
* Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
* Focusing on what is best not just for us as individuals, but for the overall
26+
community
27+
28+
Examples of unacceptable behavior include:
29+
30+
* The use of sexualized language or imagery, and sexual attention or advances of
31+
any kind
32+
* Trolling, insulting or derogatory comments, and personal or political attacks
33+
* Public or private harassment
34+
* Publishing others' private information, such as a physical or email address,
35+
without their explicit permission
36+
* Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
## Security Research Norms
40+
41+
This project is for **passive vulnerability research** and responsible disclosure
42+
preparation. Community participation also means:
43+
44+
* Do not share live exploit traffic against third-party systems
45+
* Do not post real private finding evidence, credentials, or unreleased
46+
vulnerability details in issues or pull requests
47+
* Prefer sanitized fixtures and public, already-disclosed examples in demos
48+
49+
## Enforcement Responsibilities
50+
51+
Project maintainers are responsible for clarifying and enforcing our standards of
52+
acceptable behavior and will take appropriate and fair corrective action in
53+
response to any behavior that they deem inappropriate, threatening, offensive,
54+
or harmful.
55+
56+
## Scope
57+
58+
This Code of Conduct applies within all community spaces, and also applies when
59+
an individual is officially representing the community in public spaces.
60+
61+
## Enforcement
62+
63+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
64+
reported to the project maintainers through the contact options listed in
65+
[SECURITY.md](SECURITY.md). All complaints will be reviewed and investigated
66+
promptly and fairly.
67+
68+
## Attribution
69+
70+
This Code of Conduct is adapted from the
71+
[Contributor Covenant](https://www.contributor-covenant.org), version 2.1,
72+
available at
73+
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.

CONTRIBUTING.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
Thanks for helping improve `oh-my-vul`. This project is a Claude Code skill collection, so the most important contribution quality is reproducibility: installed skills, `.skill` archives, and source checkout behavior should all match.
44

5+
By participating, you agree to the [Code of Conduct](CODE_OF_CONDUCT.md).
6+
7+
**Do not commit** local research state (`.omv/`), secrets, live target data, or unreleased vulnerability details. Use sanitized fixtures in issues and pull requests.
8+
9+
Accepted behavior specs live under [`openspec/specs/`](openspec/specs/). In-progress OpenSpec change drafts stay local (`openspec/changes/` is gitignored).
10+
511
## Development Setup
612

713
```sh

0 commit comments

Comments
 (0)