v3.2 One source of truth · MIT · fully offline

Stop vibe coding.
Ship production-grade software.

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.

ONE SOURCE 68 modules Claude Code Cursor Codex Pi Windsurf · Copilot Gemini · Antigravity removed in v3.0.0
One source of truth → Claude Code, Cursor, Codex and Pi shown; Hermes/OpenClaw is a fifth native emit target (see the support table below). Four other adapters were removed in v3.0.0.
Getting started

Install

Works on macOS, Linux and WSL. Native Windows is partially supported — see the support matrix.

npm — any platform

npm install -g 100xprism && 100xprism install

curl — macOS / Linux

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.

Set up a project

cd your-project && 100xprism init

The full CLI

These are every subcommand bin/100xprism.js dispatches.

CommandWhat it does
100xprism installClone the toolkit and provision every detected AI tool
100xprism initSet up the current project — scaffolds config and emits per-tool artifacts
100xprism updatePull latest, then add / update / remove skills and plugins
100xprism checkReport what an update would change, without changing anything
100xprism optimizeNarrow the always-on skill index (see context economics)
100xprism slimCompatibility alias for optimize
100xprism auditStanding-context estimate plus an inventory of skills, plugins and hooks
100xprism tokensStart the offline token dashboard
100xprism dashboardAlias for tokens
100xprism valueDelivery economics — cost joined to observable delivery
100xprism uninstallStop 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.

Keeping up to date

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.

Multi-project setup

# 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

GitHub Actions 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.

How it works

The pipeline

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.

/spec /fix /commit /push /release GATE 5 checks TESTS · SECURITY · BUILD · DOCKER · CLOUD FAIL → blocked PASS ↗
Nothing reaches main without passing. A failing gate blocks the tool call and routes back to /fix.

Typical session

/context/spec or /fix/test/commit/grill/pr

Pre-release

/techdebt/grill/test/gate/pr/launch/release

Quick bug fix

/fix "login returns 403"/test/commit/pr

Source of truth

Support matrix

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.

68

modules — 28 slash commands, 40 auto-trigger skills

5

tools receive generated config

7

database engines behind /db

27

SaaS CLIs behind /connect

AI tools — configuration emit

What each tool receives when you run 100xprism init.

ToolStatusGenerated artifactAuto-trigger
Claude Code✓ Full~/.claude/skills/<slug>/ + slash-command aliases + plugins + hooksYes — per description
Cursor✓ Full.cursor/rules/<slug>.mdc, one file per moduleYes — per description
Codex✓ FullAGENTS.md + .agents/skills/<slug>/ + .codex/hooks.jsonYes — repo skills
Pi✓ Fullpi/skills/ + the 100xprism-catalog packageYes — per description
Hermes/OpenClaw✓ Full~/.hermes/skills/100xprism/<slug>/SKILL.md, global & reconcilingYes — description re-derived to fit Hermes's ~57-char always-on budget
Windsurf✗ RemovedDeleted in v3.0.0
GitHub Copilot✗ RemovedDeleted in v3.0.0
Gemini✗ RemovedDeleted in v3.0.0
Antigravity✗ RemovedDeleted 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.

Token observability — a separate axis

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.

EXACT Claude Code · Codex $ cost assigned ACTIVITY ONLY Cursor · Antigravity no $ invented shown as “—”, never $0 BEST EFFORT Pi partial $ cost rows with usage fields only
Three measurement tiers. A source without provider counters is never assigned an invented cost.
SourceMeasurementRead fromKnown limitation
Claude Codeexact~/.claude/projects/**/*.jsonlNone
Codexexact~/.codex/sessions/**/rollout-*.jsonlCache-write counters unavailable
Cursoractivity only~/.cursor/projects/*/agent-transcripts/**/*.jsonlLocal transcripts expose no provider token counters
Antigravityactivity only~/.gemini/antigravityLocal protobuf schema exposes no provider token counters
Pibest effort~/.pi/agent/sessions/**/*.jsonlSession formats vary; only rows carrying native usage fields are metered
Hermes/OpenClaw✗ Not yet supportedSkill emit is supported (see the emit table above); no token collector exists yet for Hermes session logs
Cursor chats · state.vscdb✗ Out of scopeOutside the collector's scope by design
Legacy transcript .txt✗ Out of scopeOutside the collector's scope by design

