quiver-cli 0.8.0 → 1.1.0

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.
Files changed (200) hide show
  1. package/README.md +127 -45
  2. package/bin/quiver-cli.mjs +3 -1
  3. package/dist/cli.js +666 -436
  4. package/package.json +2 -2
  5. package/template/.agents/AGENTS.md +4 -3
  6. package/template/.agents/config.json +7 -0
  7. package/template/.agents/plugins/opencode/rtk.ts +34 -0
  8. package/template/.agents/skills/agent-browser/SKILL.md +1 -0
  9. package/template/.agents/skills/apps/skybridge/SKILL.md +4 -0
  10. package/template/.agents/skills/design/impeccable/SKILL.md +36 -118
  11. package/template/.agents/skills/design/impeccable/reference/adapt.md +1 -0
  12. package/template/.agents/skills/design/impeccable/reference/adapt.native.md +58 -0
  13. package/template/.agents/skills/design/impeccable/reference/android.md +40 -0
  14. package/template/.agents/skills/design/impeccable/reference/animate.md +73 -188
  15. package/template/.agents/skills/design/impeccable/reference/audit.md +12 -9
  16. package/template/.agents/skills/design/impeccable/reference/audit.native.md +139 -0
  17. package/template/.agents/skills/design/impeccable/reference/bolder.md +19 -101
  18. package/template/.agents/skills/design/impeccable/reference/clarify.md +59 -253
  19. package/template/.agents/skills/design/impeccable/reference/colorize.md +51 -222
  20. package/template/.agents/skills/design/impeccable/reference/craft-floor.md +42 -0
  21. package/template/.agents/skills/design/impeccable/reference/craft.md +3 -121
  22. package/template/.agents/skills/design/impeccable/reference/critique.md +44 -23
  23. package/template/.agents/skills/design/impeccable/reference/degraded/asset-producer.md +90 -0
  24. package/template/.agents/skills/design/impeccable/reference/degraded/documenter.md +24 -0
  25. package/template/.agents/skills/design/impeccable/reference/degraded/finish-reviewer.md +37 -0
  26. package/template/.agents/skills/design/impeccable/reference/degraded/manual-edit-applier.md +92 -0
  27. package/template/.agents/skills/design/impeccable/reference/delight.md +47 -279
  28. package/template/.agents/skills/design/impeccable/reference/distill.md +2 -2
  29. package/template/.agents/skills/design/impeccable/reference/doctor.md +53 -0
  30. package/template/.agents/skills/design/impeccable/reference/document.md +60 -73
  31. package/template/.agents/skills/design/impeccable/reference/harden.md +1 -12
  32. package/template/.agents/skills/design/impeccable/reference/hooks.md +20 -5
  33. package/template/.agents/skills/design/impeccable/reference/init.md +72 -119
  34. package/template/.agents/skills/design/impeccable/reference/ios.md +45 -0
  35. package/template/.agents/skills/design/impeccable/reference/layout.md +54 -131
  36. package/template/.agents/skills/design/impeccable/reference/live-setup.md +102 -0
  37. package/template/.agents/skills/design/impeccable/reference/live.md +116 -511
  38. package/template/.agents/skills/design/impeccable/reference/new-work.md +105 -0
  39. package/template/.agents/skills/design/impeccable/reference/{product.md → operate.md} +6 -5
  40. package/template/.agents/skills/design/impeccable/reference/optimize.md +4 -4
  41. package/template/.agents/skills/design/impeccable/reference/overdrive.md +1 -4
  42. package/template/.agents/skills/design/impeccable/reference/polish.md +68 -212
  43. package/template/.agents/skills/design/impeccable/reference/quieter.md +3 -3
  44. package/template/.agents/skills/design/impeccable/reference/routing.md +18 -0
  45. package/template/.agents/skills/design/impeccable/reference/shape.md +38 -144
  46. package/template/.agents/skills/design/impeccable/reference/typeset.md +51 -250
  47. package/template/.agents/skills/design/impeccable/reference/visualize.md +47 -0
  48. package/template/.agents/skills/design/impeccable/scripts/command-metadata.json +1 -1
  49. package/template/.agents/skills/design/impeccable/scripts/concept-seed.mjs +558 -0
  50. package/template/.agents/skills/design/impeccable/scripts/context-signals.mjs +119 -10
  51. package/template/.agents/skills/design/impeccable/scripts/context.mjs +534 -45
  52. package/template/.agents/skills/design/impeccable/scripts/critique-storage.mjs +18 -47
  53. package/template/.agents/skills/design/impeccable/scripts/detector/browser/injected/index.mjs +96 -10
  54. package/template/.agents/skills/design/impeccable/scripts/detector/cli/main.mjs +174 -26
  55. package/template/.agents/skills/design/impeccable/scripts/detector/design-system.mjs +233 -0
  56. package/template/.agents/skills/design/impeccable/scripts/detector/detect-antipatterns-browser.js +3348 -203
  57. package/template/.agents/skills/design/impeccable/scripts/detector/engines/browser/detect-url.mjs +102 -7
  58. package/template/.agents/skills/design/impeccable/scripts/detector/engines/regex/detect-text.mjs +297 -97
  59. package/template/.agents/skills/design/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +187 -16
  60. package/template/.agents/skills/design/impeccable/scripts/detector/engines/static-html/detect-html.mjs +41 -11
  61. package/template/.agents/skills/design/impeccable/scripts/detector/findings.mjs +7 -1
  62. package/template/.agents/skills/design/impeccable/scripts/detector/node/file-system.mjs +16 -2
  63. package/template/.agents/skills/design/impeccable/scripts/detector/registry/antipatterns.mjs +207 -38
  64. package/template/.agents/skills/design/impeccable/scripts/detector/rules/checks.mjs +3082 -173
  65. package/template/.agents/skills/design/impeccable/scripts/detector/shared/constants.mjs +11 -0
  66. package/template/.agents/skills/design/impeccable/scripts/detector/shared/fonts.mjs +30 -0
  67. package/template/.agents/skills/design/impeccable/scripts/doctor.mjs +336 -0
  68. package/template/.agents/skills/design/impeccable/scripts/embed-prompt.mjs +133 -0
  69. package/template/.agents/skills/design/impeccable/scripts/generate-image.mjs +240 -0
  70. package/template/.agents/skills/design/impeccable/scripts/hook-admin.mjs +98 -18
  71. package/template/.agents/skills/design/impeccable/scripts/hook-before-edit.mjs +46 -6
  72. package/template/.agents/skills/design/impeccable/scripts/hook-lib.mjs +518 -50
  73. package/template/.agents/skills/design/impeccable/scripts/hook.mjs +25 -8
  74. package/template/.agents/skills/design/impeccable/scripts/lib/artifact-schema.mjs +93 -0
  75. package/template/.agents/skills/design/impeccable/scripts/lib/composition-catalog.mjs +200 -0
  76. package/template/.agents/skills/design/impeccable/scripts/lib/concept-catalog.mjs +357 -0
  77. package/template/.agents/skills/design/impeccable/scripts/lib/impeccable-config.mjs +27 -7
  78. package/template/.agents/skills/design/impeccable/scripts/lib/impeccable-paths.mjs +17 -8
  79. package/template/.agents/skills/design/impeccable/scripts/lib/provider.mjs +5 -0
  80. package/template/.agents/skills/design/impeccable/scripts/lib/roll-selection.mjs +362 -0
  81. package/template/.agents/skills/design/impeccable/scripts/lib/staleness-deep.mjs +457 -0
  82. package/template/.agents/skills/design/impeccable/scripts/lib/staleness-notice.mjs +169 -0
  83. package/template/.agents/skills/design/impeccable/scripts/lib/staleness.mjs +457 -0
  84. package/template/.agents/skills/design/impeccable/scripts/lib/surface-briefs.mjs +151 -0
  85. package/template/.agents/skills/design/impeccable/scripts/lib/target-slug.mjs +33 -0
  86. package/template/.agents/skills/design/impeccable/scripts/lib/template-extensions.mjs +146 -0
  87. package/template/.agents/skills/design/impeccable/scripts/live/accept-css.mjs +617 -0
  88. package/template/.agents/skills/design/impeccable/scripts/live/accept-verify.mjs +60 -0
  89. package/template/.agents/skills/design/impeccable/scripts/live/browser-script-parts.mjs +7 -1
  90. package/template/.agents/skills/design/impeccable/scripts/live/completion.mjs +10 -1
  91. package/template/.agents/skills/design/impeccable/scripts/live/event-validation.mjs +67 -5
  92. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/astro.mjs +47 -0
  93. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/detect-utils.mjs +73 -0
  94. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/index.mjs +143 -0
  95. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/journal.mjs +197 -0
  96. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
  97. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/nuxt.mjs +161 -0
  98. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/script-src.mjs +17 -0
  99. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
  100. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
  101. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
  102. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
  103. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
  104. package/template/.agents/skills/design/impeccable/scripts/live/generation-preflight.mjs +149 -0
  105. package/template/.agents/skills/design/impeccable/scripts/live/instructions.mjs +142 -0
  106. package/template/.agents/skills/design/impeccable/scripts/live/poll-lanes.mjs +14 -0
  107. package/template/.agents/skills/design/impeccable/scripts/live/roots.mjs +508 -0
  108. package/template/.agents/skills/design/impeccable/scripts/live/session-store.mjs +324 -50
  109. package/template/.agents/skills/design/impeccable/scripts/live/source-lock.mjs +105 -0
  110. package/template/.agents/skills/design/impeccable/scripts/live/source-search.mjs +105 -0
  111. package/template/.agents/skills/design/impeccable/scripts/live/svelte-ast.mjs +961 -0
  112. package/template/.agents/skills/design/impeccable/scripts/live/svelte-component.mjs +588 -72
  113. package/template/.agents/skills/design/impeccable/scripts/live/sveltekit-adapter.mjs +59 -17
  114. package/template/.agents/skills/design/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
  115. package/template/.agents/skills/design/impeccable/scripts/live/vocabulary.mjs +135 -0
  116. package/template/.agents/skills/design/impeccable/scripts/live-accept.mjs +210 -68
  117. package/template/.agents/skills/design/impeccable/scripts/live-browser.js +1562 -223
  118. package/template/.agents/skills/design/impeccable/scripts/live-commit-manual-edits.mjs +3 -0
  119. package/template/.agents/skills/design/impeccable/scripts/live-complete.mjs +33 -1
  120. package/template/.agents/skills/design/impeccable/scripts/live-inject.mjs +175 -255
  121. package/template/.agents/skills/design/impeccable/scripts/live-insert.mjs +26 -6
  122. package/template/.agents/skills/design/impeccable/scripts/live-manual-edit-evidence.mjs +6 -1
  123. package/template/.agents/skills/design/impeccable/scripts/live-poll.mjs +61 -16
  124. package/template/.agents/skills/design/impeccable/scripts/live-resume.mjs +39 -10
  125. package/template/.agents/skills/design/impeccable/scripts/live-server.mjs +573 -47
  126. package/template/.agents/skills/design/impeccable/scripts/live-status.mjs +17 -7
  127. package/template/.agents/skills/design/impeccable/scripts/live-wrap.mjs +124 -91
  128. package/template/.agents/skills/design/impeccable/scripts/live.mjs +88 -26
  129. package/template/.agents/skills/design/impeccable/scripts/palette.mjs +76 -81
  130. package/template/.agents/skills/design/impeccable/scripts/pin.mjs +18 -11
  131. package/template/.agents/skills/design/impeccable/scripts/serve-question.mjs +932 -0
  132. package/template/.agents/skills/design/impeccable/scripts/surface-brief.mjs +74 -0
  133. package/template/.agents/skills/design/shadcn/SKILL.md +46 -11
  134. package/template/.agents/skills/design/shadcn/cli.md +49 -16
  135. package/template/.agents/skills/design/shadcn/customization.md +14 -7
  136. package/template/.agents/skills/design/shadcn/evals/evals.json +30 -0
  137. package/template/.agents/skills/design/shadcn/mcp.md +27 -16
  138. package/template/.agents/skills/design/shadcn/registry.md +277 -0
  139. package/template/.agents/skills/design/shadcn/rules/chat.md +224 -0
  140. package/template/.agents/skills/design/shadcn/rules/composition.md +20 -2
  141. package/template/.agents/skills/design/shadcn/rules/styling.md +23 -0
  142. package/template/.agents/skills/find-skills/SKILL.md +2 -3
  143. package/template/.agents/skills/hono/SKILL.md +579 -0
  144. package/template/.agents/skills/integrations/langfuse/SKILL.md +10 -6
  145. package/template/.agents/skills/integrations/langfuse/references/ci-cd.md +41 -0
  146. package/template/.agents/skills/integrations/langfuse/references/cli.md +8 -0
  147. package/template/.agents/skills/integrations/langfuse/references/error-analysis.md +15 -27
  148. package/template/.agents/skills/integrations/langfuse/references/instrumentation.md +39 -52
  149. package/template/.agents/skills/integrations/langfuse/references/judge-calibration.md +5 -2
  150. package/template/.agents/skills/integrations/langfuse/references/prompt-engineering.md +35 -0
  151. package/template/.agents/skills/integrations/langfuse/references/prompt-migration.md +41 -196
  152. package/template/.agents/skills/integrations/langfuse/references/skill-feedback.md +3 -0
  153. package/template/.agents/skills/integrations/langfuse/references/trace-evaluator-upgrade.md +76 -0
  154. package/template/.agents/skills/integrations/langfuse/references/user-feedback.md +4 -0
  155. package/template/.agents/skills/integrations/langfuse/references/v4-project-migration.md +73 -0
  156. package/template/.agents/skills/supabase/CHANGELOG.md +71 -0
  157. package/template/.agents/skills/supabase/SKILL.md +145 -0
  158. package/template/.agents/skills/supabase/assets/feedback-issue-template.md +17 -0
  159. package/template/.agents/skills/supabase/references/skill-feedback.md +17 -0
  160. package/template/.agents/skills/supabase-postgres-best-practices/CHANGELOG.md +73 -0
  161. package/template/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
  162. package/template/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
  163. package/template/.agents/skills/supabase-postgres-best-practices/references/_sections.md +39 -0
  164. package/template/.agents/skills/supabase-postgres-best-practices/references/_template.md +34 -0
  165. package/template/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  166. package/template/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  167. package/template/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  168. package/template/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  169. package/template/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  170. package/template/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  171. package/template/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  172. package/template/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  173. package/template/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  174. package/template/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  175. package/template/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  176. package/template/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  177. package/template/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  178. package/template/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  179. package/template/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  180. package/template/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  181. package/template/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  182. package/template/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  183. package/template/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  184. package/template/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
  185. package/template/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  186. package/template/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  187. package/template/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
  188. package/template/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  189. package/template/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  190. package/template/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  191. package/template/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  192. package/template/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  193. package/template/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  194. package/template/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  195. package/template/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
  196. package/template/.agents/upstreams.json +34 -12
  197. package/template/.agents/skills/design/impeccable/reference/brand.md +0 -108
  198. package/template/.agents/skills/design/impeccable/reference/codex.md +0 -105
  199. package/template/.agents/skills/design/impeccable/reference/interaction-design.md +0 -189
  200. package/template/.agents/skills/integrations/langfuse/references/sdk-upgrade.md +0 -175
