@trac3er/oh-my-god 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "OMG - Oh-My-God for Claude Code",
9
- "version": "2.0.1",
9
+ "version": "2.0.2",
10
10
  "homepage": "https://github.com/trac3er00/OMG",
11
11
  "repository": "https://github.com/trac3er00/OMG"
12
12
  },
@@ -14,7 +14,7 @@
14
14
  {
15
15
  "name": "omg",
16
16
  "description": "OMG plugin layer for Claude Code with native setup, orchestration, and interop.",
17
- "version": "2.0.1",
17
+ "version": "2.0.2",
18
18
  "source": "./",
19
19
  "author": {
20
20
  "name": "trac3er00"
@@ -32,5 +32,5 @@
32
32
  ]
33
33
  }
34
34
  ],
35
- "version": "2.0.1"
35
+ "version": "2.0.2"
36
36
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omg",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "OMG plugin layer for Claude Code with native setup, orchestration, and interop.",
5
5
  "author": {
6
6
  "name": "trac3er00"
package/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+
3
+ ## 2.0.2 - 2026-03-06
4
+
5
+ - cleaned the repo for public launch by removing internal planning docs and stale private references
6
+ - added a public-readiness checker plus CI enforcement for docs, links, and community templates
7
+ - rewrote the public docs funnel around install, `/OMG:setup`, `/OMG:crazy`, proof, and contribution guidance
8
+
9
+ ## 2.0.1 - 2026-03-06
10
+
11
+ - standardized OMG public identity across docs, package metadata, plugin metadata, and CLI surfaces
12
+ - added native adoption flow through `OMG-setup.sh` and `/OMG:setup` with `OMG-only` and `coexist` modes
13
+ - added public-readiness hygiene checks and contributor-facing repo docs
14
+ - rewrote the public docs funnel around host install, `/OMG:setup`, `/OMG:crazy`, and proof-backed verification
@@ -0,0 +1,27 @@
1
+ # Code of Conduct
2
+
3
+ ## Our Standard
4
+
5
+ Treat contributors with respect. Discussions should stay technical, honest, and focused on moving the work forward.
6
+
7
+ Expected behavior:
8
+
9
+ - assume good intent
10
+ - critique ideas directly and respectfully
11
+ - provide evidence for technical claims
12
+ - avoid harassment, intimidation, or discriminatory language
13
+
14
+ Unacceptable behavior:
15
+
16
+ - personal attacks
17
+ - doxxing or privacy violations
18
+ - harassment or sustained disruption
19
+ - abusive, discriminatory, or sexualized language
20
+
21
+ ## Enforcement
22
+
23
+ Project maintainers may remove comments, reject contributions, or restrict participation when behavior makes the project unsafe or unproductive.
24
+
25
+ ## Scope
26
+
27
+ This applies to issues, pull requests, discussions, and other project communication spaces.
@@ -0,0 +1,62 @@
1
+ # Contributing to OMG
2
+
3
+ Thanks for contributing to OMG.
4
+
5
+ ## Local Setup
6
+
7
+ ```bash
8
+ python3 -m venv .venv
9
+ source .venv/bin/activate
10
+ pip install -r requirements.txt
11
+ python3 -m pytest tests -q
12
+ ```
13
+
14
+ If you are validating the public launch surface, also run:
15
+
16
+ ```bash
17
+ python3 scripts/check-omg-public-ready.py
18
+ python3 scripts/check-omg-standalone-clean.py
19
+ ./scripts/verify-standalone.sh
20
+ ```
21
+
22
+ ## Workflow
23
+
24
+ 1. Create a branch from `main`.
25
+ 2. Keep changes surgical and evidence-backed.
26
+ 3. Add or update tests before changing behavior.
27
+ 4. Run the relevant targeted tests while iterating.
28
+ 5. Run `python3 -m pytest tests -q` before opening a PR.
29
+
30
+ ## Pull Requests
31
+
32
+ PRs should explain:
33
+
34
+ - what changed
35
+ - why it changed
36
+ - how it was verified
37
+ - any follow-up risk or known limitation
38
+
39
+ Public-surface changes should also mention whether README, proof docs, install docs, and community docs stayed consistent.
40
+
41
+ ## Versioning and Releases
42
+
43
+ - OMG uses semantic version tags such as `v2.0.1`.
44
+ - `package.json`, plugin metadata, and release tags must agree before a release is cut.
45
+ - npm publishing is driven by the `publish-npm.yml` workflow on version tags.
46
+
47
+ Before cutting a release, run the checklist in [docs/release-checklist.md](docs/release-checklist.md).
48
+
49
+ ## CI Gates
50
+
51
+ The public release path is expected to pass:
52
+
53
+ - compat gate
54
+ - public-readiness hygiene check
55
+ - standalone verification
56
+ - full pytest suite
57
+
58
+ ## Scope Guidance
59
+
60
+ - Keep OMC, OMX, and Superpowers mentions limited to compatibility and adoption guidance.
61
+ - Avoid adding public commands that mirror another project's branding or command names.
62
+ - Prefer OMG-native setup and orchestration language in docs and UX.
package/OMG-setup.sh CHANGED
@@ -5,7 +5,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
5
  CLAUDE_DIR="${CLAUDE_CONFIG_DIR:-$HOME/.claude}"
6
6
  BACKUP_TS="$(date +%Y%m%d_%H%M%S)"
7
7
  BACKUP_DIR="$CLAUDE_DIR/.omg-backup-$BACKUP_TS"
8
- VERSION="2.0.1"
8
+ VERSION="2.0.2"
9
9
 
10
10
  PLUGIN_NAME="omg"
11
11
  PLUGIN_MARKETPLACE="omg"
package/README.md CHANGED
@@ -1,104 +1,91 @@
1
- # OMG 2.0.1
1
+ # OMG 2.0.2
2
2
 
3
- OMG upgrades your agent host instead of replacing it. It gives Claude Code, Codex, OpenCode, and other supported CLIs a tighter setup flow, stronger orchestration, adoption paths from older plugin stacks, and proof-backed verification.
3
+ [![Compat Gate](https://github.com/trac3er00/OMG/actions/workflows/omg-compat-gate.yml/badge.svg)](https://github.com/trac3er00/OMG/actions/workflows/omg-compat-gate.yml)
4
+ [![npm version](https://img.shields.io/npm/v/%40trac3er%2Foh-my-god)](https://www.npmjs.com/package/@trac3er/oh-my-god)
5
+ [![License](https://img.shields.io/github/license/trac3er00/OMG)](LICENSE)
6
+
7
+ OMG upgrades your agent host instead of replacing it. It gives Claude Code, Codex, OpenCode, and other supported CLIs a tighter setup flow, stronger orchestration, native adoption from older plugin stacks, and proof-backed verification.
4
8
 
5
9
  - Brand: `OMG`
6
10
  - Repo: `https://github.com/trac3er00/OMG`
7
11
  - npm: `@trac3er/oh-my-god`
8
12
  - Plugin id: `omg`
9
13
  - Marketplace id: `omg`
10
- - Version: `2.0.1`
11
-
12
- ## The Front Door
13
-
14
- OMG keeps the public journey small:
15
-
16
- 1. Install for your host.
17
- 2. Run `/OMG:setup`.
18
- 3. Run `/OMG:crazy <goal>`.
19
-
20
- Everything else is still available, but `setup` and `crazy` are the native OMG entrypoints.
14
+ - Version: `2.0.2`
21
15
 
22
- ## What OMG Does
16
+ ## Why OMG
23
17
 
24
- - Upgrades Claude Code, Codex, and OpenCode with a shared orchestration layer.
25
- - Detects overlapping ecosystems and offers native OMG adoption instead of public migration commands.
26
- - Supports two adoption modes:
27
- - `OMG-only`: recommended. OMG becomes the primary hooks, HUD, MCP, and orchestration layer.
28
- - `coexist`: advanced. OMG preserves other ecosystems where possible and avoids destructive overlap.
29
- - Presets reduce feature-flag sprawl:
30
- - `safe`
31
- - `balanced`
32
- - `interop`
33
- - `labs`
34
- - Keeps `compat` available for legacy skill routing without making it the main onboarding story.
18
+ - Small front door: install, run `/OMG:setup`, then `/OMG:crazy <goal>`.
19
+ - Multi-host support: Claude Code, Codex, OpenCode, Gemini CLI, and Kimi CLI.
20
+ - Native adoption: setup detects OMC, OMX, and Superpowers-style environments without exposing copycat public migration commands.
21
+ - Proof-first delivery: verification, provider coverage, HUD artifacts, and transcripts are published instead of implied.
35
22
 
36
- ## Supported Hosts
23
+ ![OMG HUD](docs/assets/omg-hud.svg)
37
24
 
38
- - Claude Code
39
- - Codex
40
- - OpenCode
41
- - Gemini CLI
42
- - Kimi CLI
25
+ ## Quickstart
43
26
 
44
- Claude Code, Codex, and OpenCode are the primary top-level install journeys in this release.
45
-
46
- ## Install
47
-
48
- ### npm
27
+ Install with npm:
49
28
 
50
29
  ```bash
51
30
  npm install @trac3er/oh-my-god
52
31
  ```
53
32
 
54
- ### git
33
+ Or clone and run the setup manager:
55
34
 
56
35
  ```bash
57
36
  git clone https://github.com/trac3er00/OMG
58
37
  cd OMG
59
38
  chmod +x OMG-setup.sh
60
- ./OMG-setup.sh install
39
+ ./OMG-setup.sh install --mode=omg-only --preset=balanced
61
40
  ```
62
41
 
63
- ### Host Guides
42
+ Then run:
64
43
 
65
- - Claude Code: [docs/install/claude-code.md](/Users/cminseo/Documents/scripts/Shell/OMG/docs/install/claude-code.md)
66
- - Codex: [docs/install/codex.md](/Users/cminseo/Documents/scripts/Shell/OMG/docs/install/codex.md)
67
- - OpenCode: [docs/install/opencode.md](/Users/cminseo/Documents/scripts/Shell/OMG/docs/install/opencode.md)
44
+ ```text
45
+ /OMG:setup
46
+ /OMG:crazy stabilize auth and dashboard flows
47
+ ```
68
48
 
69
- ## Native Adoption
49
+ Success looks like:
70
50
 
71
- OMG can adopt setups coming from OMC, OMX, and Superpowers-style environments through `/OMG:setup` and `OMG-setup.sh`.
51
+ - supported hosts are detected
52
+ - `.mcp.json` is configured
53
+ - `.omg/state/adoption-report.json` is written when another ecosystem is present
54
+ - OMG reports the selected preset and next step
72
55
 
73
- - It detects overlapping ecosystems internally.
74
- - It writes an adoption report to `.omg/state/adoption-report.json`.
75
- - It recommends `OMG-only` and keeps `coexist` available when you want a non-destructive landing.
56
+ ## Install Guides
76
57
 
77
- Details: [docs/migration/native-adoption.md](/Users/cminseo/Documents/scripts/Shell/OMG/docs/migration/native-adoption.md)
58
+ - Claude Code: [docs/install/claude-code.md](docs/install/claude-code.md)
59
+ - Codex: [docs/install/codex.md](docs/install/codex.md)
60
+ - OpenCode: [docs/install/opencode.md](docs/install/opencode.md)
78
61
 
79
- ## Proof
62
+ ## Native Adoption
63
+
64
+ OMG uses native setup language instead of public migration commands.
65
+
66
+ - `OMG-only`: recommended. OMG becomes the primary hooks, HUD, MCP, and orchestration layer.
67
+ - `coexist`: advanced. OMG preserves non-conflicting third-party surfaces and records overlap instead of overwriting it.
68
+ - Presets: `safe`, `balanced`, `interop`, `labs`.
80
69
 
81
- Trust is a product surface. OMG publishes proof for:
70
+ Compatibility references to OMC, OMX, and Superpowers are documented here: [docs/migration/native-adoption.md](docs/migration/native-adoption.md)
82
71
 
83
- - current verification results
84
- - verification status
85
- - provider coverage
86
- - adoption evidence
87
- - HUD artifact
88
- - sample transcripts
72
+ ## Proof
89
73
 
90
- Current local verification for this release: `2444 passed, 2 skipped` on March 6, 2026.
74
+ Current local verification for this release: `2452 passed, 2 skipped` on March 6, 2026.
91
75
 
92
- See [docs/proof.md](/Users/cminseo/Documents/scripts/Shell/OMG/docs/proof.md).
76
+ - Verification and provider matrix: [docs/proof.md](docs/proof.md)
77
+ - Sample setup transcript: [docs/transcripts/setup.md](docs/transcripts/setup.md)
78
+ - Sample crazy transcript: [docs/transcripts/crazy.md](docs/transcripts/crazy.md)
79
+ - Release process: [docs/release-checklist.md](docs/release-checklist.md)
93
80
 
94
- ## Commands
81
+ ## Command Surface
95
82
 
96
- Primary:
83
+ Primary entry points:
97
84
 
98
85
  - `/OMG:setup`
99
86
  - `/OMG:crazy`
100
87
 
101
- Advanced:
88
+ Advanced surfaces stay available for deeper workflows:
102
89
 
103
90
  - `/OMG:teams`
104
91
  - `/OMG:ccg`
@@ -106,6 +93,14 @@ Advanced:
106
93
  - `/OMG:ship`
107
94
  - `/OMG:security-review`
108
95
 
96
+ ## Contributing
97
+
98
+ Public contributions are welcome.
99
+
100
+ - Contribution guide: [CONTRIBUTING.md](CONTRIBUTING.md)
101
+ - Security reporting: [SECURITY.md](SECURITY.md)
102
+ - Changelog: [CHANGELOG.md](CHANGELOG.md)
103
+
109
104
  ## Positioning
110
105
 
111
106
  OMG is a plugin and orchestration layer for supported CLIs. It is not a base-model training project. The goal is to make frontier agent hosts tighter, safer, more interoperable, and more verifiable than the default experience.
package/SECURITY.md ADDED
@@ -0,0 +1,25 @@
1
+ # Security Policy
2
+
3
+ ## Reporting a Vulnerability
4
+
5
+ Please use GitHub's private vulnerability reporting for this repository if it is enabled.
6
+
7
+ If private reporting is not available, do not open a public issue with exploit details. Open a minimal issue asking for a private contact path through the maintainer's GitHub profile instead.
8
+
9
+ Include:
10
+
11
+ - affected version
12
+ - impact
13
+ - reproduction steps
14
+ - proof of concept if safe to share privately
15
+ - suggested mitigation if known
16
+
17
+ ## Response Expectations
18
+
19
+ - We will triage reports before public discussion.
20
+ - We may ask for additional reproduction details.
21
+ - Coordinated disclosure is preferred over immediate public disclosure.
22
+
23
+ ## Supported Versions
24
+
25
+ Security fixes are prioritized for the latest released version.
@@ -69,3 +69,11 @@ The command emits a final summary that includes:
69
69
  - selected preset
70
70
  - selected adoption mode
71
71
  - adoption report path
72
+
73
+ ## Public Path
74
+
75
+ The public OMG journey is:
76
+
77
+ 1. install for your host
78
+ 2. run `/OMG:setup`
79
+ 3. run `/OMG:crazy <goal>`
@@ -8,7 +8,7 @@ at .omg/state/credentials.meta.
8
8
  CLI: python hooks/credential_store.py {add,list,remove,rotate} [options]
9
9
 
10
10
  Feature flag: OMG_MULTI_CREDENTIAL_ENABLED (default off)
11
- Design ref: .sisyphus/credential-store-design.md
11
+ Design note: encrypted credentials live in OMG-managed state under .omg/state
12
12
  """
13
13
  from __future__ import annotations
14
14
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trac3er/oh-my-god",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "OMG (Oh My God) — Multi-agent orchestration, intelligent model routing, and durable session state for Claude Code",
5
5
  "main": "OMG-setup.sh",
6
6
  "scripts": {
package/plugins/README.md CHANGED
@@ -47,3 +47,8 @@ plugins/
47
47
  ## Adoption Notes
48
48
 
49
49
  Public migration commands are intentionally avoided. OMG uses `/OMG:setup` and `OMG-setup.sh` to detect and adopt older ecosystems internally, while `compat` remains focused on legacy skill routing.
50
+
51
+ ## Public Docs
52
+
53
+ - Install guides live in [docs/install/claude-code.md](../docs/install/claude-code.md), [docs/install/codex.md](../docs/install/codex.md), and [docs/install/opencode.md](../docs/install/opencode.md).
54
+ - Proof surface lives in [docs/proof.md](../docs/proof.md).
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omg-core",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "Core OMG commands - native setup, routing, orchestration, and verification surfaces",
5
5
  "type": "omg-plugin",
6
6
  "commands": {
@@ -11,7 +11,7 @@ CANONICAL_REPO_URL = "https://github.com/trac3er00/OMG"
11
11
  CANONICAL_PACKAGE_NAME = "@trac3er/oh-my-god"
12
12
  CANONICAL_PLUGIN_ID = "omg"
13
13
  CANONICAL_MARKETPLACE_ID = "omg"
14
- CANONICAL_VERSION = "2.0.1"
14
+ CANONICAL_VERSION = "2.0.2"
15
15
 
16
16
  VALID_ADOPTION_MODES = ("omg-only", "coexist")
17
17
  VALID_PRESETS = ("safe", "balanced", "interop", "labs")
@@ -0,0 +1,193 @@
1
+ #!/usr/bin/env python3
2
+ """Check that the repo is safe and polished enough for a public launch."""
3
+ from __future__ import annotations
4
+
5
+ import argparse
6
+ import json
7
+ from pathlib import Path
8
+ import re
9
+
10
+ ROOT = Path(__file__).resolve().parents[1]
11
+
12
+ REQUIRED_PUBLIC_DOCS = [
13
+ "README.md",
14
+ "CONTRIBUTING.md",
15
+ "SECURITY.md",
16
+ "CODE_OF_CONDUCT.md",
17
+ "CHANGELOG.md",
18
+ ]
19
+
20
+ REQUIRED_COMMUNITY_TEMPLATES = [
21
+ ".github/ISSUE_TEMPLATE/bug_report.yml",
22
+ ".github/ISSUE_TEMPLATE/feature_request.yml",
23
+ ".github/pull_request_template.md",
24
+ ]
25
+
26
+ PUBLIC_DOC_GLOBS = [
27
+ "README.md",
28
+ "CONTRIBUTING.md",
29
+ "SECURITY.md",
30
+ "CODE_OF_CONDUCT.md",
31
+ "CHANGELOG.md",
32
+ "docs/**/*.md",
33
+ "plugins/README.md",
34
+ ".github/**/*.md",
35
+ ]
36
+
37
+ TEXT_GLOBS = [
38
+ "README.md",
39
+ "CONTRIBUTING.md",
40
+ "SECURITY.md",
41
+ "CODE_OF_CONDUCT.md",
42
+ "CHANGELOG.md",
43
+ "docs/**/*.md",
44
+ "commands/**/*.md",
45
+ "plugins/**/*.md",
46
+ "agents/**/*.md",
47
+ "rules/**/*.md",
48
+ "runtime/**/*.py",
49
+ "hooks/**/*.py",
50
+ "scripts/**/*.py",
51
+ ".github/workflows/**/*.yml",
52
+ ".github/workflows/**/*.yaml",
53
+ "OMG-setup.sh",
54
+ "install.sh",
55
+ "package.json",
56
+ "settings.json",
57
+ ".claude-plugin/**/*.json",
58
+ "plugins/**/*.json",
59
+ ]
60
+
61
+ MARKDOWN_LINK_RE = re.compile(r"!\[[^\]]*\]\(([^)]+)\)|\[[^\]]+\]\(([^)]+)\)")
62
+ ALLOW_PATTERN_REFERENCES = {
63
+ ROOT / "scripts" / "check-omg-public-ready.py",
64
+ }
65
+ ALLOW_DEPRECATED_MARKETPLACE = {
66
+ ROOT / "OMG-setup.sh",
67
+ ROOT / "scripts" / "check-omg-public-ready.py",
68
+ }
69
+
70
+
71
+ def _iter_files(root: Path, globs: list[str]) -> list[Path]:
72
+ files: list[Path] = []
73
+ for pattern in globs:
74
+ files.extend(path for path in root.glob(pattern) if path.is_file())
75
+ return sorted(set(files))
76
+
77
+
78
+ def _read(path: Path) -> str:
79
+ return path.read_text(encoding="utf-8")
80
+
81
+
82
+ def _find_text_violations(root: Path) -> list[str]:
83
+ violations: list[str] = []
84
+ for path in _iter_files(root, TEXT_GLOBS):
85
+ rel = path.relative_to(root)
86
+ content = _read(path)
87
+ if "/Users/" in content:
88
+ if path not in ALLOW_PATTERN_REFERENCES:
89
+ violations.append(f"{rel}: absolute local path found in public repo content")
90
+ if ".sisyphus/" in content:
91
+ if path not in ALLOW_PATTERN_REFERENCES:
92
+ violations.append(f"{rel}: stale internal path reference found (.sisyphus/)")
93
+ if "trac3er00/OAL" in content:
94
+ if path not in ALLOW_PATTERN_REFERENCES:
95
+ violations.append(f"{rel}: old repo identifier found (trac3er00/OAL)")
96
+ if "oh-advanced-layer" in content:
97
+ if path not in ALLOW_DEPRECATED_MARKETPLACE:
98
+ violations.append(f"{rel}: deprecated marketplace identifier found (oh-advanced-layer)")
99
+ return violations
100
+
101
+
102
+ def _find_missing_docs(root: Path) -> list[str]:
103
+ violations: list[str] = []
104
+ for rel in REQUIRED_PUBLIC_DOCS:
105
+ if not (root / rel).exists():
106
+ violations.append(f"{rel}: missing required public doc")
107
+ return violations
108
+
109
+
110
+ def _find_missing_templates(root: Path) -> list[str]:
111
+ violations: list[str] = []
112
+ for rel in REQUIRED_COMMUNITY_TEMPLATES:
113
+ if not (root / rel).exists():
114
+ violations.append(f"{rel}: missing required community template")
115
+ return violations
116
+
117
+
118
+ def _find_internal_docs(root: Path) -> list[str]:
119
+ plans_dir = root / "docs" / "plans"
120
+ if plans_dir.exists():
121
+ return [f"{plans_dir.relative_to(root)}: internal planning docs must not ship in public branch"]
122
+ return []
123
+
124
+
125
+ def _normalize_link_target(raw: str) -> str:
126
+ target = raw.strip()
127
+ if target.startswith("<") and target.endswith(">"):
128
+ target = target[1:-1].strip()
129
+ return target
130
+
131
+
132
+ def _is_relative_markdown_link(target: str) -> bool:
133
+ if not target:
134
+ return False
135
+ if target.startswith("#"):
136
+ return False
137
+ lowered = target.lower()
138
+ return not (
139
+ lowered.startswith("http://")
140
+ or lowered.startswith("https://")
141
+ or lowered.startswith("mailto:")
142
+ or lowered.startswith("data:")
143
+ or lowered.startswith("file:")
144
+ or target.startswith("/")
145
+ )
146
+
147
+
148
+ def _link_target_exists(doc_path: Path, target: str) -> bool:
149
+ file_part = target.split("#", 1)[0].split("?", 1)[0]
150
+ if not file_part:
151
+ return True
152
+ resolved = (doc_path.parent / file_part).resolve()
153
+ return resolved.exists()
154
+
155
+
156
+ def _find_broken_markdown_links(root: Path) -> list[str]:
157
+ violations: list[str] = []
158
+ for path in _iter_files(root, PUBLIC_DOC_GLOBS):
159
+ rel = path.relative_to(root)
160
+ content = _read(path)
161
+ for match in MARKDOWN_LINK_RE.finditer(content):
162
+ target = _normalize_link_target(match.group(1) or match.group(2) or "")
163
+ if not _is_relative_markdown_link(target):
164
+ continue
165
+ if not _link_target_exists(path, target):
166
+ violations.append(f"{rel}: broken markdown link -> {target}")
167
+ return violations
168
+
169
+
170
+ def main() -> int:
171
+ parser = argparse.ArgumentParser(description="Check OMG public-readiness hygiene")
172
+ parser.add_argument("--root", default=str(ROOT))
173
+ args = parser.parse_args()
174
+ root = Path(args.root).resolve()
175
+
176
+ violations = []
177
+ violations.extend(_find_missing_docs(root))
178
+ violations.extend(_find_missing_templates(root))
179
+ violations.extend(_find_internal_docs(root))
180
+ violations.extend(_find_text_violations(root))
181
+ violations.extend(_find_broken_markdown_links(root))
182
+ violations = sorted(set(violations))
183
+
184
+ if violations:
185
+ print(json.dumps({"status": "error", "violations": violations}, indent=2))
186
+ return 1
187
+
188
+ print(json.dumps({"status": "ok", "message": "public readiness check passed"}, indent=2))
189
+ return 0
190
+
191
+
192
+ if __name__ == "__main__":
193
+ raise SystemExit(main())
package/scripts/omg.py CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env python3
2
- """OMG 2.0.1 CLI entrypoint.
2
+ """OMG 2.0.2 CLI entrypoint.
3
3
 
4
4
  Implements practical command-line flows for:
5
5
  - omg ship
package/settings.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
- "_comment": "OMG 2.0.1 - project-level config with hook registrations, presets, and feature flags.",
3
+ "_comment": "OMG 2.0.2 - project-level config with hook registrations, presets, and feature flags.",
4
4
  "permissions": {
5
5
  "allow": [
6
6
  "Agent",
@@ -262,7 +262,7 @@
262
262
  ]
263
263
  },
264
264
  "_omg": {
265
- "_version": "2.0.1",
265
+ "_version": "2.0.2",
266
266
  "preset": "safe",
267
267
  "default_mode": "ulw+ralph",
268
268
  "vision_auto": true,