Operating systems

PlatformStatusDetail
macOS✓ FullBoth install methods; all adapters
Linux✓ FullBoth install methods; all adapters
Windows — WSL✓ FullRecommended path for Windows users
Windows — native⚠ Partialnpm launcher and Claude Code plugin sync work. Native module emit is being reworked under issue #54. Use WSL for full module support.

Database engines

/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/queryNotes
PostgreSQLEngine file ships
Cloud SQLEngine file ships
SnowflakeEngine file ships
DatabricksEngine file ships
AthenaEngine file ships
PrestoEngine file ships
OracleEngine file ships
MySQLDrift. The scaffolded CLAUDE.md lists it as an engine: option, but no engine file exists — /db fails with “No engine file found”. Use /query.
SQLiteDrift. Same as MySQL — listed in the scaffold, no engine file. Use /query.
BigQueryDrift. Same as MySQL — listed in the scaffold, no engine file. Use /query with the bq CLI.

Known documentation drift

Found by auditing every documented feature against its implementation. Listed here so nobody has to rediscover them.

What was documentedWhat actually shipsStatus
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

Everything else

CapabilityStatusDetail
Claude Code core plugins✓ 2 autogithub and security-guidance install by default
Profile-recommended plugins5 suggestedWeb and design profiles — suggested, never forced
Manual opt-in plugins7 availableIncluding superpowers, skill-creator, hookify
Codex-native plugins⚠ ManualClaude Code plugins are Claude-specific. Use Codex /plugins.
Skill packs✓ 1 packDatabricks only — see Skill packs
Project templates✓ 4node-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 + Codexgate-on-commit PreToolUse hook blocks git commit and git push
Reference

Slash commands 28

Run these inside Claude Code. In Codex, invoke the generated repo skill by name instead — $gate, $commit, or /skills to browse.

Lifecycle

CommandWhat it does
/branchCreate a conventional feature branch — feat/, fix/, chore/
/commitGate → stage → conventional commit
/grillAdversarial code review before opening a PR
/prGate → push branch → create pull request
/pushGate → push → monitor CI → verify production health
/release patch|minor|majorSemantic versioning, then publish to PyPI, npm or Docker Hub
/launchFull deploy pipeline in one command
/pair-loopStructured pair-programming handoff protocol between agents

Quality

CommandWhat it does
/gateMandatory five-point gate — tests, security, build, Docker, cloud
/testEvery test layer — unit, integration, E2E — looping until coverage clears threshold
/lintAuto-detect and fix lint errors: ESLint, TypeScript, ruff
/securityVulnerability and secret scan, auto-fixing what it can
/cloud-securityGCP IAM, networking, PII and compliance scan
/evalRun module evals — check triggering and output quality

Engineering

CommandWhat it does
/specTurn a vague request into an implementation-ready spec
/fixAutonomous bug fixer — CI failures, Docker logs, pasted stack traces
/orchestratePlan-first methodology for complex multi-step tasks
/techdebtDead code, duplication, stale TODOs
/contextSeven-day git and GitHub activity dump — orient before coding
/update-claudeWrite a CLAUDE.md rule after any correction

Data & infrastructure

CommandWhat it does
/dbExecute SQL or migrations against any of seven engines from one interface
/queryPlain-English analytics — describe what you want, get SQL
/connectInstall and authenticate 27 SaaS CLIs from .env
/packList, detect, add or remove optional vendor skill packs

Documentation & architecture

CommandWhat it does
/docsDetect code changes and update documentation to match
/issueInvestigate a bug and open a root-caused GitHub issue
/architectArchitectural Q&A and decision matrices
/enterprise-designFull technical blueprint — IA, API, data model, stack
Reference

Auto-trigger skills 40

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.

Marketing copy

copywritingcopy-editingcold-emailemail-sequencead-creativesocial-content

SEO

seo-auditai-seoprogrammatic-seoschema-markupsite-architecture

CRO & conversion

page-crosignup-flow-croonboarding-croform-cropopup-cropaywall-upgrade-cro

Growth & strategy

content-strategymarketing-ideasmarketing-psychologylaunch-strategyreferral-programchurn-preventionfree-tool-strategyab-test-setupanalytics-trackingpricing-strategy