package/README.md CHANGED
@@ -1,21 +1,24 @@
1
1
  # quiver-cli
2
2
 
3
- Compose a selected subset of skills, slash commands and MCP servers from a
4
- central catalog into any repo — as **native configs** for opencode, Claude Code
5
- and Codex — with **lockfile-based drift awareness**.
3
+ Compose a selected subset of skills, slash commands, provider plugins and MCP
4
+ servers from a central catalog into any repo — as **native configs** for
5
+ opencode, Claude Code and Codex — with **lockfile-based drift awareness**.
6
6
 
7
7
  One thing done right: repo composition + drift detection. No marketplace, no
8
8
  extra agents, no command abstraction.
9
9
 
10
10
  - **One source of truth** — `.agents/` + `quiver.lock`, committed to the repo.
11
- - **Native output** — `.claude/`, `.opencode/`, `.codex/`, `.mcp.json`,
12
- `opencode.json` are generated and gitignored; each tool loads its own format.
11
+ - **Native output** — `.opencode/`, `opencode.json`, `.claude/`, `.mcp.json`,
12
+ `.codex/` are generated and gitignored; each tool loads its own format.
13
13
  - **Drift detection** — content digests for skills/commands, tool snapshots for
14
14
  MCP servers (including tool-description poisoning).
