quiver-cli 0.8.0 → 1.0.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 +110 -45
  2. package/bin/quiver-cli.mjs +3 -1
  3. package/dist/cli.js +546 -458
  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,95 @@ 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`)|
50
53
  | `quiver-cli update [id]` | Pull newer catalog content into `.agents/` (all or one entry) |
51
54
  | `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) |
55
+ | `quiver-cli providers` | Change which tools get configs (`opencode`, `claude`, `codex`) |
56
+ | `quiver-cli list` | Show skills, commands, plugins + MCP tool counts (alias: `ls`) |
57
+ | `quiver-cli check` | Detect drift: skill digests, provider shims, MCP tool snapshots |
55
58
  | `quiver-cli upstream` | Check source repos for skill updates (catalog maintenance) |
56
59
  | `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
60
  | `quiver-cli help` | Show help |
60
61
  | `quiver-cli version` | Show the version + any available update (`-v`, `--version`) |
61
62
 
62
63
  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`).
64
+ (check/upstream/list/update), `--providers=opencode,claude` (set the generated
65
+ configs for `init`, `sync` and `providers`), `--catalog=<source>` (catalog
66
+ source for `init` and `upstream`), `--offline` (skip MCP re-introspection
67
+ during `check`), `-V/--verbose` (full tool lists and description diffs in
68
+ `check`), `--accept` (record the current MCP tool snapshots as the new
69
+ baseline in `check`), `--introspect-stdio` (allow running stdio MCP servers
70
+ during `check`).
71
+
72
+ Value flags are written with `=` (`--providers=opencode,claude`,
73
+ `--catalog=github:acme/catalog`); the space-separated form is not supported.
74
+ `quiver-cli providers` also accepts the list as a positional
75
+ (`quiver-cli providers opencode,claude`) and falls back to an interactive
76
+ multiselect pre-filled with the current selection.
66
77
 
67
78
  ## What gets generated
68
79
 
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) |
80
+ | Artifact | opencode | Claude Code | Codex |
81
+ | -------- | --------------------------- | --------------------------- | ---------------------------- |
82
+ | Skills | `.opencode/skills/*` (link) | `.claude/skills/*` (link) | native from `.agents/skills` |
83
+ | Commands | `.opencode/commands/*` | `.claude/commands/*` (link) | (not supported yet) |
84
+ | MCP | `opencode.json` | `.mcp.json` | `.codex/config.toml` |
85
+ | Settings | `.opencode/tui.json` | `.claude/settings.json` | |
86
+ | Plugins | `.opencode/plugins/*` | — | — |
87
+ | Guide | `AGENTS.md` (link) | `CLAUDE.md` (link) | `AGENTS.md` (native) |
75
88
 
