quiver-cli 0.7.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.
- package/README.md +110 -45
- package/bin/quiver-cli.mjs +3 -1
- package/dist/cli.js +733 -499
- package/package.json +2 -2
- package/template/.agents/AGENTS.md +4 -3
- package/template/.agents/config.json +7 -0
- package/template/.agents/plugins/opencode/rtk.ts +34 -0
- package/template/.agents/skills/agent-browser/SKILL.md +1 -0
- package/template/.agents/skills/apps/skybridge/SKILL.md +4 -0
- package/template/.agents/skills/design/impeccable/SKILL.md +36 -118
- package/template/.agents/skills/design/impeccable/reference/adapt.md +1 -0
- package/template/.agents/skills/design/impeccable/reference/adapt.native.md +58 -0
- package/template/.agents/skills/design/impeccable/reference/android.md +40 -0
- package/template/.agents/skills/design/impeccable/reference/animate.md +73 -188
- package/template/.agents/skills/design/impeccable/reference/audit.md +12 -9
- package/template/.agents/skills/design/impeccable/reference/audit.native.md +139 -0
- package/template/.agents/skills/design/impeccable/reference/bolder.md +19 -101
- package/template/.agents/skills/design/impeccable/reference/clarify.md +59 -253
- package/template/.agents/skills/design/impeccable/reference/colorize.md +51 -222
- package/template/.agents/skills/design/impeccable/reference/craft-floor.md +42 -0
- package/template/.agents/skills/design/impeccable/reference/craft.md +3 -121
- package/template/.agents/skills/design/impeccable/reference/critique.md +44 -23
- package/template/.agents/skills/design/impeccable/reference/degraded/asset-producer.md +90 -0
- package/template/.agents/skills/design/impeccable/reference/degraded/documenter.md +24 -0
- package/template/.agents/skills/design/impeccable/reference/degraded/finish-reviewer.md +37 -0
- package/template/.agents/skills/design/impeccable/reference/degraded/manual-edit-applier.md +92 -0
- package/template/.agents/skills/design/impeccable/reference/delight.md +47 -279
- package/template/.agents/skills/design/impeccable/reference/distill.md +2 -2
- package/template/.agents/skills/design/impeccable/reference/doctor.md +53 -0
- package/template/.agents/skills/design/impeccable/reference/document.md +60 -73
- package/template/.agents/skills/design/impeccable/reference/harden.md +1 -12
- package/template/.agents/skills/design/impeccable/reference/hooks.md +20 -5
- package/template/.agents/skills/design/impeccable/reference/init.md +72 -119
- package/template/.agents/skills/design/impeccable/reference/ios.md +45 -0
- package/template/.agents/skills/design/impeccable/reference/layout.md +54 -131
- package/template/.agents/skills/design/impeccable/reference/live-setup.md +102 -0
- package/template/.agents/skills/design/impeccable/reference/live.md +116 -511
- package/template/.agents/skills/design/impeccable/reference/new-work.md +105 -0
- package/template/.agents/skills/design/impeccable/reference/{product.md → operate.md} +6 -5
- package/template/.agents/skills/design/impeccable/reference/optimize.md +4 -4
- package/template/.agents/skills/design/impeccable/reference/overdrive.md +1 -4
- package/template/.agents/skills/design/impeccable/reference/polish.md +68 -212
- package/template/.agents/skills/design/impeccable/reference/quieter.md +3 -3
- package/template/.agents/skills/design/impeccable/reference/routing.md +18 -0
- package/template/.agents/skills/design/impeccable/reference/shape.md +38 -144
- package/template/.agents/skills/design/impeccable/reference/typeset.md +51 -250
- package/template/.agents/skills/design/impeccable/reference/visualize.md +47 -0
- package/template/.agents/skills/design/impeccable/scripts/command-metadata.json +1 -1
- package/template/.agents/skills/design/impeccable/scripts/concept-seed.mjs +558 -0
- package/template/.agents/skills/design/impeccable/scripts/context-signals.mjs +119 -10
- package/template/.agents/skills/design/impeccable/scripts/context.mjs +534 -45
- package/template/.agents/skills/design/impeccable/scripts/critique-storage.mjs +18 -47
- package/template/.agents/skills/design/impeccable/scripts/detector/browser/injected/index.mjs +96 -10
- package/template/.agents/skills/design/impeccable/scripts/detector/cli/main.mjs +174 -26
- package/template/.agents/skills/design/impeccable/scripts/detector/design-system.mjs +233 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/detect-antipatterns-browser.js +3348 -203
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/browser/detect-url.mjs +102 -7
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/regex/detect-text.mjs +297 -97
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +187 -16
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/static-html/detect-html.mjs +41 -11
- package/template/.agents/skills/design/impeccable/scripts/detector/findings.mjs +7 -1
- package/template/.agents/skills/design/impeccable/scripts/detector/node/file-system.mjs +16 -2
- package/template/.agents/skills/design/impeccable/scripts/detector/registry/antipatterns.mjs +207 -38
- package/template/.agents/skills/design/impeccable/scripts/detector/rules/checks.mjs +3082 -173
- package/template/.agents/skills/design/impeccable/scripts/detector/shared/constants.mjs +11 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/shared/fonts.mjs +30 -0
- package/template/.agents/skills/design/impeccable/scripts/doctor.mjs +336 -0
- package/template/.agents/skills/design/impeccable/scripts/embed-prompt.mjs +133 -0
- package/template/.agents/skills/design/impeccable/scripts/generate-image.mjs +240 -0
- package/template/.agents/skills/design/impeccable/scripts/hook-admin.mjs +98 -18
- package/template/.agents/skills/design/impeccable/scripts/hook-before-edit.mjs +46 -6
- package/template/.agents/skills/design/impeccable/scripts/hook-lib.mjs +518 -50
- package/template/.agents/skills/design/impeccable/scripts/hook.mjs +25 -8
- package/template/.agents/skills/design/impeccable/scripts/lib/artifact-schema.mjs +93 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/composition-catalog.mjs +200 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/concept-catalog.mjs +357 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/impeccable-config.mjs +27 -7
- package/template/.agents/skills/design/impeccable/scripts/lib/impeccable-paths.mjs +17 -8
- package/template/.agents/skills/design/impeccable/scripts/lib/provider.mjs +5 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/roll-selection.mjs +362 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/staleness-deep.mjs +457 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/staleness-notice.mjs +169 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/staleness.mjs +457 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/surface-briefs.mjs +151 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/target-slug.mjs +33 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/template-extensions.mjs +146 -0
- package/template/.agents/skills/design/impeccable/scripts/live/accept-css.mjs +617 -0
- package/template/.agents/skills/design/impeccable/scripts/live/accept-verify.mjs +60 -0
- package/template/.agents/skills/design/impeccable/scripts/live/browser-script-parts.mjs +7 -1
- package/template/.agents/skills/design/impeccable/scripts/live/completion.mjs +10 -1
- package/template/.agents/skills/design/impeccable/scripts/live/event-validation.mjs +67 -5
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/astro.mjs +47 -0
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/detect-utils.mjs +73 -0
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/index.mjs +143 -0
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/journal.mjs +197 -0
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/nuxt.mjs +161 -0
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/script-src.mjs +17 -0
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
- package/template/.agents/skills/design/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
- package/template/.agents/skills/design/impeccable/scripts/live/generation-preflight.mjs +149 -0
- package/template/.agents/skills/design/impeccable/scripts/live/instructions.mjs +142 -0
- package/template/.agents/skills/design/impeccable/scripts/live/poll-lanes.mjs +14 -0
- package/template/.agents/skills/design/impeccable/scripts/live/roots.mjs +508 -0
- package/template/.agents/skills/design/impeccable/scripts/live/session-store.mjs +324 -50
- package/template/.agents/skills/design/impeccable/scripts/live/source-lock.mjs +105 -0
- package/template/.agents/skills/design/impeccable/scripts/live/source-search.mjs +105 -0
- package/template/.agents/skills/design/impeccable/scripts/live/svelte-ast.mjs +961 -0
- package/template/.agents/skills/design/impeccable/scripts/live/svelte-component.mjs +588 -72
- package/template/.agents/skills/design/impeccable/scripts/live/sveltekit-adapter.mjs +59 -17
- package/template/.agents/skills/design/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
- package/template/.agents/skills/design/impeccable/scripts/live/vocabulary.mjs +135 -0
- package/template/.agents/skills/design/impeccable/scripts/live-accept.mjs +210 -68
- package/template/.agents/skills/design/impeccable/scripts/live-browser.js +1562 -223
- package/template/.agents/skills/design/impeccable/scripts/live-commit-manual-edits.mjs +3 -0
- package/template/.agents/skills/design/impeccable/scripts/live-complete.mjs +33 -1
- package/template/.agents/skills/design/impeccable/scripts/live-inject.mjs +175 -255
- package/template/.agents/skills/design/impeccable/scripts/live-insert.mjs +26 -6
- package/template/.agents/skills/design/impeccable/scripts/live-manual-edit-evidence.mjs +6 -1
- package/template/.agents/skills/design/impeccable/scripts/live-poll.mjs +61 -16
- package/template/.agents/skills/design/impeccable/scripts/live-resume.mjs +39 -10
- package/template/.agents/skills/design/impeccable/scripts/live-server.mjs +573 -47
- package/template/.agents/skills/design/impeccable/scripts/live-status.mjs +17 -7
- package/template/.agents/skills/design/impeccable/scripts/live-wrap.mjs +124 -91
- package/template/.agents/skills/design/impeccable/scripts/live.mjs +88 -26
- package/template/.agents/skills/design/impeccable/scripts/palette.mjs +76 -81
- package/template/.agents/skills/design/impeccable/scripts/pin.mjs +18 -11
- package/template/.agents/skills/design/impeccable/scripts/serve-question.mjs +932 -0
- package/template/.agents/skills/design/impeccable/scripts/surface-brief.mjs +74 -0
- package/template/.agents/skills/design/shadcn/SKILL.md +46 -11
- package/template/.agents/skills/design/shadcn/cli.md +49 -16
- package/template/.agents/skills/design/shadcn/customization.md +14 -7
- package/template/.agents/skills/design/shadcn/evals/evals.json +30 -0
- package/template/.agents/skills/design/shadcn/mcp.md +27 -16
- package/template/.agents/skills/design/shadcn/registry.md +277 -0
- package/template/.agents/skills/design/shadcn/rules/chat.md +224 -0
- package/template/.agents/skills/design/shadcn/rules/composition.md +20 -2
- package/template/.agents/skills/design/shadcn/rules/styling.md +23 -0
- package/template/.agents/skills/find-skills/SKILL.md +2 -3
- package/template/.agents/skills/hono/SKILL.md +579 -0
- package/template/.agents/skills/integrations/langfuse/SKILL.md +10 -6
- package/template/.agents/skills/integrations/langfuse/references/ci-cd.md +41 -0
- package/template/.agents/skills/integrations/langfuse/references/cli.md +8 -0
- package/template/.agents/skills/integrations/langfuse/references/error-analysis.md +15 -27
- package/template/.agents/skills/integrations/langfuse/references/instrumentation.md +39 -52
- package/template/.agents/skills/integrations/langfuse/references/judge-calibration.md +5 -2
- package/template/.agents/skills/integrations/langfuse/references/prompt-engineering.md +35 -0
- package/template/.agents/skills/integrations/langfuse/references/prompt-migration.md +41 -196
- package/template/.agents/skills/integrations/langfuse/references/skill-feedback.md +3 -0
- package/template/.agents/skills/integrations/langfuse/references/trace-evaluator-upgrade.md +76 -0
- package/template/.agents/skills/integrations/langfuse/references/user-feedback.md +4 -0
- package/template/.agents/skills/integrations/langfuse/references/v4-project-migration.md +73 -0
- package/template/.agents/skills/supabase/CHANGELOG.md +71 -0
- package/template/.agents/skills/supabase/SKILL.md +145 -0
- package/template/.agents/skills/supabase/assets/feedback-issue-template.md +17 -0
- package/template/.agents/skills/supabase/references/skill-feedback.md +17 -0
- package/template/.agents/skills/supabase-postgres-best-practices/CHANGELOG.md +73 -0
- package/template/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/_sections.md +39 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/_template.md +34 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
- package/template/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
- package/template/.agents/upstreams.json +34 -12
- package/template/.agents/skills/design/impeccable/reference/brand.md +0 -108
- package/template/.agents/skills/design/impeccable/reference/codex.md +0 -105
- package/template/.agents/skills/design/impeccable/reference/interaction-design.md +0 -189
- 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
|
|
4
|
-
central catalog into any repo — as **native configs** for
|
|
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** — `.
|
|
12
|
-
|
|
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,
|
|
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
|
|
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
|
|
53
|
-
| `quiver-cli
|
|
54
|
-
| `quiver-cli check` | Detect drift
|
|
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
|
-
(
|
|
64
|
-
configs
|
|
65
|
-
`--
|
|
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
|
|
70
|
-
| -------- |
|
|
71
|
-
| Skills | `.
|
|
72
|
-
| Commands | `.
|
|
73
|
-
| MCP |
|
|
74
|
-
|
|
|
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.
|
|
78
|
-
|
|
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
|
|
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 `
|
|
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
|
|
117
|
-
repo, where the catalog is the read-only installed package
|
|
118
|
-
it aborts with guidance; use `quiver-cli check` /
|
|
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
|
|
147
|
-
quiver-cli init --catalog
|
|
148
|
-
quiver-cli init --catalog
|
|
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 &
|
|
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
|
|
166
|
-
|
|
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
|
|
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
|
-
|
|
175
|
-
|
|
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
|
|
190
|
-
is available. `quiver-cli version` checks on
|
|
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
|
package/bin/quiver-cli.mjs
CHANGED