About this project
Pacmon adds a "why" layer to dependency manifests. Manifests such as package.json, Cargo.toml, pom.xml, build.gradle, mix.exs, build.zig.zon, go.mod and Python manifests state what a project depends on; Pacmon lets each direct dependency carry a short note explaining why it is there, what must not change, and what to check before upgrading.
Notes are stored as plain Markdown files under .pacmon/, next to the manifest they describe. There is no database, service or account: the files can be read, diffed and committed like any other repository file. A note appears on hover over the dependency in the manifest, and its first line is shown at the end of the dependency line. A mark before each dependency is filled when a note exists and hollow when it does not.
Supported ecosystems and their notes files:
- npm: package.json, .pacmon/DEPENDENCY-NOTES.md, sections named by package (for example ## express).
- Rust: Cargo.toml, .pacmon/cargo/DEPENDENCY-NOTES.md, sections named by dependency key.
- Maven: pom.xml, .pacmon/maven/DEPENDENCY-NOTES.md, sections named groupId:artifactId.
- Gradle: build.gradle or build.gradle.kts, .pacmon/gradle/DEPENDENCY-NOTES.md, sections named group:name or catalog alias.
- Elixir/Mix: mix.exs, .pacmon/mix/DEPENDENCY-NOTES.md, sections named by dependency application atom.
- Zig: build.zig.zon, .pacmon/zig/DEPENDENCY-NOTES.md, sections named by direct dependency field.
- Python: pyproject.toml and requirements files, .pacmon/python/DEPENDENCY-NOTES.md, sections named by normalized distribution name.
- Go: go.mod, .pacmon/go/DEPENDENCY-NOTES.md, sections named by module path.
Pacmon parses manifests as text and does not run npm, Cargo, Maven, Gradle, Mix, Zig, Python, pip, Poetry, uv or Go. It recognizes direct dependencies written in the file, with ecosystem-specific limits described in the README (for example, Maven dependencyManagement and plugin dependencies are excluded; Gradle scripts are not executed, so code-added dependencies are not seen; Go replace, exclude, retract, go.work and vendor are not read as dependencies). Each ecosystem keeps its own notes file, and a manifest without one uses the nearest notes file above it for the same ecosystem.
Notes files use one ## section per direct dependency. People write under the heading; AI coding agents write under a ### Agent notes subsection using - key: value lines such as purpose, constraint, verify, log and verified. Agents are expected to read a dependency's section before adding, upgrading or removing it, and to record what they did. Pacmon validates agent lines and warns about unknown fields or empty values, offering one-click fixes. Pacmon itself does not call any AI service; it provides the files and rules, and a setup command writes .pacmon/AGENT-RULES.md and adds pointers to common agent instruction files such as AGENTS.md, CLAUDE.md, .cursor/rules/ and .github/copilot-instructions.md.
Features include hover notes, inline previews, dependency marks, writing notes from the manifest via a side panel, peek editor or input box, a Documentation Coverage view listing which dependencies have notes, and warnings for problems in the notes file. Settings cover the inline hint style, which layer feeds previews (human-first, ai-first, human-only, ai-only), how notes are entered, clickable entry points, and monorepo notes-file resolution.
The extension requires VS Code 1.100+ or a JetBrains IDE 2025.2+, and needs no language toolchains installed. It works in VS Code for the Web, Remote-SSH, WSL and dev containers. It is an early preview that does not accept pull requests yet; bug reports and feature requests go to GitHub issues. Licensed under Apache 2.0, with "Pacmon" and the logo as Kontra trademarks.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.