15
15
  - **Upstream awareness** — know when a source repo updates a skill you imported.
16
16
 
17
17
  ## Quick start
18
18
 
19
+ Requires **Node >= 20.12** (the interactive pickers depend on it; `init`, `add`,
20
+ `remove` and `providers` abort on older versions).
21
+
19
22
  From the root of the target repository:
20
23
 
21
24
  ```bash
@@ -31,11 +34,11 @@ git add .agents quiver.lock .gitignore
31
34
  git commit -m "chore: add agent config"
32
35
  ```
33
36
 
34
- Restart your AI tool (Claude Code, opencode, Codex) to load the configs.
37
+ Restart your AI tool (opencode, Claude Code, Codex) to load the configs.
35
38
  Day to day:
36
39
 
37
40
  ```bash
38
- quiver-cli add mcp:context7 # add one entry (skill:/command:/mcp:)
41
+ quiver-cli add mcp:context7 # add one entry (skill:/command:/mcp:/plugin:)
39
42
  quiver-cli sync # regenerate provider configs from .agents/
40
43
  quiver-cli check # detect drift (CI-friendly: --json, exit 1)
41
44
  ```
@@ -45,53 +48,112 @@ quiver-cli check # detect drift (CI-friendly: --json, exit 1)
45
48
  | Command | Description |
