Project Oracle 🧠
Deep project scanner that generates agent-ready context files.
Scan any codebase and produce AGENTS.md, CLAUDE.md, or an Obsidian project
note so a coding agent — Claude Code, Cursor, Codex CLI, OpenClaw, Gemini, or
Hermes — understands the stack, the real commands, the conventions, and the
landmines instantly. Zero dependencies: pure Python 3.11+ standard library,
cross-platform (Windows, Linux, macOS).
Unlike a plain generator, Project Oracle also captures human knowledge a scan cannot see. It interviews you for the project's intent and known pitfalls, then embeds both in the generated file — so the agent reads the landmines before it touches code.
Features
- Every framework, not just the first — a Next.js + Express + Socket.IO + React project lists all four
- Real, runnable commands — npm scripts captured with their actual shell command, not just the name
- Environment variable names — read from
.env.example; values are never copied and the real.envis never opened - Secret-safe git context — remote URLs are credential-masked (
https://***@host/...) and de-duplicated - 28 languages detected — Python, Java, Kotlin, TypeScript, Go, Rust, PHP, C#, Ruby, and more
- Build system + test detection — Maven, Gradle, npm/yarn/pnpm/bun, uv/pip, Cargo, Go modules, Composer; Jest, Vitest, pytest, JUnit, and test-file counts
- Monorepo aware — nested manifests discovered up to 2 levels deep
- Intent + pitfalls interview — embeds project purpose and known landmines
- Safe regeneration — an existing file is never clobbered silently: content
between
<!-- oracle:start/end -->markers is refreshed in place (your edits outside survive), anything else requires--forceand keeps a.bakbackup - Multi-template output — AGENTS.md, CLAUDE.md, Obsidian note, or all in one pass
- Drift detection —
oracle-checkre-reads the repo and exits non-zero when the generated context no longer matches it, so CI fails instead of letting a stale AGENTS.md tell agents to run commands that were deleted months ago - Context audit —
oracle-lintscores an existing AGENTS.md: which rules the repository confirms, which it contradicts, and which are unfalsifiable noise. Works on files you did not generate. - Cross-platform —
pathlibeverywhere, no platform-specific code
Install
As a CLI — one command, nothing to clone:
pipx install hermes-project-oracle
# or
uv tool install hermes-project-oracle
Five commands land on your PATH: oracle-scan, oracle-generate,
oracle-vault, oracle-check, oracle-lint.
As a skill — for Claude Code, Cursor, Codex, Hermes. The zip carries only
what the skill needs (SKILL.md, scripts/, references/), no .git/, tests
or build artifacts:
git clone https://github.com/iruzen-dono/hermes-project-oracle.git
cd hermes-project-oracle
python package_skill.py # builds hermes-project-oracle.zip + validates it
# Claude Code / generic SKILL.md agents
unzip hermes-project-oracle.zip -d ~/.claude/skills/
# Hermes Agent
unzip hermes-project-oracle.zip -d ~/.hermes/skills/
On Windows (PowerShell): Expand-Archive hermes-project-oracle.zip -DestinationPath $HOME\.claude\skills\
Quick start
# 1. Scan a project (writes <project>/.oracle/scan-report.json,
# and adds .oracle/ to the project's .gitignore when missing)
oracle-scan --path /path/to/project --output /path/to/project/.oracle/
# 2. Generate AGENTS.md, embedding the interview answers
oracle-generate \
--scan .oracle/scan-report.json \
--template agents-md \
--output /path/to/project/AGENTS.md \
--intent-file .oracle/intent.json
# 3. In CI: fail the build when the context has gone stale
oracle-check --path . --agents AGENTS.md
# 4. Audit a context file you already have (yours or an agent's)
oracle-lint AGENTS.md
# 5. (Optional) push a note into your Obsidian vault
oracle-vault --scan .oracle/scan-report.json --vault ~/Documents/"Obsidian Vault"
Running from a skill install instead? Prefix with python $SKILL/scripts/
(SKILL=~/.claude/skills/hermes-project-oracle) — the flags are identical.
--output accepts a directory (.oracle/ or .oracle) or an explicit JSON
file path. Run any script with --help for all flags.
Scripts
| Script | Purpose |
|---|---|
scripts/oracle_scan.py |
Deep project scan → JSON report (28 languages, credential-safe) |
scripts/oracle_generate.py |
Report → context files (4 templates + optional intent file) |
scripts/oracle_vault.py |
Push a structured note into an Obsidian vault |
Docs
- Full skill instructions:
SKILL.md - Interview script (intent + pitfalls):
references/interview-script.md - Example intent file:
references/intent-example.json - Example generated output:
references/agents-md-example.md
Development
pip install -e ".[dev]"
ruff check . # lint (deterministic via ruff.toml)
mypy scripts/ --ignore-missing-imports
pytest tests/ -v # unit + end-to-end (scan → generate → vault)
pytest tests/ --cov=scripts # coverage (currently 77%)
The end-to-end test builds a fixture Node project, runs the full pipeline, and asserts the output is safe (no leaked tokens, no env values, no absolute paths) and complete (commands, frameworks, env names, pitfalls).
Contributing
PRs welcome! Keep it cross-platform, add tests, preserve the zero-dependency promise, and never introduce network calls or credential collection.
License
MIT
Metadata
Release files for hermes-project-oracle 2.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| hermes_project_oracle-2.3.0.tar.gz | 77.3 kB | Without provenance | Details for hermes_project_oracle-2.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| hermes_project_oracle-2.3.0-py3-none-any.whl | Python 3 | none | any | Details for hermes_project_oracle-2.3.0-py3-none-any.whl |
Total release size: 141.1 kB
Release files / hermes_project_oracle-2.3.0.tar.gz
| Download URL | hermes_project_oracle-2.3.0.tar.gz |
|---|---|
| Size | 77.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f56b8de5d2c31ac48be65fb5e08c4ab9b6389e4f5141c3901267612cfee7f303
|
|
BLAKE2b-256 checksum How to use checksums |
157a17cc5e904489a069181f67f46d8910de93223ad2849d09f298c07ee933e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / hermes_project_oracle-2.3.0-py3-none-any.whl
| Download URL | hermes_project_oracle-2.3.0-py3-none-any.whl |
|---|---|
| Size | 63.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bc1969a5d4ac1e2c614bb768c135016c067b6efd38f9e6fc3eda84a1d8e4916c
|
|
BLAKE2b-256 checksum How to use checksums |
1a841e7aaa2f97a2de059116682c9c79d4ec3d98a3f5b65e80af3e08e5750d72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Security for hermes-project-oracle 2.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.