Sales

sales-enablementcompetitor-alternativespaid-adsrevopsproduct-marketing-context

Design & UX

visual-system-architectinteraction-engineerfigma-translatormotion-designerdata-viza11y-auditor

Engineering

subagentsterminal-setup
Paying only for what you use

Context economics

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.

STANDING DESCRIPTION FOOTPRINT · ESTIMATED TOKENS (CHARS ÷ 4) Claude Code 4,816 all 1,667 profile 574 must Cursor 1,942 all 705 profile 261 must Deterministic estimate, not provider-billed usage. CI enforces the committed must-mode budgets.
Fresh installs default to must. Widening the index is explicit, and reversible.

Retention classes

Every module derives one. A module can override it with retention: in frontmatter.

ClassCountKept because
must12Deterministic 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
profile18Earns its slot in repos of a matching kind. Also anything owning a slash command, so the generic resolver route keeps it reachable
resolver38General expertise a capable model already has. One catalog row, read by path on demand — one description now stands in for 38

Measured footprint by surface

SurfaceallprofilemustIndexed entries
Claude Code user scope4,8161,66757468 → 31 → 13
Cursor project rules1,94270526168 → 31 → 13
Codex repo skills4,8161,648555Non-selected bodies move to the catalog
Pi package skills4,8161,667574Extensions remain available, opt-in
Consumer CLAUDE.md scaffold~350~180Commented 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.

Cost vs. value

Value economics

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.

~/.claude · ~/.codex · ~/.pi transcripts git log · merges · tags · numstat 1 · TOKEN ECONOMICS $ spend list-price estimate, by model input · output · cache read · cache write split by project · session · skill pricing coverage % 2 · OBSERVABLE DELIVERY PRs · commits releases · files · ± lines attribution coverage unit cost uses attributed spend only: $ / PR $ / commit $ / release 3 · BUSINESS VALUE Not measured Git delivery signals do not establish business or human value. No ROI score is invented here. Connect an outcome source to fill it. Stage 2 joins stage 1 only where spend can be attributed to a directory. Unattributed spend is excluded from unit costs rather than silently averaged in. Coverage bar is illustrative; the dashboard renders your measured percentage.
Cost → delivery → value. The third stage is deliberately, visibly empty.

Run it

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

The four token purposes

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.

TOKENS BY PURPOSE — PRICED SEPARATELY, PER MODEL cache read cache write input output context served fromthe provider's cache context writteninto the cache prompt sentto the model what the modelgenerated Proportions above are illustrative. The dashboard computes yours from local provider counters and renders the real split as a stacked bar and a share donut.
Four purposes, priced separately — because a cached token and a generated token do not cost the same.

What the dashboard actually renders

Every view below exists today in 100xprism tokens.

ViewShows
Economics chainThe three stages above — spend, delivery with coverage and unit cost, and the unmeasured value stage
Headline cardsWindow spend · cache share · startup bloat vs a 200K reference window · pricing coverage
Daily cost area chartEstimated list-price cost per day across the selected window
Daily cost stacked by modelWhich model consumed which share of each day's spend, with a legend
Token-purpose splitStacked bar plus a share donut across cache read, cache write, input and output
Cost by directoryHorizontal bars, highest spend first, for the selected window
Total cost treeExpandable tool → model breakdown with proportional bars
All directoriesSelected-window spend joined to delivery evidence, per directory
Skill attributionCost per skill and per invocation, tagged exact or attributed so heuristics are never mistaken for measurement
Conversation compositionEstimated split of code vs. files read vs. logs vs. chat
Pair-loop runsPer handoff run: rounds, coder spend, reviewer spend, total, outcome, PR
GitHub deep divePRs fetched, comment-heavy PRs, docs PRs, deleted-file PRs, plus developer and repository breakdowns
Activity without countersCursor and Antigravity sessions listed for coverage — explicitly never entering token cost
RecommendationsRanked by estimated opportunity, each with the observed signal, a conservative what-if model, and the expected effect on agent autonomy
Provenance stripPricing coverage, outcome-join coverage, source counts, date range
BudgetsOptional daily and weekly limits driving dashboard and shell alerts

How delivery is counted