46
49
  | -------------------------- | ----------------------------------------------------------------- |
47
50
  | `quiver-cli init` | Interactive picker; write native configs + `quiver.lock` |
48
- | `quiver-cli add <id>` | Add one entry (`skill:<name>`, `command:<name>`, `mcp:<name>`) |
49
- | `quiver-cli remove <id>` | Remove one entry; keep lockfile + configs consistent |
51
+ | `quiver-cli add <id>` | Add one entry (`skill:`, `command:`, `mcp:`, `plugin:`) |
52
+ | `quiver-cli remove <id>` | Remove one entry; keep lockfile + configs consistent (alias: `rm`)|
53
+ | `quiver-cli disable <id>` | Turn an MCP server off locally (`mcp:<name>`, gitignored override)|
54
+ | `quiver-cli enable <id>` | Turn a locally disabled MCP server back on |
50
55
  | `quiver-cli update [id]` | Pull newer catalog content into `.agents/` (all or one entry) |
51
56
  | `quiver-cli sync` | Regenerate provider configs from `.agents/`; warn on drift |
52
- | `quiver-cli list` | Show installed entries incl. MCP tool counts (alias: `ls`) |
53
- | `quiver-cli status` | Diff the lockfile against what is actually in the repo (exit 1) |
54
- | `quiver-cli check` | Detect drift (skill digests, MCP tool snapshots) |
57
+ | `quiver-cli providers` | Change which tools get configs (`opencode`, `claude`, `codex`) |
58
+ | `quiver-cli list` | Show skills, commands, plugins + MCP tool counts (alias: `ls`) |
59
+ | `quiver-cli check` | Detect drift: skill digests, provider shims, MCP tool snapshots |
55
60
  | `quiver-cli upstream` | Check source repos for skill updates (catalog maintenance) |
