68 modules generate native config for Claude Code, Cursor, Codex, Hermes/OpenClaw and Pi. A five-point quality gate runs on every commit. An offline dashboard shows what each session cost next to what it shipped.
This page is the complete documentation. The repo keeps only a README.
Works on macOS, Linux and WSL. Native Windows is partially supported — see the support matrix.
npm install -g 100xprism && 100xprism install
curl -fsSL https://raw.githubusercontent.com/\
rajitsaha/100xprism/main/get.sh | bash
Either way, 100xprism install clones the toolkit to ~/100xprism and provisions your AI tools. The npm package is a thin launcher — modules, hooks and plugins live in that clone, which 100xprism update keeps current.
Install does not edit your shell rc files. It never touches ~/.zshrc, ~/.bashrc or ~/.bash_profile. Before installing, it cleans legacy startup hooks, stale command links, and any old owned dashboard process. For optional aliases in the current terminal only, run source ~/100xprism/shell/aliases.sh.
cd your-project && 100xprism init
These are every subcommand bin/100xprism.js dispatches.
| Command | What it does |
|---|---|
100xprism install | Clone the toolkit and provision every detected AI tool |
100xprism init | Set up the current project — scaffolds config and emits per-tool artifacts |
100xprism update | Pull latest, then add / update / remove skills and plugins |
100xprism check | Report what an update would change, without changing anything |
100xprism optimize | Narrow the always-on skill index (see context economics) |
100xprism slim | Compatibility alias for optimize |
100xprism audit | Standing-context estimate plus an inventory of skills, plugins and hooks |
100xprism tokens | Start the offline token dashboard |
100xprism dashboard | Alias for tokens |
100xprism value | Delivery economics — cost joined to observable delivery |
100xprism uninstall | Stop the dashboard, remove legacy shell entries and symlinks |
There is no 100xprism pack subcommand. Packs are installed through the /pack skill inside your AI tool, using add and remove — not through the CLI. See Skill packs.
100xprism update # pull latest, then reconcile skills + plugins
100xprism update --plugins-only # refresh plugins only
100xprism update --no-slim # skip the one-time always-on index slim
100xprism slim --dry-run # preview what slimming would change
npm install -g 100xprism@latest # upgrade the launcher itself
install and update are fully reconciling, not append-only. Every run adds newly shipped skills, slash commands and curated plugins; updates changed ones in place; and removes those deleted or merged upstream. Your own hand-authored skills and commands, and any plugins you enabled yourself, are never touched.
# every repo under ~/projects
for dir in ~/projects/*/; do
[ -d "$dir/.git" ] && (cd "$dir" && 100xprism init)
done
To apply on every future clone, install a git template hook:
mkdir -p ~/.git-templates/hooks
cat > ~/.git-templates/hooks/post-checkout << 'HOOK'
#!/usr/bin/env bash
[ "$3" = "1" ] || exit 0 # branch checkout only
PROJECT_ROOT="$(git rev-parse --show-toplevel)"
[ -f "$PROJECT_ROOT/.cursorrules" ] && exit 0 # already set up
command -v 100xprism >/dev/null && (cd "$PROJECT_ROOT" && 100xprism init)
HOOK
chmod +x ~/.git-templates/hooks/post-checkout
git config --global init.templateDir ~/.git-templates
mkdir -p .github/workflows
cp ~/100xprism/github-actions/ci.yml .github/workflows/ci.yml
cp ~/100xprism/github-actions/release.yml .github/workflows/release.yml
ci.yml runs on every push and PR — lint, real-database tests and E2E. release.yml runs on v*.*.* tags and drives semantic release.
Every /commit and /push runs a five-point gate — tests, security, build, Docker, cloud. Enforcement is a PreToolUse hook, not a reminder, so broken work cannot reach main.
main without passing. A failing gate blocks the tool call and routes back to /fix./context → /spec or /fix → /test → /commit → /grill → /pr
/techdebt → /grill → /test → /gate → /pr → /launch → /release
/fix "login returns 403" → /test → /commit → /pr
Every row below was verified against source, not against documentation. Rows marked drift are cases where documentation promised something the code does not ship — they are listed rather than hidden.
modules — 28 slash commands, 40 auto-trigger skills
tools receive generated config
database engines behind /db
SaaS CLIs behind /connect
What each tool receives when you run 100xprism init.
| Tool | Status | Generated artifact | Auto-trigger |
|---|---|---|---|
| Claude Code | ✓ Full | ~/.claude/skills/<slug>/ + slash-command aliases + plugins + hooks | Yes — per description |
| Cursor | ✓ Full | .cursor/rules/<slug>.mdc, one file per module | Yes — per description |
| Codex | ✓ Full | AGENTS.md + .agents/skills/<slug>/ + .codex/hooks.json | Yes — repo skills |
| Pi | ✓ Full | pi/skills/ + the 100xprism-catalog package | Yes — per description |
| Hermes/OpenClaw | ✓ Full | ~/.hermes/skills/100xprism/<slug>/SKILL.md, global & reconciling | Yes — description re-derived to fit Hermes's ~57-char always-on budget |
| Windsurf | ✗ Removed | — | Deleted in v3.0.0 |
| GitHub Copilot | ✗ Removed | — | Deleted in v3.0.0 |
| Gemini | ✗ Removed | — | Deleted in v3.0.0 |
| Antigravity | ✗ Removed | — | Deleted in v3.0.0 — but still read by the token dashboard, below |
Why those four went. Each emitted a single concatenated file of roughly 60,000 characters that sat in context on every turn — the opposite of progressive disclosure. Every supported tool now loads module bodies on demand.
Emit support and measurement support are not the same list. Measurement capability is declared per collector in scripts/adapters/registry.py and is deliberately kept separate from adapter implementation, so activity can never be silently treated as billable usage.
| Source | Measurement | Read from | Known limitation |
|---|---|---|---|
| Claude Code | exact | ~/.claude/projects/**/*.jsonl | None |
| Codex | exact | ~/.codex/sessions/**/rollout-*.jsonl | Cache-write counters unavailable |
| Cursor | activity only | ~/.cursor/projects/*/agent-transcripts/**/*.jsonl | Local transcripts expose no provider token counters |
| Antigravity | activity only | ~/.gemini/antigravity | Local protobuf schema exposes no provider token counters |
| Pi | best effort | ~/.pi/agent/sessions/**/*.jsonl | Session formats vary; only rows carrying native usage fields are metered |
| Hermes/OpenClaw | ✗ Not yet supported | — | Skill emit is supported (see the emit table above); no token collector exists yet for Hermes session logs |
Cursor chats · state.vscdb | ✗ Out of scope | — | Outside the collector's scope by design |
Legacy transcript .txt | ✗ Out of scope | — | Outside the collector's scope by design |
| Platform | Status | Detail |
|---|---|---|
| macOS | ✓ Full | Both install methods; all adapters |
| Linux | ✓ Full | Both install methods; all adapters |
| Windows — WSL | ✓ Full | Recommended path for Windows users |
| Windows — native | ⚠ Partial | npm launcher and Claude Code plugin sync work. Native module emit is being reworked under issue #54. Use WSL for full module support. |
/db executes SQL and migrations against a named connection. /query answers plain-English analytics questions and reaches a wider set of engines through their own CLIs.
| Engine | /db | /query | Notes |
|---|---|---|---|
| PostgreSQL | ✓ | ✓ | Engine file ships |
| Cloud SQL | ✓ | ✓ | Engine file ships |
| Snowflake | ✓ | ✓ | Engine file ships |
| Databricks | ✓ | ✓ | Engine file ships |
| Athena | ✓ | ✓ | Engine file ships |
| Presto | ✓ | ✓ | Engine file ships |
| Oracle | ✓ | ✓ | Engine file ships |
| MySQL | ✗ | ✓ | Drift. The scaffolded CLAUDE.md lists it as an engine: option, but no engine file exists — /db fails with “No engine file found”. Use /query. |
| SQLite | ✗ | ✓ | Drift. Same as MySQL — listed in the scaffold, no engine file. Use /query. |
| BigQuery | ✗ | ✓ | Drift. Same as MySQL — listed in the scaffold, no engine file. Use /query with the bq CLI. |
Found by auditing every documented feature against its implementation. Listed here so nobody has to rediscover them.
| What was documented | What actually ships | Status |
|---|---|---|
100xprism pack install <name>, pack uninstall, pack detect as CLI subcommands |
No pack case exists in the CLI dispatcher. Packs run through the /pack skill with add and remove verbs. |
Docs corrected |
Scaffolded CLAUDE.md offers mysql, sqlite, bigquery as engine: values |
/db ships seven engine files; those three are not among them and fail at dispatch. They remain reachable through /query. |
Documented, scaffold unchanged |
| README slash-command tables listed 26 commands | 28 modules declare a slash_command. /pack and /pair-loop were missing from the tables. |
Docs corrected |
| Capability | Status | Detail |
|---|---|---|
| Claude Code core plugins | ✓ 2 auto | github and security-guidance install by default |
| Profile-recommended plugins | 5 suggested | Web and design profiles — suggested, never forced |
| Manual opt-in plugins | 7 available | Including superpowers, skill-creator, hookify |
| Codex-native plugins | ⚠ Manual | Claude Code plugins are Claude-specific. Use Codex /plugins. |
| Skill packs | ✓ 1 pack | Databricks only — see Skill packs |
| Project templates | ✓ 4 | node-fullstack · node-frontend · python-api · docker-compose |
| Cloud security scanning | ⚠ GCP only | /cloud-security covers GCP IAM, networking, PII and compliance. AWS and Azure are reachable through /connect for authentication only. |
| Gate enforcement hook | ✓ Claude Code + Codex | gate-on-commit PreToolUse hook blocks git commit and git push |
Run these inside Claude Code. In Codex, invoke the generated repo skill by name instead — $gate, $commit, or /skills to browse.
| Command | What it does |
|---|---|
/branch | Create a conventional feature branch — feat/, fix/, chore/ |
/commit | Gate → stage → conventional commit |
/grill | Adversarial code review before opening a PR |
/pr | Gate → push branch → create pull request |
/push | Gate → push → monitor CI → verify production health |
/release patch|minor|major | Semantic versioning, then publish to PyPI, npm or Docker Hub |
/launch | Full deploy pipeline in one command |
/pair-loop | Structured pair-programming handoff protocol between agents |
| Command | What it does |
|---|---|
/gate | Mandatory five-point gate — tests, security, build, Docker, cloud |
/test | Every test layer — unit, integration, E2E — looping until coverage clears threshold |
/lint | Auto-detect and fix lint errors: ESLint, TypeScript, ruff |
/security | Vulnerability and secret scan, auto-fixing what it can |
/cloud-security | GCP IAM, networking, PII and compliance scan |
/eval | Run module evals — check triggering and output quality |
| Command | What it does |
|---|---|
/spec | Turn a vague request into an implementation-ready spec |
/fix | Autonomous bug fixer — CI failures, Docker logs, pasted stack traces |
/orchestrate | Plan-first methodology for complex multi-step tasks |
/techdebt | Dead code, duplication, stale TODOs |
/context | Seven-day git and GitHub activity dump — orient before coding |
/update-claude | Write a CLAUDE.md rule after any correction |
| Command | What it does |
|---|---|
/db | Execute SQL or migrations against any of seven engines from one interface |
/query | Plain-English analytics — describe what you want, get SQL |
/connect | Install and authenticate 27 SaaS CLIs from .env |
/pack | List, detect, add or remove optional vendor skill packs |
| Command | What it does |
|---|---|
/docs | Detect code changes and update documentation to match |
/issue | Investigate a bug and open a root-caused GitHub issue |
/architect | Architectural Q&A and decision matrices |
/enterprise-design | Full technical blueprint — IA, API, data model, stack |
These activate on their own when you describe a relevant task — no slash command needed. After 100xprism optimize, most load through the generated 100x-resolver catalog rather than sitting in your always-on context.
An installed module charges you for two different things. Its description may be re-sent on every turn, forever. Its body is free until the module is actually invoked. Separating those is where the saving comes from.
must. Widening the index is explicit, and reversible.Every module derives one. A module can override it with retention: in frontmatter.
| Class | Count | Kept because |
|---|---|---|
must | 12 | Deterministic machinery or house policy a model will not reproduce unprompted — the commands gate runs, the order release runs them in, the protocol pair-loop speaks |
profile | 18 | Earns its slot in repos of a matching kind. Also anything owning a slash command, so the generic resolver route keeps it reachable |
resolver | 38 | General expertise a capable model already has. One catalog row, read by path on demand — one description now stands in for 38 |
| Surface | all | profile | must | Indexed entries |
|---|---|---|---|---|
| Claude Code user scope | 4,816 | 1,667 | 574 | 68 → 31 → 13 |
| Cursor project rules | 1,942 | 705 | 261 | 68 → 31 → 13 |
| Codex repo skills | 4,816 | 1,648 | 555 | Non-selected bodies move to the catalog |
| Pi package skills | 4,816 | 1,667 | 574 | Extensions remain available, opt-in |
Consumer CLAUDE.md scaffold | ~350 | — | ~180 | Commented TODOs → router table |
100xprism optimize # must-only for user scope + this repo
100xprism optimize --all-projects
100xprism optimize --skills=profile # widen to detected project profiles
100xprism optimize --skills=all # restore every module
100xprism audit --json # standing-context estimate + inventory
Does a smarter model make this unnecessary? Partly — and the split is drawn on exactly that line. What a capable model already knows became the resolver class. What it cannot know is the other two: which commands this repo's gate runs, that user_id is TEXT-not-UUID here, that the Stripe webhook must register express.raw() before express.json(). Model capability retires procedure. It does not retire project facts or determinism.
Every agent run spends real money in tokens. The dashboard measures token cost and observable engineering delivery separately, joins them, and then refuses to invent the third number. That refusal is the design, not a gap.
100xprism tokens # offline dashboard, auto-refreshes every 30s
100xprism value # delivery economics
100xprism tokens --json # versioned provider-counter report
100xprism tokens --json --tool codex
100xprism audit --json # standing-context estimate
Every observed token is classified into one of four purposes, then priced per model. Cache share matters because a high one means much of your context was served through prompt caching — it does not mean the work was free.
Every view below exists today in 100xprism tokens.
| View | Shows |
|---|---|
| Economics chain | The three stages above — spend, delivery with coverage and unit cost, and the unmeasured value stage |
| Headline cards | Window spend · cache share · startup bloat vs a 200K reference window · pricing coverage |
| Daily cost area chart | Estimated list-price cost per day across the selected window |
| Daily cost stacked by model | Which model consumed which share of each day's spend, with a legend |
| Token-purpose split | Stacked bar plus a share donut across cache read, cache write, input and output |
| Cost by directory | Horizontal bars, highest spend first, for the selected window |
| Total cost tree | Expandable tool → model breakdown with proportional bars |
| All directories | Selected-window spend joined to delivery evidence, per directory |
| Skill attribution | Cost per skill and per invocation, tagged exact or attributed so heuristics are never mistaken for measurement |
| Conversation composition | Estimated split of code vs. files read vs. logs vs. chat |
| Pair-loop runs | Per handoff run: rounds, coder spend, reviewer spend, total, outcome, PR |
| GitHub deep dive | PRs fetched, comment-heavy PRs, docs PRs, deleted-file PRs, plus developer and repository breakdowns |
| Activity without counters | Cursor and Antigravity sessions listed for coverage — explicitly never entering token cost |
| Recommendations | Ranked by estimated opportunity, each with the observed signal, a conservative what-if model, and the expected effect on agent autonomy |
| Provenance strip | Pricing coverage, outcome-join coverage, source counts, date range |
| Budgets | Optional daily and weekly limits driving dashboard and shell alerts |
Squash-merge subjects like Title (#42) and real merge commits both count, then the union is deduplicated. A bare fix: resolve #100 inside an ordinary commit is not miscounted as a merged PR.
Git supplies commits, PRs, releases, files, insertions and deletions. A directory that is not a work tree falls back to a filesystem-mtime estimate — and that estimate is explicitly labelled as one.
Directories whose tool exposes no token counters show — for cost, never $0. An absent measurement and a measured zero are different facts.
Fully offline. Everything is computed from local files and served on a local URL. Nothing is uploaded. It auto-refreshes every 30 seconds once started, and shell startup never starts it.
What is deliberately not claimed. Delivery unit costs use attributed spend only and always show their coverage. Dollar figures are list-price estimates from local counters — subscriptions, credits, regional pricing and provider-side billing adjustments are not reconstructed, so this is not your invoice. And delivery activity is not ROI: revenue, retention and customer outcomes stay unmeasured rather than approximated.
Some skills only matter to some projects, so they do not ship by default. Nothing installs until you ask.
Use the /pack skill, not the CLI. There is no 100xprism pack subcommand. Run these inside your AI tool.
/pack # every pack, install state, and anything detected here
/pack detect # only what matches the current project
/pack add databricks # install a pack
/pack remove databricks # reverse only what 100xprism installed
Packs are ownership-tracked per install — /pack remove only removes what it added, never a plugin or command you enabled yourself. Where the vendor ships a CLI, that path is preferred; otherwise 100xPrism installs directly per platform.
| Pack | Contents | Detected by | Install path |
|---|---|---|---|
| databricks | 30+ skills — Unity Catalog, Asset Bundles, Lakeflow, model serving, vector search | databricks.yml · DATABRICKS_HOST · databricks- in requirements.txt or pyproject.toml |
Prefers databricks aitools install; falls back to per-platform marketplace install |
Databricks is currently the only pack.
What recent releases took away, and what to do about it. Full detail in the changelog.
| Version | Removed or changed | Migration |
|---|---|---|
| 3.1 | commit, push, branch dropped from tier: core — no longer resident in Cursor's context | None. Still slash commands; gate enforcement now comes from the gate-on-commit hook rather than prompt residency |
| 3.1 | Specialist modules leave the always-on skill index on your first update | Automatic and announced once. Undo with 100xprism optimize --skills=all; skip with 100xprism update --no-slim |
| 3.1 | Project config moves out of CLAUDE.md into .claude/100xprism.yml | None required — modules read the new file first and fall back to CLAUDE.md, so existing repos keep working |
| 3.1 | New CLAUDE.md scaffolds use a router table instead of commented config blocks | Newly scaffolded projects only; existing files are never rewritten |
| 3.0.1 | Nine modules re-tiered core → on-demand (Cursor context down 61%) | None. No content changed; no effect on Claude Code, Codex or slash commands |
| 3.0.0 | Windsurf, Copilot, Gemini and Antigravity adapters deleted | Automatic. Generated files are backed up to ~/.100xprism/removed-artifacts/<timestamp>/ before removal. Use Claude Code, Cursor, Codex or Pi |
| 3.0.0 | emit-concat subcommand, render_concat, render_index_only | Internal API — use emit-cursor, emit-codex or emit-claude-code |
| 3.0.0 | Instruction-file discovery narrowed to CLAUDE.md, AGENTS.md, .cursorrules | Move any config out of .windsurfrules, GEMINI.md or copilot-instructions.md |
| 2.4.9 | 11 orphaned module reference files | None — they were unreachable from any SKILL.md |
| 2.4.9 | Dashboard and update-check no longer auto-start from shell startup | Start explicitly: 100xprism tokens, or 100xprism install --dashboard |
| 2.4.x | systems-architect merged into enterprise-design; conversion-copy merged into copywriting | Use the surviving module; update prunes the old skill and its alias |
Removal deletes files inside your projects — and nothing is removed without a backup. Every deletion is copied to ~/.100xprism/removed-artifacts/<timestamp>/<full-project-path>/ first and removed only once that copy succeeds, and only if the file carries the Generated by 100xprism header in its first ten lines. A hand-written file of the same name is left alone. If you edited a generated file, it is still removed — but the backup exists, and these files are normally committed, so deletions show up in git status for review.
Three failure modes the gate is built to catch, because each one costs an afternoon the first time.
A Docker build that installs your own package from the registry fails with a 404 until that version is actually published. The fix is to copy source into the build context rather than depending on a published artifact during CI.
useState(false) vs. PlaywrightAn entry animation that starts at opacity-0 and flips on mount leaves the element technically present but never visible to Playwright, so toBeVisible() times out. Assert on the post-animation state, or disable animation under test.
A test command scoped to one directory quietly drops the integration suite — green CI, untested integration path. Run both explicitly rather than relying on a glob that looks complete.
| Problem | Solution |
|---|---|
command not found: 100xprism | Reinstall or reshim your package manager — npm install -g 100xprism && mise reshim node if you use mise |
| Slash command not recognised in Claude Code | Restart the session — modules load at startup |
Modules not updating after 100xprism update | Restart your Claude Code session to pick up new modules |
source: no such file: ~/100xprism/shell/aliases.sh | Legacy shell startup entry — run 100xprism uninstall, or remove the source line from your rc file |
SessionStart:startup hook error | Legacy Claude startup hook — run 100xprism install, or remove the 100xprism SessionStart hook from ~/.claude/settings.json |
| Codex skill not appearing | Restart Codex, run /skills, and verify .agents/skills/<slug>/SKILL.md exists |
| Codex hook not running | Run /hooks in Codex and trust the generated hook definition |
/gate hangs on the Docker check | Docker Desktop must be running, or set SKIP_DOCKER=1 |
| Claude Code plugin not activating | Check ~/.claude/settings.json → enabledPlugins, then restart |
| Codex plugin not activating | Open Codex /plugins. Claude Code plugins are not Codex plugins. |
/db says “No engine file found” | Your engine: value is not one of the seven supported engines. See the database matrix. |
No. Modules are instructions for AI tools. Without an AI reading them, they are just markdown.
Yes — modules are independent. Run only the slash commands you need; auto-trigger skills activate only when relevant.
The gate adds checks before commits. Most runs finish in under two minutes, and catching issues locally beats debugging production.
No. Both dashboards are fully offline, reading local files and serving a local URL.
Add a file to modules/db/db-engines/<engine>.md following an existing engine's pattern, then run 100xprism update.
Create modules/<slug>/SKILL.md with name, description, category and tier frontmatter, run 100xprism update, and open a PR.
Create adapters/<tool>.sh, call adapters/lib/modules.py with your tool name, add it to install.sh, and open a PR.
Yes — MIT licensed.