pluribus-context 0.2.0 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,7 +1,111 @@
1
1
  # Changelog
2
2
 
3
+ ## [Unreleased]
4
+
3
5
  All notable changes to Pluribus are documented here.
4
6
 
7
+ ## 0.3.3 — Publish-window rehearsal hardening
8
+
9
+ ### Changed
10
+
11
+ - Make the guarded `release:publish -- --dry-run` rehearsal check the same Git tag/HEAD alignment before any live OTP window, so tag drift is caught without touching npm.
12
+ - Carry the pending source-install documentation forward to the immutable GitHub `v0.3.3` tag while npm `latest` remains `0.3.0`.
13
+
14
+ ## 0.3.2 — Release artifact reconciliation
15
+
16
+ ### Changed
17
+
18
+ - Reconcile the npm publish target after the GitHub `v0.3.1` tag drifted from `main`: bump the pending npm release to `0.3.2` so the next publish can map to a fresh immutable GitHub tag instead of reusing the older `v0.3.1` artifact.
19
+ - Guard `release:publish` against publishing an npm package version from a different commit than its matching GitHub release tag.
20
+ - Keep temporary source-install documentation pinned to the immutable GitHub release tag for the package version being prepared while npm `latest` remains `0.3.0`.
21
+
22
+ ## 0.3.1 — npm README cleanup
23
+
24
+ ### Changed
25
+
26
+ - Pin temporary source-install documentation to the immutable GitHub release tag `v0.3.2` instead of `main` while npm `latest` remains `0.3.0`, and make the release verifier accept the versioned tag path for unreleased `0.3.2` commands.
27
+ - Block moving GitHub source-install references in docs, examples, issue templates, and changelog while npm `latest` is behind the local package, so partial-release copy-paste paths stay tied to the immutable tag.
28
+ - Clarify the npm 2FA publish path in the release checklist, including the guarded `npm run release:publish -- --otp <one-time-code>` command and the rule to pause distribution if a GitHub release exists before npm `latest` is updated.
29
+ - Verify that `docs/pre-commit-audit.md` embeds the same hook body as `examples/git-hooks/pre-commit`, so the local copy-paste guard and packaged git-hook example cannot drift into different audit commands.
30
+ - Verify that `docs/ci-audit-example.md` includes an exact copy of `examples/github-actions/pluribus-audit.yml`, so the copy-paste CI guide and packaged workflow example cannot drift into different audit commands.
31
+ - Run the full `npm run release:verify` gate in CI, with CI-safe detached checkout handling, so local-only release guards for docs, package metadata, npm smoke, tarball smoke, and publish dry-run cannot drift behind the public pipeline.
32
+ - Verify that docs and contributor-facing GitHub issue-template links point to existing `.github/ISSUE_TEMPLATE` files, and that every public feedback template is linked somewhere in the docs, so first-run feedback paths cannot silently 404 or disappear.
33
+ - Make `npm run release:publish` require the public `latest` dist-tag and verify that `npm view pluribus-context version` matches the just-published package before running `published:smoke`, and verify the publish script syntax in `release:verify`, so a publish under the wrong tag cannot look successful.
34
+ - Republish the post-0.3.0 README/docs cleanup so the npm package page no longer tells users that `audit` requires a source install or that npm latest may still be `0.2.0`.
35
+ - Clarify first-run write safety in the README and quickstart: `audit`, `validate`, and `sync --dry-run` are read-only; `init` writes only `pluribus.md`; `sync` writes only generated AI context files; remote import cache/lock writes require explicit `--update-imports`.
36
+ - Keep the published path explicit: `npx --yes pluribus-context@latest audit` is now the default first-run check.
37
+ - Clarify when Pluribus complements dedicated context linters/drift auditors versus replacing one-way sync maintenance.
38
+ - Expand package keywords for discoverability around `context-drift`, `AGENTS.md`, Cursor rules, and AI coding agents.
39
+ - Add a dedicated GitHub issue template for read-only `pluribus audit` feedback from real repos, plus links to the audit guide and workflow discussion.
40
+ - Make quickstart and audit feedback templates point to the current published `npx --yes pluribus-context@latest ...` commands so first-run reports are easier to reproduce.
41
+ - Clarify that Pluribus detects file-level output drift, not runtime precedence issues where a tool deprioritizes a correct context file after compaction/summarization.
42
+ - Add a lightweight runtime-loading sanity check for users who want to confirm a generated context file is actually loaded before relying on it.
43
+ - Add a context drift taxonomy that separates file-level output drift, source-of-truth drift, runtime loading/precedence drift, and behavioral drift so users can choose the right check before adopting Pluribus.
44
+ - Add `pluribus audit --json` so CI jobs, smoke scripts, and external tools can consume drift results without parsing emoji/text output.
45
+ - Add `pluribus audit --github-annotations` for inline GitHub Actions check annotations when generated context files are missing or drifted.
46
+ - Add `pluribus audit --ci` as a shortcut for `--strict --github-annotations` in GitHub Actions.
47
+ - Add `schemas/audit-result.schema.json` to make the `pluribus audit --json` contract explicit for CI wrappers, dashboards, and migration tools.
48
+ - Add `pluribus audit --json --output <file>` so CI jobs can save audit results as artifacts without shell redirection or noisy stdout.
49
+ - Add a copy-paste CI audit guide and GitHub Actions example for enforcing generated context files in pull requests.
50
+ - Add a pre-commit audit guide and sample git hook for catching context drift before commits leave a developer machine.
51
+ - Make the README and quickstart choose between two safe first commands: read-only `audit` for existing repos and `init` for brand-new repos.
52
+ - Normalize one-off `npx` examples to `npx --yes pluribus-context@latest ...` so copy-paste docs do not pause on npm's install prompt or rely on implicit latest resolution.
53
+ - Add explicit version-availability notes while `main` documents `0.3.2` audit CI flags and `init --dry-run`, while npm latest remains `0.3.0`.
54
+ - Use exact `github:caioribeiroclw-pixel/pluribus#v0.3.2` tag-install commands for `init --dry-run` previews so users do not accidentally run npm `0.3.0` commands that still write `pluribus.md`.
55
+ - Use exact `github:caioribeiroclw-pixel/pluribus#v0.3.2` tag-install commands for `audit --ci`, `--json`, `--output`, and `--github-annotations` docs and examples until `0.3.2` is published to npm, so CI copy-paste paths do not imply those flags are available in npm `0.3.0`.
56
+ - Use `audit --ci` in the copy-paste GitHub Actions example to reduce command length.
57
+ - Clarify the README vision so the source of truth is `pluribus.md` plus optional `# @import` files, not an obsolete multi-file `pluribus/` directory layout.
58
+ - Add `pluribus init --dry-run` so first-time users can preview the `pluribus.md` scaffold before writing files.
59
+ - Add `npm run release:verify` to run the full release gate and report whether npm auth is the remaining publish blocker.
60
+ - Expand `npm run release:smoke` to verify the first-run `init --dry-run` preview and the copy-paste `audit --ci --json --output` path from the packaged tarball.
61
+ - Add `npm run published:smoke` to verify the currently published npm `latest` package still has a working public first-run path (`--version`, `--help`, read-only `audit`, `init`, `validate`, and `sync --dry-run`).
62
+ - Run the published npm smoke from `npm run release:verify` whenever a published package exists, so release readiness checks also validate the package users can install today.
63
+ - Extend the release verification guardrail to catch bare `pluribus ...` copy-paste examples with unreleased `init --dry-run` or CI/JSON audit flags while npm latest is still behind `main`.
64
+ - Make `npm run release:verify` distinguish missing npm auth from invalid/stale configured tokens, so the 0.3.2 publish path points to the right remediation without exposing credentials.
65
+ - Reject unknown CLI options per command before executing, so typoed or not-yet-published flags fail safely instead of being silently ignored.
66
+ - Make the packaged release smoke verify that unknown init flags fail without creating `pluribus.md`, so fail-safe option parsing is tested from the installed tarball, not only unit tests.
67
+ - Remove the unsupported `init --force` flag from the release smoke so release checks only exercise documented CLI behavior.
68
+ - Remove the same unsupported `init --force` flag from the published npm smoke so post-publish validation stays compatible with fail-safe unknown-option parsing.
69
+ - Make the published npm smoke verify fail-safe unknown-option parsing after `0.3.2` is published, so post-publish validation catches a regression back to silently ignored CLI flags.
70
+ - Update the bug report issue template to use non-interactive `pluribus-context@latest` reproduction commands and a current version placeholder, reducing stale first-run reports.
71
+ - Standardize README/docs/examples on `npx --yes pluribus-context@latest ...` for published commands and extend the release guard so unreleased flags are blocked with or without `@latest` while npm latest is behind `main`.
72
+ - Make `npm run published:smoke` verify the npm package README after `0.3.2` is published, catching stale package-page copy like `npx pluribus-context init` before future distribution pushes.
73
+ - Add `npm run release:publish` as the guarded publish path: it runs the full release verification before publishing, refuses credential-like CLI arguments, and runs the published npm smoke after a real publish.
74
+ - Extend `npm run release:verify` to check docs, examples, and issue templates for reproducible published npm commands (`npx --yes pluribus-context@latest ...`) and unreleased flags while npm latest is still behind `main`.
75
+ - Include `CONTRIBUTING.md` in the same release verification copy-paste scan, and update its audit feedback command to the reproducible `npx --yes pluribus-context@latest ...` form.
76
+ - Link audit feedback directly from the README/npm package page and make the published README smoke guard the quickstart + audit feedback paths.
77
+ - Link quickstart and audit docs directly to their issue templates, and verify those feedback paths in the release gate so first-run users do not have to choose a generic issue manually.
78
+ - Expand npm discovery keywords around agent rules, AI context, Codex/Aider, and drift detection so the package metadata matches the searches that surface adjacent tools.
79
+ - Rewrite the npm package description for search-result clarity and verify core discovery metadata in the release gate before publishing.
80
+ - Make the published npm smoke verify discovery description/keywords after `0.3.2` is published, so post-publish validation catches stale registry metadata before distribution pushes.
81
+ - Clarify the "When to use Pluribus" guide for users comparing adjacent rules-sync packages, with a sharper split between lightweight rules sync, tool-native prompt managers, one-way converters, and Pluribus' source-of-truth plus audit workflow.
82
+ - Make the published npm smoke verify that the package README keeps a visible path to the "When to use Pluribus" comparison guide after `0.3.2` is published.
83
+ - Run packaged CLI and published npm smoke checks in CI, so distribution regressions are caught on every push instead of only during local release prep.
84
+ - Surface npm weekly downloads and CI status badges in the README/npm package page, and verify those trust/distribution badges in the release and published smoke gates.
85
+ - Surface the audit feedback issue template directly from `pluribus audit` text and JSON output, so noisy first-run results can turn into structured reports without searching the docs.
86
+ - Verify the audit feedback link in packaged and published smoke checks, so the CLI feedback loop cannot disappear from the installed artifact unnoticed.
87
+ - Make global install examples explicit with `npm install -g pluribus-context@latest`, and have the release gate block ambiguous global install copy-paste commands.
88
+ - Keep `pluribus --help` in sync with the actual built-in tool adapters, and verify that in release/published smoke checks, so first-run users see Copilot, Windsurf, Continue, and Zed as supported `--tools` values instead of the original three-tool default.
89
+ - Add the full built-in adapter list to the quickstart and verify it in the release gate, so users can discover OpenClaw, Windsurf, Continue, and Zed before deciding which `--tools` values to try.
90
+ - Make issue templates ask for the exact `--version` output instead of a hard-coded version placeholder, and verify that guard in the release gate so feedback stays accurate while npm latest and `main` differ.
91
+ - Align `CONTRIBUTING.md` with the current built-in adapter list and integration request template, and verify that contributor-facing adapter guidance does not drift behind the CLI.
92
+ - Verify all built-in adapter outputs in packaged and published smoke checks, so docs/help cannot claim OpenClaw, Windsurf, Continue, or Zed support while the installed artifact fails to generate their files.
93
+ - Verify README/npm package-page adapter output copy in release and published smoke checks, so the top-of-funnel landing page cannot regress to the old three-tool story while the CLI supports more adapters.
94
+ - Verify that relative links from the README/npm package page point to files included in the npm tarball, so published docs links do not break after packaging.
95
+ - Extend packaged Markdown link verification beyond the README to docs/spec/examples in the npm tarball, so follow-on package-page navigation cannot drift to missing files.
96
+
97
+ ## 0.3.0 — Audit workflow and first-run docs alignment
98
+
99
+ ### Added
100
+
101
+ - Add `pluribus audit`, a read-only command that compares generated tool files with `pluribus.md`, reports missing or drifted outputs, supports `--strict` for CI, and scans existing AI context files when a project has not adopted Pluribus yet.
102
+ - Add first-run docs for quickstart, context drift audit, existing context migration, context-file review, when to use Pluribus versus one-way converters, and issue templates so early users can report install, adapter, security-review, and migration friction with concrete details.
103
+
104
+ ### Changed
105
+
106
+ - Align the package README for the npm publish so the npm package page shows the real `npx --yes pluribus-context` install path, npm badge, 60-second smoke test, `audit` workflow, and published-status roadmap.
107
+ - Replace temporary source-install notes with the published `pluribus-context@0.3.0` audit path.
108
+
5
109
  ## 0.2.0 — Package-ready CLI release