56
61
  | `quiver-cli upstream pull` | Pull latest upstream content into the catalog (`[skill]`) |
57
- | `quiver-cli login` | Store a GitHub token for remote (`github:`) catalogs |
58
- | `quiver-cli logout` | Remove the stored GitHub token |
59
62
  | `quiver-cli help` | Show help |
60
63
  | `quiver-cli version` | Show the version + any available update (`-v`, `--version`) |
61
64
 
62
65
  Options: `-f/--force`, `--all/-y` (non-interactive), `--json`
63
- (status/check/upstream/list), `--providers=claude,opencode` (limit generated
64
- configs), `--catalog=<source>` (catalog source for `init` and `upstream`),
65
- `--introspect-stdio` (allow running stdio MCP servers during `check`).
66
+ (check/upstream/list/update), `--providers=opencode,claude` (set the generated
67
+ configs for `init`, `sync` and `providers`), `--catalog=<source>` (catalog
68
+ source for `init` and `upstream`), `--offline` (skip MCP re-introspection
69
+ during `check`), `-V/--verbose` (full tool lists and description diffs in
70
+ `check`), `--accept` (record the current MCP tool snapshots as the new
71
+ baseline in `check`), `--introspect-stdio` (allow running stdio MCP servers
72
+ during `check`).
73
+
74
+ Value flags are written with `=` (`--providers=opencode,claude`,
75
+ `--catalog=github:acme/catalog`); the space-separated form is not supported.
76
+ `quiver-cli providers` also accepts the list as a positional
77
+ (`quiver-cli providers opencode,claude`) and falls back to an interactive
78
+ multiselect pre-filled with the current selection.
66
79
 
