PAM is an anagram of MAP. That is intentional. The acronyms are load-bearing. So is your architecture β PAM finds out which parts are π.
PAM scans your monorepo (or multi-repo system), reads every README and project structure, and tells you which parts are π ASS and which are just PASS.
These are not jokes. They are the literal filenames.
| Term | Stands for | What it means |
|---|---|---|
| PAM | Project Architectural Maps | The tool itself |
| MAP | (anagram of PAM) | The visual file-tree artifact PAM generates |
| π ASS | Architectural System Significance | This project is load-bearing β remove it and other systems break |
| PASS | Project-Architectural Semi-Significance | Matters internally, but the rest of the system doesn't care if it disappears |
| π ReadMyAss | (literal filename) | Human-readable map with a βYou Are Hereβ marker. Like a README, but for your architecture |
Your monorepo gets rated. Every project is either π΄π ASS (system-critical) or π‘ PASS (self-contained). The ones that are both? Thatβs where you pay attention.
Nobody documents architecture. README files rot. New developers guess at relationships. AI agents hallucinate dependencies. One project gets renamed and three downstream systems break because nobody mapped the dependency graph.
PAM fixes this by generating a multi-layer map that actually stays current:
ASS_MASTER.mdπ β The most important file. Which projects are architecturally significant, what depends on what, and what breaks if something disappearsReadMyAss.md- Human-readable narrative with Mermaid diagrams and a "You Are Here" breadcrumbPAM_Master.md- Quick visual tree with β markers on the load-bearing projectsPASS.md- Per-project: what matters inside this project even if nobody else cares
Drop in a link to any public repo, npm package, or tool and ask:
"Would this benefit my system?"
PAM reads the repo, compares it against ASS_MASTER.md π, and gives you a verdict:
| Verdict | Translation |
|---|---|
| β ADDS VALUE | Real gap-fill. PAM names exactly where it slots in |
| π‘ MAYBE | Some overlap. PAM names the conditional |
| π΄ REDUNDANT | You already have something that does this |
| Port collision, hook overlap, or it'll step on something running | |
| β NOT USEFUL | Wrong domain, wrong runtime, abandoned, doesn't fit |
Every verdict comes with rationale, touched systems, and a recommended action - not just a label.
npm install -g pam-mapsPAM works with any CLI agent - Pi, Claude Code, Codex, Cursor, Aider, or standalone. Copy the skill files into your agent config:
# Pi
cp -r skills/ ~/.pi/agent/skills/
cp agents/PAM.md ~/.pi/agent/agents/
# Claude Code / Codex / others
cp -r skills/ ~/.claude/skills/ # or ~/.codex/skills/Then use /pam status, /pam sync, /pam evaluate <url>, etc. inside any session.
Or just talk to PAM in natural language β no slash commands required.
# Scan your monorepo β structured JSON of every project
pam-scan /path/to/your/monorepo
# Evaluate a third-party repo without cloning it
pam-fetch https://github.com/expressjs/express
# Log a change for the next sync
pam-log --project my-api --type contract-change \
--summary "Changed default port from 3000 to 8080" \
--ripple "frontend, reverse-proxy"| Command | What it does |
|---|---|
/pam status |
Which projects have maps, what's stale, pending changes |
/pam sync |
Regenerate all maps (cached β only re-syncs what changed) |
/pam sync <project> |
Refresh just one project's ASS/PASS/ReadMyAss files |
/pam evaluate <url> |
Verdict on a third-party repo against your π ASS_MASTER |
PAM also responds to natural language β no slash commands needed:
- "Hey PAM, can you analyze this repo?"
- "Hey PAM, can you sync this new repo that I'm working on?"
- "PAM, would this npm package benefit my system?"
- "Hey PAM, what breaks if I delete this project?"
<monorepo>/.pi/MAPS/
βββ ASS_MASTER.md π β THE important file. Global significance breakdown.
β "What contributes to the system, what depends on what,
β what breaks if this disappears."
βββ ReadMyAss.md β Human-readable narrative. Mermaid diagrams.
β "You Are Here" breadcrumb navigation.
βββ PAM_Master.md β Quick visual tree. β = ASS, π‘ = PASS, βͺ = neither.
<project>/.pi/MAPS/
βββ ASS_SLAVE.md π β Only the parts that affect OTHER systems.
β Hand-off points, shared contracts, ports, daemons.
βββ PASS.md β What matters INSIDE this project.
β Hot paths, fragile glue, critical configs.
βββ ReadMyAss.md β This project's narrative + its place in the graph.
βββ PAM_Slave.md β Visual tree. β = files the program actually uses.
| Rating | Meaning | Example |
|---|---|---|
| π΄π ASS | Remove it and other systems break | Shared API gateway, auth service, message bus |
| π‘ PASS | Self-contained - the system doesn't notice if it's gone | Internal CLI tool, standalone utility |
| π΄ππ‘ Both | Load-bearing and internally complex β pay attention here | Core service with fragile internal architecture |
pam-maps/
βββ agents/PAM.md β PAM's identity, vocabulary, and rules
βββ skills/pam/SKILL.md β The /pam workflow (for AI agent sessions)
βββ scripts/
β βββ scan-readmes.mjs β Walk a monorepo, emit structured JSON
β βββ fetch-repo-readme.mjs β Fetch a GitHub repo's README via API (no clone)
β βββ log-pending.mjs β Append/read/drain the pending change log
βββ templates/
β βββ ASS_MASTER.template.md π β Template for the global significance file
β βββ ASS_SLAVE.template.md π β Template for per-project significance
β βββ PASS.template.md β Template for internal significance
β βββ ReadMyAss_*.template.md π β Templates for human-readable narratives
β βββ PAM_*.template.md β Templates for visual maps
β βββ pre-commit-pam-check.sh β Git hook: warns on ASS-significant changes
βββ prompts/pam.md β Slash command entry point
βββ package.json
# Set your monorepo root (or PAM defaults to cwd)
export PAM_ROOT=/path/to/your/monorepo
pam-scan
# Or pass it directly
pam-scan /path/to/monorepoPAM reads READMEs to understand project roles. No Nx, Turborepo, or Lerna config required - any directory with a README is a project.
PRs welcome. If your monorepo has a structure PAM doesn't handle well, open an issue.
MIT - built by @CymatiStatic
π Yes, you will have files named ASS_MASTER.md and ReadMyAss.md in your repo. Your coworkers will ask questions. That's a feature. π