6
110
 
7
111
  Pluribus 0.2.0 is the first npm-ready release of the CLI for keeping intentional AI context in one versioned source and syncing it to the files each tool expects. It supersedes the earlier GitHub-only v0.1.0 alpha release from March.
package/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Pluribus
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/pluribus-context?style=flat-square)](https://www.npmjs.com/package/pluribus-context)
4
+ [![npm downloads](https://img.shields.io/npm/dw/pluribus-context?style=flat-square)](https://www.npmjs.com/package/pluribus-context)
5
+ [![CI](https://img.shields.io/github/actions/workflow/status/caioribeiroclw-pixel/pluribus/ci.yml?branch=main&style=flat-square&label=ci)](https://github.com/caioribeiroclw-pixel/pluribus/actions/workflows/ci.yml)
3
6
  [![Building in Public](https://img.shields.io/badge/building-in%20public-orange?style=flat-square)](https://x.com/RibeiroCaioCLW)
4
7
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE)
5
8
 
@@ -32,20 +35,21 @@ You end up maintaining **5+ files** that say roughly the same thing — your pro
32
35
 
33
36
  **Pluribus** is a universal format for intentional context in AI-assisted development.
34
37
 
35
- Write your project context **once**, in simple `.md` files. Pluribus syncs it to every tool you use formatted exactly how each tool expects it.
38
+ Write your project context **once**, in `pluribus.md`. Keep it as a single file for small projects, or compose shared team/org Markdown with `# @import` when the context needs to be reused.
36
39
 
37
- ```
38
- pluribus/
39
- ├── context.md # Your project: stack, architecture, conventions
40
- ├── identity.md # Who you are, your preferences, tone
41
- ├── skills.md # What your AI should be good at
42
- └── rules.md # Guardrails and constraints
40
+ ```text
41
+ your-project/
42
+ ├── pluribus.md # source of truth
43
+ └── shared/
44
+ ├── team-context.md # optional imported conventions
45
+ └── security-constraints.md # optional imported guardrails
43
46
  ```
44
47
 
45
- Then:
48
+ Then preview or sync:
46
49
 
47
50
  ```bash
48
- npx pluribus-context sync
51
+ npx --yes pluribus-context@latest sync --dry-run
52
+ npx --yes pluribus-context@latest sync
49
53
  ```
50
54
 
51
55
  And it generates the right files for each tool:
@@ -69,14 +73,46 @@ And it generates the right files for each tool:
69
73
 
70
74
  ## Getting Started
71
75
 
72
- ### Install
76
+ > **Version note:** `pluribus audit` is published in `pluribus-context@0.3.0`. The CI-oriented audit flags and read-only init preview documented in the GitHub release tag `v0.3.3` (`--json`, `--output`, `--github-annotations`, `--ci`, `init --dry-run`) are prepared for the next npm patch release `0.3.3`; until that patch is published, use `@0.3.0` for the basic read-only audit, or use the explicit `github:...#v0.3.3` source command shown below when testing the tagged read-only preview flags.
77
+
78
+ ### Pick the safe first command
79
+
80
+ If your repo already has AI context files such as `CLAUDE.md`, `.cursorrules`, Copilot instructions, or `AGENTS.md`, start with the read-only audit:
81
+
82
+ ```bash
83
+ npx --yes pluribus-context@latest audit
84
+ ```
85
+
86
+ It does not write files. Without `pluribus.md`, it lists existing AI context surfaces so you can decide what to migrate. With `pluribus.md`, it reports generated files that are missing or drifted.
87
+
88
+ If you are starting from scratch, preview the source-of-truth scaffold first, then create it when it looks right:
73
89
 
74
90
  ```bash
75
- # From npm (once published)
76
- npm install -g pluribus-context
91
+ # Tagged v0.3.3 path until pluribus-context@0.3.3 is published to npm:
92
+ npx --yes --package github:caioribeiroclw-pixel/pluribus#v0.3.3 pluribus init --dry-run
93
+
94
+ # Published npm path; writes pluribus.md:
95
+ npx --yes pluribus-context@latest init
96
+ ```
97
+
98
+ ### What Pluribus writes
99
+
100
+ Pluribus is intentionally narrow about filesystem changes:
101
+
102
+ - `audit`, `validate`, and `sync --dry-run` are read-only.
103
+ - `init` writes `pluribus.md` only. If that file already exists, it refuses to overwrite it.
104
+ - `sync` writes only the configured/generated AI context files such as `CLAUDE.md`, `.cursorrules`, `.github/copilot-instructions.md`, `AGENTS.md`, Windsurf/Continue rules, and `.rules`.
105
+ - Generated files include a `Generated by Pluribus ... do not edit manually` header so drift is easy to spot in review.
106
+ - Remote imports only touch `pluribus.lock.json` and `.pluribus/cache/remote/` when you explicitly pass `--update-imports`.
77
107
 
78
- # Or run directly with npx
79
- npx pluribus-context
108
+ When in doubt, run `npx --yes pluribus-context@latest audit` or `npx --yes pluribus-context@latest sync --dry-run` first.
109
+
110
+ ### Install
111
+
112
+ ```bash
113
+ # Install globally if you prefer a persistent `pluribus` command
114
+ npm install -g pluribus-context@latest
115
+ pluribus --help
80
116
 
81
117
  # Or clone and link locally
82
118
  git clone https://github.com/caioribeiroclw-pixel/pluribus.git
@@ -84,21 +120,48 @@ cd pluribus
84
120
  npm link
85
121
  ```
86
122
 
123
+ ### 60-second smoke test
124
+
125
+ Want to see exactly what gets generated before adding it to a real project?
126
+
127
+ ```bash
128
+ mkdir pluribus-demo && cd pluribus-demo
129
+ # Tagged v0.3.3 path until pluribus-context@0.3.3 is published to npm:
130
+ npx --yes --package github:caioribeiroclw-pixel/pluribus#v0.3.3 pluribus init --dry-run --name "Ana" --description "A Node.js service" --tools claude,cursor,copilot
131
+
132
+ # Published npm path; writes pluribus.md:
133
+ npx --yes pluribus-context@latest init --name "Ana" --description "A Node.js service" --tools claude,cursor,copilot
134
+ npx --yes pluribus-context@latest validate
135
+ npx --yes pluribus-context@latest sync --dry-run
136
+ ```
137
+
138
+ If the preview looks right, run `npx --yes pluribus-context@latest sync` to write the tool-specific files.
139
+
140
+ For a fuller walkthrough, see the [Quickstart](docs/quickstart.md). To enforce generated context files in pull requests, use the [CI audit example](docs/ci-audit-example.md); to catch drift before commits leave your machine, use the [Pre-commit Audit Hook](docs/pre-commit-audit.md). If your repo already has `CLAUDE.md`, `.cursorrules`, Copilot instructions, or `AGENTS.md`, run a [Context Drift Audit](docs/context-drift-audit.md) first, try the intentionally drifted [audit example](examples/context-drift-audit/), then follow [Migrate Existing AI Context Files](docs/migrate-existing-context.md). Before committing shared or generated AI instructions, use the [Context File Review Checklist](docs/context-file-review.md). If you're deciding between Pluribus and a one-way rules converter, see [When to use Pluribus](docs/when-to-use-pluribus.md). If you are debugging "context drift" after compaction or long sessions, start with the [Context Drift Taxonomy](docs/context-drift-taxonomy.md) to separate file drift from runtime precedence drift.
141
+
87
142
  ### Usage
88
143
 
89
144
  **1. Initialize your context file**
90
145
 
91
146
  ```bash
92
147
  cd your-project/
93
- pluribus init
148
+ # Tagged v0.3.3 path until pluribus-context@0.3.3 is published to npm:
149
+ npx --yes --package github:caioribeiroclw-pixel/pluribus#v0.3.3 pluribus init --dry-run
150
+
151
+ # Published npm path; writes pluribus.md:
152
+ npx --yes pluribus-context@latest init
94
153
  ```
95
154
 
96
- This creates `pluribus.md` with all required sections scaffolded. Fill in your project context.
155
+ The dry-run prints the scaffold without writing files. The second command creates `pluribus.md` with all required sections scaffolded. Fill in your project context.
97
156
 
98
- You can also use flags for non-interactive init:
157
+ You can also use flags for non-interactive init, including the same dry-run preview:
99
158
 
100
159
  ```bash
101
- pluribus init --name "Ana" --description "A background job runner" --tools claude,cursor,openclaw
160
+ # Tagged v0.3.3 path until pluribus-context@0.3.3 is published to npm:
161
+ npx --yes --package github:caioribeiroclw-pixel/pluribus#v0.3.3 pluribus init --dry-run --name "Ana" --description "A background job runner" --tools claude,cursor,openclaw
162
+
163
+ # Published npm path; writes pluribus.md:
164
+ npx --yes pluribus-context@latest init --name "Ana" --description "A background job runner" --tools claude,cursor,openclaw
102
165
  ```
103
166
 
104
167
  **2. Edit `pluribus.md`**
@@ -156,7 +219,51 @@ If you use remote imports and want to refresh the lock/cache while validating:
156
219
  pluribus validate --update-imports
157
220
  ```
158
221
 
159
- **5. Sync to all your tools**
222
+ **5. Audit generated files before syncing**
223
+
224
+ ```bash
225
+ pluribus audit
226
+ ```
227
+
228
+ This is read-only. It compares existing generated files with what `pluribus.md` would produce, reports missing or drifted outputs, and can run in CI with `--strict`:
229
+
230
+ ```bash
231
+ pluribus audit --strict
232
+ ```
233
+
234
+ In GitHub Actions, add annotations so drift appears inline in the check UI:
235
+
236
+ ```bash
237
+ # Tagged v0.3.3 path until pluribus-context@0.3.3 is published to npm:
238
+ npx --yes --package github:caioribeiroclw-pixel/pluribus#v0.3.3 pluribus audit --strict --github-annotations
239
+ ```
240
+
241
+ For GitHub Actions, `--ci` is the shorter equivalent of `--strict --github-annotations`:
242
+
243
+ ```bash
244
+ # Tagged v0.3.3 path until pluribus-context@0.3.3 is published to npm:
245
+ npx --yes --package github:caioribeiroclw-pixel/pluribus#v0.3.3 pluribus audit --ci
246
+ ```
247
+
248
+ For CI scripts, dashboards, or migration tooling, use machine-readable output:
249
+
250
+ ```bash
251
+ # Tagged v0.3.3 path until pluribus-context@0.3.3 is published to npm:
252
+ npx --yes --package github:caioribeiroclw-pixel/pluribus#v0.3.3 pluribus audit --strict --json
253
+ ```
254
+
255
+ To save the JSON as a CI artifact while keeping stdout quiet, add `--output`:
256
+
257
+ ```bash
258
+ # Tagged v0.3.3 path until pluribus-context@0.3.3 is published to npm:
259
+ npx --yes --package github:caioribeiroclw-pixel/pluribus#v0.3.3 pluribus audit --strict --json --output pluribus-audit.json
260
+ ```
261
+
262
+ The JSON shape is documented in [`schemas/audit-result.schema.json`](schemas/audit-result.schema.json) so CI wrappers and dashboards can validate integrations without scraping human output. For copy-paste enforcement, see the [CI audit example](docs/ci-audit-example.md) and the [Pre-commit Audit Hook](docs/pre-commit-audit.md).
263
+
264
+ If your project does not have `pluribus.md` yet, `pluribus audit` scans for known AI context files (`CLAUDE.md`, `.cursorrules`, Copilot instructions, `AGENTS.md`, Windsurf, Continue, Zed) so you know what to migrate.
265
+
266
+ **6. Sync to all your tools**
160
267
 
161
268
  ```bash
162
269
  pluribus sync
@@ -253,7 +360,7 @@ See `spec/skills-format.md` for the skill file format.
253
360
  - [x] Remote composable contexts MVP (explicit `--update-imports`, public GitHub/HTTPS, safety limits)
254
361
  - [x] Remote imports hardening (lockfile/cache/digest offline mode, optional GitHub auth, and CI coverage)
255
362
  - [ ] CI/CD: auto-sync on commit
256
- - [ ] Published to npm
363
+ - [x] Published to npm as [`pluribus-context`](https://www.npmjs.com/package/pluribus-context)
257
364
 
258
365
  ## Building in Public
259
366
 
@@ -261,10 +368,19 @@ I'm documenting every step of building Pluribus — the decisions, the trade-off
261
368
 
262
369
  Follow along: [@RibeiroCaioCLW](https://x.com/RibeiroCaioCLW)
263
370
 
264
- If you've felt this pain, [open an issue](https://github.com/caioribeiroclw-pixel/pluribus/issues) and tell me about your setup. What tools do you use? How do you manage context today? What's broken?
371
+ If you've felt this pain, tell me about your setup. What tools do you use? How do you manage context today? What's broken?
372
+
373
+ - [Quickstart feedback](https://github.com/caioribeiroclw-pixel/pluribus/issues/new?template=quickstart-feedback.yml) — if install, validate, or dry-run felt confusing
374
+ - [Audit feedback](https://github.com/caioribeiroclw-pixel/pluribus/issues/new?template=audit-feedback.yml) — if read-only `pluribus audit` missed drift, was noisy, or left the next step unclear
375
+ - [Bug report](https://github.com/caioribeiroclw-pixel/pluribus/issues/new?template=bug-report.yml) — if a command failed or generated the wrong output
376
+ - [Tool integration request](https://github.com/caioribeiroclw-pixel/pluribus/issues/new?template=integration-request.yml) — if another AI tool should be supported
265
377
 
266
378
  ## Docs
267
379
 
380
+ - [Quickstart](docs/quickstart.md) — first install, validation, dry-run preview, and common friction
381
+ - [Migrate Existing AI Context Files](docs/migrate-existing-context.md) — move from `CLAUDE.md`, `.cursorrules`, Copilot instructions, or `AGENTS.md` to one source of truth
382
+ - [When to use Pluribus](docs/when-to-use-pluribus.md) — choose between sync, one-way conversion, and tool-native context files
383
+ - [Context File Review Checklist](docs/context-file-review.md) — review AI instructions as supply-chain artifacts before committing generated context
268
384
  - [OpenClaw Integration](docs/openclaw-integration.md) — how Pluribus generates `AGENTS.md` for OpenClaw
269
385
  - [Composable Contexts](docs/composable-contexts.md) — local/remote imports, merge behavior, and safety rules
270
386
  - [Remote Composable Context Imports](docs/remote-composable-context-imports.md) — design notes for lockfile/cache/auth hardening
@@ -279,11 +395,13 @@ If you've felt this pain, [open an issue](https://github.com/caioribeiroclw-pixe
279
395
 
280
396
  This project is just getting started. The best way to help right now:
281
397
 
282
- 1. Star the repo if the problem resonates
283
- 2. 🗣️ [Open an issue](https://github.com/caioribeiroclw-pixel/pluribus/issues) describing your context management pain
284
- 3. 📣 Share with someone who maintains 3+ AI context files
398
+ 1. Try the 60-second smoke test above in a throwaway directory
399
+ 2. Star the repo if the problem resonates
400
+ 3. 🗣️ [Open a quickstart feedback issue](https://github.com/caioribeiroclw-pixel/pluribus/issues/new?template=quickstart-feedback.yml) if anything felt confusing
401
+ 4. 🔎 [Open an audit feedback issue](https://github.com/caioribeiroclw-pixel/pluribus/issues/new?template=audit-feedback.yml) if the read-only audit missed drift or felt noisy
402
+ 5. 📣 Share with someone who maintains 3+ AI context files
285
403
 
286
- Looking for first contributions? Check out the [open issues](https://github.com/caioribeiroclw-pixel/pluribus/issues). The next good contributions are release polish, CI/CD workflow examples, and real-world adapter feedback.
404
+ Looking for first contributions? Check out the [open issues](https://github.com/caioribeiroclw-pixel/pluribus/issues). The next good contributions are CI/CD workflow examples, real-world adapter feedback, and install/quickstart friction reports.
287
405
 
288
406
  ## License
289
407
 
package/bin/pluribus.js CHANGED
@@ -9,9 +9,13 @@ import { runInit } from '../src/commands/init.js'
9
9
  import { runSync } from '../src/commands/sync.js'
10
10
  import { runValidate } from '../src/commands/validate.js'
11
11
  import { runWatch } from '../src/commands/watch.js'
12
+ import { runAudit } from '../src/commands/audit.js'
12
13
  import { parseArgs } from '../src/utils/args.js'
14
+ import { SUPPORTED_TOOLS } from '../src/skills/built-in.js'
13
15
  import { VERSION } from '../src/utils/version.js'
14
16
 
17
+ const supportedToolsList = SUPPORTED_TOOLS.join(',')
18
+
15
19
  const HELP = `
16
20
  Pluribus v${VERSION} — Write your AI context once. Sync it to every tool.
17
21
 
@@ -22,13 +26,15 @@ COMMANDS
22
26
  init Create a pluribus.md file in the current directory
23
27
  sync Read pluribus.md and generate tool-specific output files
24
28
  validate Validate pluribus.md before syncing
29
+ audit Compare generated tool files with pluribus.md without writing
25
30
  watch Watch pluribus.md and auto-sync after changes
26
31
  help Show this help message
27
32
 
28
33
  OPTIONS (init)
29
34
  --name Project/author name
30
35
  --description One-line project description
31
- --tools Comma-separated list of tools to enable (claude,cursor,openclaw)
36
+ --tools Comma-separated list of tools to enable (${supportedToolsList})
37
+ --dry-run Preview the scaffold without writing pluribus.md
32
38
 
33
39
  OPTIONS (sync)
34
40
  --dry-run Preview output without writing files
@@ -40,6 +46,16 @@ OPTIONS (validate)
40
46
  --source Path to pluribus.md (default: ./pluribus.md)
41
47
  --update-imports Refresh remote github:/https:// imports before validating
42
48
 
49
+ OPTIONS (audit)
50
+ --source Path to pluribus.md (default: ./pluribus.md)
51
+ --tools Override which tools to audit (comma-separated)
52
+ --update-imports Refresh remote github:/https:// imports before auditing
53
+ --strict Exit non-zero when generated files are missing or drifted
54
+ --ci Shortcut for --strict --github-annotations
55
+ --json Print machine-readable audit results
56
+ --output Write --json results to a file instead of stdout
57
+ --github-annotations Print GitHub Actions annotations for drift/missing outputs
58
+
43
59
  OPTIONS (watch)
44
60
  --source Path to pluribus.md (default: ./pluribus.md)
45
61
  --tools Override which tools to sync (comma-separated)
@@ -49,18 +65,56 @@ OPTIONS (watch)
49
65
 
50
66
  EXAMPLES
51
67
  pluribus init
68
+ pluribus init --dry-run
52
69
  pluribus init --name "Ana" --description "A task manager" --tools claude,cursor
53
70
  pluribus sync
54
71
  pluribus sync --dry-run
55
72
  pluribus sync --tools claude,openclaw
56
73
  pluribus sync --update-imports
57
74
  pluribus validate
75
+ pluribus audit
76
+ pluribus audit --strict
77
+ pluribus audit --ci
78
+ pluribus audit --json
79
+ pluribus audit --strict --json --output pluribus-audit.json
80
+ pluribus audit --strict --github-annotations
58
81
  pluribus watch --tools claude,cursor
59
82
 
60
83
  DOCS
61
84
  https://github.com/caioribeiroclw-pixel/pluribus
62
85
  `
63
86
 
87
+ const COMMAND_FLAGS = {
88
+ init: new Set(['name', 'description', 'tools', 'dry-run']),
89
+ sync: new Set(['dry-run', 'tools', 'source', 'update-imports']),
90
+ validate: new Set(['source', 'update-imports']),
91
+ audit: new Set(['source', 'tools', 'update-imports', 'strict', 'ci', 'json', 'output', 'github-annotations']),
92
+ watch: new Set(['source', 'tools', 'update-imports', 'dry-run', 'once', 'debounce']),
93
+ }
94
+
95
+ function getFlagNames(argv) {
96
+ return argv
97
+ .filter((arg) => arg.startsWith('--') && arg.length > 2)
98
+ .map((arg) => {
99
+ const withoutPrefix = arg.slice(2)
100
+ const eqIdx = withoutPrefix.indexOf('=')
101
+ return eqIdx === -1 ? withoutPrefix : withoutPrefix.slice(0, eqIdx)
102
+ })
103
+ }
104
+
105
+ function validateFlags(command, argv) {
106
+ const allowed = COMMAND_FLAGS[command]
107
+ if (!allowed) return
108
+
109
+ const unknown = [...new Set(getFlagNames(argv).filter((flag) => !allowed.has(flag)))]
110
+ if (unknown.length === 0) return
111
+
112
+ console.error(`❌ Unknown option${unknown.length === 1 ? '' : 's'} for \`${command}\`: ${unknown.map((flag) => `--${flag}`).join(', ')}`)
113
+ console.error(` Supported options: ${[...allowed].map((flag) => `--${flag}`).join(', ')}`)
114
+ console.error(' Run `pluribus help` for usage.')
115
+ process.exit(1)
116
+ }
117
+
64
118
  async function main() {
65
119
  const args = process.argv.slice(2)
66
120
 
@@ -75,7 +129,9 @@ async function main() {
75
129
  }
76
130
 
77
131
  const command = args[0]
78
- const parsedArgs = parseArgs(args.slice(1))
132
+ const commandArgs = args.slice(1)
133
+ validateFlags(command, commandArgs)
134
+ const parsedArgs = parseArgs(commandArgs)
79
135
 
80
136
  try {
81
137
  switch (command) {
@@ -91,6 +147,9 @@ async function main() {
91
147
  case 'watch':
92
148
  await runWatch(parsedArgs)
93
149
  break
150
+ case 'audit':
151
+ await runAudit(parsedArgs)
152
+ break
94
153
  default:
95
154
  console.error(`❌ Unknown command: "${command}"`)
96
155
  console.log(`Run \`pluribus help\` for usage.`)
@@ -0,0 +1,80 @@
1
+ # CI audit example
2
+
3
+ Use this when `pluribus.md` is the source of truth and generated context files should stay current in pull requests.
4
+
5
+ `pluribus audit --strict` is read-only: it fails when a generated file is missing or drifted, but it does not rewrite anything in CI. The basic audit command is published in `pluribus-context@0.3.0`; the `--github-annotations`, `--json`, `--output`, and `--ci` flags below are available in the GitHub release tag `v0.3.3` while npm latest waits for the `0.3.3` publish. Until that patch is published, pin CI to `pluribus-context@0.3.0` for the strict text check, or test the new flags from the immutable GitHub tag with `--package github:caioribeiroclw-pixel/pluribus#v0.3.3`.
6
+
7
+ Use `--ci` in GitHub Actions when you want the shortest path: it is equivalent to `--strict --github-annotations`, so drift appears inline in the check UI and the job fails on drift. Use the explicit flags when composing custom outputs; pair annotations with `--json --output pluribus-audit.json` when you want a machine-readable artifact for dashboards or review comments. The output contract is documented in [`schemas/audit-result.schema.json`](../schemas/audit-result.schema.json).
8
+
9
+ ## GitHub Actions
10
+
11
+ Create `.github/workflows/pluribus-audit.yml` in the repository that uses Pluribus:
12
+
13
+ ```yaml
14
+ name: Pluribus context audit
15
+
16
+ on:
17
+ pull_request:
18
+ push:
19
+ branches:
20
+ - main
21
+
22
+ permissions:
23
+ contents: read
24
+
25
+ jobs:
26
+ audit:
27
+ runs-on: ubuntu-latest
28
+ steps:
29
+ - name: Checkout
30
+ uses: actions/checkout@v6
31
+
32
+ - name: Setup Node.js
33
+ uses: actions/setup-node@v6
34
+ with:
35
+ node-version: 22.x
36
+
37
+ - name: Audit AI context drift
38
+ # Tagged v0.3.3 path until pluribus-context@0.3.3 is published to npm.
39
+ run: npx --yes --package github:caioribeiroclw-pixel/pluribus#v0.3.3 pluribus audit --ci
40
+ ```
41
+
42
+ If you want JSON output as an artifact, use this variant:
43
+
44
+ ```yaml
45
+ - name: Audit AI context drift as JSON
46
+ # Tagged v0.3.3 path until pluribus-context@0.3.3 is published to npm.
47
+ run: npx --yes --package github:caioribeiroclw-pixel/pluribus#v0.3.3 pluribus audit --ci --json --output pluribus-audit.json
48
+
49
+ - name: Upload Pluribus audit result
50
+ if: always()
51
+ uses: actions/upload-artifact@v5
52
+ with:
53
+ name: pluribus-audit
54
+ path: pluribus-audit.json
55
+ ```
56
+
57
+ ## Local repair loop
58
+
59
+ When CI fails:
60
+
61
+ ```bash
62
+ npx --yes pluribus-context@latest audit
63
+ npx --yes pluribus-context@latest sync --dry-run
64
+ npx --yes pluribus-context@latest sync
65
+ npx --yes pluribus-context@latest audit --strict
66
+ # In GitHub Actions with the tagged 0.3.3 CI flags, use:
67
+ npx --yes --package github:caioribeiroclw-pixel/pluribus#v0.3.3 pluribus audit --ci
68
+ ```
69
+
70
+ Commit `pluribus.md` and the generated files together, or document that your team regenerates generated files during setup. Do not commit `.pluribus/cache/remote/`; commit `pluribus.lock.json` when you use remote imports.
71
+
72
+ ## Remote imports in CI
73
+
74
+ Normal `audit`, `sync`, and `validate` runs do not fetch remote imports. They use the committed `pluribus.lock.json` plus the local cache. If CI fails because a remote import is unlocked or cache-missing, refresh it locally with:
75
+
76
+ ```bash
77
+ npx --yes pluribus-context@latest sync --update-imports
78
+ ```
79
+
80
+ Then review and commit the updated `pluribus.lock.json` with the generated outputs. Use `GH_TOKEN`/`GITHUB_TOKEN` only when refreshing private GitHub imports; Pluribus never writes tokens to the lockfile or cache.