67
80
  ## What gets generated
68
81
 
69
- | Artifact | Claude Code | opencode | Codex |
70
- | -------- | ------------------------ | --------------------------- | ------------------------------ |
71
- | Skills | `.claude/skills/*` (link)| `.opencode/skills/*` (link) | native from `.agents/skills` |
72
- | Commands | `.claude/commands/*` | `.opencode/commands/*` | (not supported yet) |
73
- | MCP | `.mcp.json` | `opencode.json` | `.codex/config.toml` |
74
- | Guide | `CLAUDE.md` (link) | `AGENTS.md` (link) | `AGENTS.md` (native) |
82
+ | Artifact | opencode | Claude Code | Codex |
83
+ | -------- | --------------------------- | --------------------------- | ---------------------------- |
84
+ | Skills | `.opencode/skills/*` (link) | `.claude/skills/*` (link) | native from `.agents/skills` |
85
+ | Commands | `.opencode/commands/*` | `.claude/commands/*` (link) | (not supported yet) |
86
+ | MCP | `opencode.json` | `.mcp.json` | `.codex/config.toml` |
87
+ | Settings | `.opencode/tui.json` | `.claude/settings.json` | |
88
+ | Plugins | `.opencode/plugins/*` | — | — |
89
+ | Guide | `AGENTS.md` (link) | `CLAUDE.md` (link) | `AGENTS.md` (native) |
75
90
 
76
91
  `AGENTS.md` at the repo root is a symlink to `.agents/AGENTS.md` (created only
77
- when the catalog ships one); `CLAUDE.md` links to it. Codex reads skills and
78
- `AGENTS.md` natively from the repo, so no shims are emitted for those.
92
+ when the catalog ships one); `CLAUDE.md` links to it. Both are written
93
+ independently of the provider selection. Codex reads skills and `AGENTS.md`
94
+ natively from the repo, so no shims are emitted for those.
79
95
 
80
96
  By default configs are generated for all three tools. `init` asks which ones
81
- you use (or pass `--providers=claude,opencode`); the choice is stored in
97
+ you use (or pass `--providers=opencode,claude`); the choice is stored in
82
98
  `quiver.lock`, and deselected tools have their generated files cleaned up on
83
99
  `sync`.
84
100
 