76
89
  `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.
90
+ when the catalog ships one); `CLAUDE.md` links to it. Both are written
91
+ independently of the provider selection. Codex reads skills and `AGENTS.md`
92
+ natively from the repo, so no shims are emitted for those.
79
93
 
80
94
  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
95
+ you use (or pass `--providers=opencode,claude`); the choice is stored in
82
96
  `quiver.lock`, and deselected tools have their generated files cleaned up on
83
97
  `sync`.
84
98
 
99
+ Besides `mcpServers` and `plugins`, `.agents/config.json` carries provider
100
+ overlays that are copied into the generated configs:
101
+
102
+ | Key | Effect |
103
+ | ---------- | ----------------------------------------------------------------- |
104
+ | `opencode` | Merged with the selected MCP servers into `opencode.json` |
105
+ | `tui` | Emitted as `.opencode/tui.json` |
106
+ | `claude` | `claude.settings` is written verbatim to `.claude/settings.json` |
107
+ | `shared` | Free-form values carried through into the repo's `config.json` |
108
+
109
+ Selected local plugins are copied under `.agents/plugins/opencode/` and linked
110
+ into OpenCode's plugin discovery directory.
111
+
112
+ MCP `${VAR}` placeholders are emitted as OpenCode-native `{env:VAR}` references,
113
+ so generated `opencode.json` files never contain resolved secret values.
114
+
115
+ The bundled catalog includes the official RTK OpenCode adapter. Install RTK
116
+ separately, then enable the adapter per repository:
117
+
118
+ ```bash
119
+ quiver-cli add plugin:rtk
120
+ quiver-cli check # also verifies that the rtk binary is on PATH
121
+ ```
122
+
85
123
  ## The lockfile
86
124
 
87
125
  `quiver.lock` records, per entry: source path, content digest, and — for MCP
88
126
  servers — a **tool snapshot** (`{ description, inputSchemaHash }` per tool).
89
- This is the basis for `status`, `sync` and `check`.
127
+ This is the basis for `sync` and `check`.
90
128
 
91
129
  ## `check` — drift awareness
92
130
 
131
+ `check` is the single drift command. It compares four things:
132
+
93
133
  - **Skills/commands**: compares the stored digest against the current `.agents/`
94
134
  content.
135
+ - **Provider shims**: verifies the generated `.opencode/`, `.claude/`, `.codex/`
136
+ configs match the lockfile (missing, stale or out-of-sync files) → fix with
137
+ `quiver-cli sync`.
138
+ - **Plugin requirements**: warns when an installed plugin needs a binary that is
139
+ not on `PATH` (e.g. `rtk`).
95
140
  - **MCP servers** (the real lever): re-introspects `tools/list` and diffs against
96
141
  the snapshot → new/removed tools, changed input schemas, and — security
97
142
  critical — **changed tool descriptions** (defends against tool-description
@@ -102,6 +147,18 @@ diff against it. Servers that fail introspection (e.g. requiring interactive
102
147
  OAuth) are reported as skipped. stdio servers run foreign code and are only
103
148
  introspected with `--introspect-stdio`.
104
149
 
150
+ Pass `--offline` to skip MCP re-introspection entirely and check only digests
151
+ and provider shims — no network, no foreign code, useful for a fast local
152
+ sanity check.
153
+
154
+ Once a reported MCP change has been reviewed and is legitimate, record it as the
155
+ new baseline:
156
+
157
+ ```bash
158
+ quiver-cli check -V # full tool lists and description before/after
159
+ quiver-cli check --accept # adopt the current snapshots
160
+ ```
161
+
105
162
  `quiver-cli check --json` is CI-friendly (exit 1 on drift).
106
163
 
107
164
  ## `upstream` — source updates
@@ -113,10 +170,10 @@ imported into the catalog?**
113
170
 
114
171
  Because it records baselines (and `pull` rewrites skill copies) **in the catalog
115
172
  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.
173
+ against a writable local checkout via `--catalog=local:/absolute/path/.agents`.
174
+ Run from a consuming repo, where the catalog is the read-only installed package
175
+ (or a remote cache), it aborts with guidance; use `quiver-cli check` /
176
+ `quiver-cli update` there instead.
120
177
 
121
178
  Origins live in `template/.agents/upstreams.json` (`repo`, `path`, `ref` per
122
179
  skill). `quiver-cli upstream` queries the GitHub Commits API for the latest
@@ -143,9 +200,9 @@ By default `init` uses the catalog bundled with the package. Teams can host
143
200
  their own catalog in a GitHub repo and point `init` at it:
144
201
 
145
202
  ```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
203
+ quiver-cli init --catalog=github:acme/agent-catalog # .agents at repo root
204
+ quiver-cli init --catalog=github:acme/monorepo/tools/.agents # subdirectory
205
+ quiver-cli init --catalog=github:acme/agent-catalog#v2 # branch or tag
149
206
  ```
150
207
 
151
208
  The source is recorded in `quiver.lock` together with the **resolved commit
@@ -158,22 +215,29 @@ SHA** (`catalog.ref` / `catalog.resolved`):
158
215
 
159
216
  Catalogs are downloaded via the GitHub tarball API and cached under
160
217
  `~/.cache/quiver/catalogs/` (content-addressed by commit SHA, immutable).
218
+ `XDG_CACHE_HOME` is honoured if set.
161
219
 
162
- ### Private repos & `login`
220
+ ### Private repos & tokens
163
221
 
164
222
  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.
223
+ token. Resolution order: `GITHUB_TOKEN` → `GH_TOKEN` → the `gh` CLI.
224
+
225
+ **The cleanest way is the `gh` CLI** — no token to manage, just the familiar
226
+ browser-confirm flow:
227
+
228
+ ```bash
229
+ gh auth login # browser confirmation; quiver picks up the token automatically
230
+ ```
231
+
232
+ Once `gh` is authenticated, quiver uses its token automatically. For CI or
233
+ environments without `gh`, set `GITHUB_TOKEN` (or `GH_TOKEN`) instead:
167
234
 
168
235
  ```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
236
+ GITHUB_TOKEN=ghp_… quiver-cli add mcp:context7
172
237
  ```
173
238
 
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.
239
+ The token needs read access to the catalog repo. quiver never writes tokens to
240
+ generated configs or the lockfile.
177
241
 
178
242
  ## Secrets
179
243
 
@@ -186,8 +250,9 @@ the committed `config.toml`.
186
250
  ## Staying up to date
187
251
 
188
252
  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:
253
+ `~/.cache/quiver/`, or `XDG_CACHE_HOME` if set) and prints a one-line notice
254
+ after a command when an update is available. `quiver-cli version` checks on
255
+ demand. Update with:
191
256
 
192
257
  ```bash
193
258
  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();