Merged PRs, deduplicated

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 first, filesystem second

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.

Never a misleading zero

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.

Opt-in

Skill packs

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.

PackContentsDetected byInstall 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.

Upgrading

Deprecations & removals

What recent releases took away, and what to do about it. Full detail in the changelog.

VersionRemoved or changedMigration
3.1commit, push, branch dropped from tier: core — no longer resident in Cursor's contextNone. Still slash commands; gate enforcement now comes from the gate-on-commit hook rather than prompt residency
3.1Specialist modules leave the always-on skill index on your first updateAutomatic and announced once. Undo with 100xprism optimize --skills=all; skip with 100xprism update --no-slim
3.1Project config moves out of CLAUDE.md into .claude/100xprism.ymlNone required — modules read the new file first and fall back to CLAUDE.md, so existing repos keep working
3.1New CLAUDE.md scaffolds use a router table instead of commented config blocksNewly scaffolded projects only; existing files are never rewritten
3.0.1Nine modules re-tiered coreon-demand (Cursor context down 61%)None. No content changed; no effect on Claude Code, Codex or slash commands
3.0.0Windsurf, Copilot, Gemini and Antigravity adapters deletedAutomatic. Generated files are backed up to ~/.100xprism/removed-artifacts/<timestamp>/ before removal. Use Claude Code, Cursor, Codex or Pi
3.0.0emit-concat subcommand, render_concat, render_index_onlyInternal API — use emit-cursor, emit-codex or emit-claude-code
3.0.0Instruction-file discovery narrowed to CLAUDE.md, AGENTS.md, .cursorrulesMove any config out of .windsurfrules, GEMINI.md or copilot-instructions.md
2.4.911 orphaned module reference filesNone — they were unreachable from any SKILL.md
2.4.9Dashboard and update-check no longer auto-start from shell startupStart explicitly: 100xprism tokens, or 100xprism install --dashboard
2.4.xsystems-architect merged into enterprise-design; conversion-copy merged into copywritingUse 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.

Field notes

Common CI traps

Three failure modes the gate is built to catch, because each one costs an afternoon the first time.

1 · npm 404 inside Docker

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.

2 · useState(false) vs. Playwright

An 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.

3 · Integration tests silently excluded

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.

Support

Troubleshooting

ProblemSolution
command not found: 100xprismReinstall or reshim your package manager — npm install -g 100xprism && mise reshim node if you use mise
Slash command not recognised in Claude CodeRestart the session — modules load at startup
Modules not updating after 100xprism updateRestart your Claude Code session to pick up new modules
source: no such file: ~/100xprism/shell/aliases.shLegacy shell startup entry — run 100xprism uninstall, or remove the source line from your rc file
SessionStart:startup hook errorLegacy Claude startup hook — run 100xprism install, or remove the 100xprism SessionStart hook from ~/.claude/settings.json
Codex skill not appearingRestart Codex, run /skills, and verify .agents/skills/<slug>/SKILL.md exists
Codex hook not runningRun /hooks in Codex and trust the generated hook definition
/gate hangs on the Docker checkDocker Desktop must be running, or set SKIP_DOCKER=1
Claude Code plugin not activatingCheck ~/.claude/settings.jsonenabledPlugins, then restart
Codex plugin not activatingOpen 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.

Frequently asked questions

Does this work without an AI coding tool?

No. Modules are instructions for AI tools. Without an AI reading them, they are just markdown.

Can I use only some modules?

Yes — modules are independent. Run only the slash commands you need; auto-trigger skills activate only when relevant.

Will this slow down my workflow?

The gate adds checks before commits. Most runs finish in under two minutes, and catching issues locally beats debugging production.

Does it send my data anywhere?

No. Both dashboards are fully offline, reading local files and serving a local URL.

How do I add a database engine?

Add a file to modules/db/db-engines/<engine>.md following an existing engine's pattern, then run 100xprism update.

How do I contribute a module?

Create modules/<slug>/SKILL.md with name, description, category and tier frontmatter, run 100xprism update, and open a PR.

How do I contribute an adapter?

Create adapters/<tool>.sh, call adapters/lib/modules.py with your tool name, add it to install.sh, and open a PR.

Is it free?

Yes — MIT licensed.