101
+ Besides `mcpServers` and `plugins`, `.agents/config.json` carries provider
102
+ overlays that are copied into the generated configs:
103
+
104
+ | Key | Effect |
105
+ | ---------- | ----------------------------------------------------------------- |
106
+ | `opencode` | Merged with the selected MCP servers into `opencode.json` |
107
+ | `tui` | Emitted as `.opencode/tui.json` |
108
+ | `claude` | `claude.settings` is written verbatim to `.claude/settings.json` |
109
+ | `shared` | Free-form values carried through into the repo's `config.json` |
110
+
111
+ Selected local plugins are copied under `.agents/plugins/opencode/` and linked
112
+ into OpenCode's plugin discovery directory.
113
+
114
+ MCP `${VAR}` placeholders are emitted as OpenCode-native `{env:VAR}` references,
115
+ so generated `opencode.json` files never contain resolved secret values.
116
+
117
+ The bundled catalog includes the official RTK OpenCode adapter. Install RTK
118
+ separately, then enable the adapter per repository:
119
+
120
+ ```bash
121
+ quiver-cli add plugin:rtk
122
+ quiver-cli check # also verifies that the rtk binary is on PATH
123
+ ```
124
+
125
+ ## Toggling MCP servers locally
126
+
127
+ Some MCP servers are only worth their token cost for specific tasks. Instead
128
+ of removing them, switch them off locally:
129
+
130
+ ```bash
131
+ quiver-cli disable mcp:posthog # drop it from the generated provider configs
132
+ quiver-cli enable mcp:posthog # bring it back - instant, no re-introspection
133
+ ```
134
+
135
+ The state lives in `.agents/config.local.json` (gitignored), so toggling never
136
+ touches the committed `.agents/config.json`, `quiver.lock` or your teammates'
137
+ setups. Disabled servers keep their lockfile entry and tool snapshot; `list`
138
+ marks them as `disabled`, and `check` skips their re-introspection.
139
+
85
140
  ## The lockfile
86
141
 
87
142
  `quiver.lock` records, per entry: source path, content digest, and — for MCP
88
143
  servers — a **tool snapshot** (`{ description, inputSchemaHash }` per tool).
89
- This is the basis for `status`, `sync` and `check`.
144
+ This is the basis for `sync` and `check`.
90
145
 
91
146
  ## `check` — drift awareness
92
147
 
148
+ `check` is the single drift command. It compares four things:
149
+
93
150
  - **Skills/commands**: compares the stored digest against the current `.agents/`
94
151
  content.
152
+ - **Provider shims**: verifies the generated `.opencode/`, `.claude/`, `.codex/`
153
+ configs match the lockfile (missing, stale or out-of-sync files) → fix with
154
+ `quiver-cli sync`.
155
+ - **Plugin requirements**: warns when an installed plugin needs a binary that is
156
+ not on `PATH` (e.g. `rtk`).
95
157
  - **MCP servers** (the real lever): re-introspects `tools/list` and diffs against
96
158
  the snapshot → new/removed tools, changed input schemas, and — security
97
159
  critical — **changed tool descriptions** (defends against tool-description
@@ -102,6 +164,18 @@ diff against it. Servers that fail introspection (e.g. requiring interactive
102
164
  OAuth) are reported as skipped. stdio servers run foreign code and are only
103
165
  introspected with `--introspect-stdio`.
104
166
 
167
+ Pass `--offline` to skip MCP re-introspection entirely and check only digests
168
+ and provider shims — no network, no foreign code, useful for a fast local
169
+ sanity check.
170
+
171
+ Once a reported MCP change has been reviewed and is legitimate, record it as the
172
+ new baseline:
173
+
174
+ ```bash
175
+ quiver-cli check -V # full tool lists and description before/after
176
+ quiver-cli check --accept # adopt the current snapshots
177
+ ```
178
+
105
179
  `quiver-cli check --json` is CI-friendly (exit 1 on drift).
106
180
 
107
181
  ## `upstream` — source updates
@@ -113,10 +187,10 @@ imported into the catalog?**
113
187
 
114
188
  Because it records baselines (and `pull` rewrites skill copies) **in the catalog
115
189
  itself**, run it where the catalog is writable — inside the quiver-cli repo, or
116
- against a writable local checkout via `--catalog <path>`. Run from a consuming
117
- repo, where the catalog is the read-only installed package (or a remote cache),
118
- it aborts with guidance; use `quiver-cli check` / `quiver-cli update` there
119
- instead.
190
+ against a writable local checkout via `--catalog=local:/absolute/path/.agents`.
191
+ Run from a consuming repo, where the catalog is the read-only installed package
192
+ (or a remote cache), it aborts with guidance; use `quiver-cli check` /
193
+ `quiver-cli update` there instead.
120
194
 
121
195
  Origins live in `template/.agents/upstreams.json` (`repo`, `path`, `ref` per
122
196
  skill). `quiver-cli upstream` queries the GitHub Commits API for the latest
@@ -143,9 +217,9 @@ By default `init` uses the catalog bundled with the package. Teams can host
143
217
  their own catalog in a GitHub repo and point `init` at it:
144
218
 
145
219
  ```bash
146
- quiver-cli init --catalog github:acme/agent-catalog # .agents at repo root
147
- quiver-cli init --catalog github:acme/monorepo/tools/.agents # subdirectory
148
- quiver-cli init --catalog github:acme/agent-catalog#v2 # branch or tag
220
+ quiver-cli init --catalog=github:acme/agent-catalog # .agents at repo root
221
+ quiver-cli init --catalog=github:acme/monorepo/tools/.agents # subdirectory
222
+ quiver-cli init --catalog=github:acme/agent-catalog#v2 # branch or tag
149
223
  ```
150
224
 
151
225
  The source is recorded in `quiver.lock` together with the **resolved commit
@@ -158,22 +232,29 @@ SHA** (`catalog.ref` / `catalog.resolved`):
158
232
 
159
233
  Catalogs are downloaded via the GitHub tarball API and cached under
160
234
  `~/.cache/quiver/catalogs/` (content-addressed by commit SHA, immutable).
235
+ `XDG_CACHE_HOME` is honoured if set.
161
236
 
162
- ### Private repos & `login`
237
+ ### Private repos & tokens
163
238
 
164
239
  For private catalog repos (and to lift API rate limits), provide a GitHub
165
- token. Resolution order: `GITHUB_TOKEN` → `GH_TOKEN` → the token stored by
166
- `quiver-cli login` → the `gh` CLI.
240
+ token. Resolution order: `GITHUB_TOKEN` → `GH_TOKEN` → the `gh` CLI.
241
+
242
+ **The cleanest way is the `gh` CLI** — no token to manage, just the familiar
243
+ browser-confirm flow:
244
+
245
+ ```bash
246
+ gh auth login # browser confirmation; quiver picks up the token automatically
247
+ ```
248
+
249
+ Once `gh` is authenticated, quiver uses its token automatically. For CI or
250
+ environments without `gh`, set `GITHUB_TOKEN` (or `GH_TOKEN`) instead:
167
251
 
168
252
  ```bash
169
- quiver-cli login # interactive: paste a PAT (masked)
170
- gh auth token | quiver-cli login # non-interactive: token from stdin
171
- quiver-cli logout # remove the stored token
253
+ GITHUB_TOKEN=ghp_… quiver-cli add mcp:context7
172
254
  ```
173
255
 
174
- `login` validates the token against the GitHub API and stores it in
175
- `~/.config/quiver/auth.json` (mode `0600`). The token needs read access to the
176
- catalog repo.
256
+ The token needs read access to the catalog repo. quiver never writes tokens to
257
+ generated configs or the lockfile.
177
258
 
178
259
  ## Secrets
179
260
 
@@ -186,8 +267,9 @@ the committed `config.toml`.
186
267
  ## Staying up to date
187
268
 
188
269
  quiver-cli checks npm for a newer release (at most once a day, cached under
189
- `~/.cache/quiver/`) and prints a one-line notice after a command when an update
190
- is available. `quiver-cli version` checks on demand. Update with:
270
+ `~/.cache/quiver/`, or `XDG_CACHE_HOME` if set) and prints a one-line notice
271
+ after a command when an update is available. `quiver-cli version` checks on
272
+ demand. Update with:
191
273
 
192
274
  ```bash
193
275
  pnpm add -g quiver-cli # or: npm i -g quiver-cli / yarn global add quiver-cli
@@ -1,2 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import "../dist/cli.js";
2
+ import { main } from "../dist/cli.js";
3
+
4
+ main();