quiver-cli 0.3.0 → 0.5.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/dist/cli.js CHANGED
@@ -1393,7 +1393,7 @@ var init_select = __esm({
1393
1393
  "use strict";
1394
1394
  init_prompts();
1395
1395
  DEFAULT_SKILLS = ["find-skills", "skill-creator"];
1396
- DEFAULT_COMMANDS = ["cp"];
1396
+ DEFAULT_COMMANDS = ["cp", "review"];
1397
1397
  skillHint = (fm) => {
1398
1398
  const parts = [];
1399
1399
  if (fm.version) parts.push(`v${fm.version}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quiver-cli",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Compose a selected subset of skills, commands & MCP servers from a central catalog into any repo as native configs for opencode, Claude Code and Codex - with lockfile-based drift awareness.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,40 +1,27 @@
1
1
  ---
2
2
  description: Commit and push all current changes using Conventional Commits
3
+ subtask: true
3
4
  ---
4
5
 
5
- You are a git commit assistant. Your job is to stage all changes, create well-formed Conventional Commit messages, and push to the remote.
6
+ You are a git commit assistant. Your job is to stage changes, create well-formed Conventional Commit messages, and push to the remote.
6
7
 
7
- ## Steps
8
-
9
- ### 1. Inspect Changes
10
-
11
- Run these commands to understand the current state:
12
-
13
- ```bash
14
- git status
15
- git diff --stat
16
- ```
17
-
18
- If there are no changes (nothing to commit), respond with "Nothing to commit." and stop.
8
+ ## Context
19
9
 
20
- ### 2. Prisma Migration Check
10
+ Status:
11
+ !`git status`
21
12
 
22
- If `prisma/schema.prisma` appears in the changed files, verify that migration files also exist in the changeset:
13
+ Summary:
14
+ !`git diff --stat`
23
15
 
24
- ```bash
25
- SCHEMA_CHANGED=$(git diff --name-only HEAD -- prisma/schema.prisma)
26
- MIGRATION_CHANGED=$(git diff --name-only HEAD -- prisma/migrations/)
27
- ```
16
+ ## Steps
28
17
 
29
- If `SCHEMA_CHANGED` is non-empty but `MIGRATION_CHANGED` is empty, a migration is missing. Create one:
18
+ ### 1. Inspect Changes
30
19
 
31
- 1. Run `pnpm run db:migrate` and provide a descriptive migration name when prompted.
32
- 2. After the migration is created, verify it exists in `prisma/migrations/`.
33
- 3. The new migration files will be included in the commit automatically (via `git add -A`).
20
+ Review the status and summary above to understand the current state.
34
21
 
35
- If both are non-empty or schema is unchanged, proceed normally.
22
+ If there are no changes (nothing to commit), respond with "Nothing to commit." and stop.
36
23
 
37
- ### 3. Analyze Changes
24
+ ### 2. Analyze Changes
38
25
 
39
26
  Review the diff to understand what changed:
40
27
 
@@ -42,13 +29,13 @@ Review the diff to understand what changed:
42
29
  git diff HEAD
43
30
  ```
44
31
 
45
- ### 4. Split Commits if Necessary
32
+ ### 3. Split Commits if Necessary
46
33
 
47
34
  If changes are **unrelated** (e.g., a bug fix and a new feature), split them into separate commits. Each commit must represent **one logical change**.
48
35
 
49
- To split: stage files selectively with `git add <file>`, commit, then repeat.
36
+ To split: stage the relevant files selectively with `git add <file>`, commit, then repeat for the next logical change.
50
37
 
51
- ### 5. Select Commit Type
38
+ ### 4. Select Commit Type
52
39
 
53
40
  Choose the most accurate type:
54
41
 
@@ -64,7 +51,7 @@ Choose the most accurate type:
64
51
  | `chore` | Tooling, config, deps |
65
52
  | `ci` | CI/CD only |
66
53
 
67
- ### 6. Compose Commit Message
54
+ ### 5. Compose Commit Message
68
55
 
69
56
  Format: `<type>(<scope>): <subject>`
70
57
 
@@ -88,17 +75,21 @@ Format: `<type>(<scope>): <subject>`
88
75
 
89
76
  **Forbidden subjects:** `update`, `wip`, `changes`, `fix stuff`, `misc`
90
77
 
91
- ### 7. Execute
78
+ ### 6. Execute
79
+
80
+ Stage only the files belonging to the current logical change — never use `git add -A`:
92
81
 
93
82
  ```bash
94
- git add -A
83
+ git add <file1> <file2> ...
95
84
  git commit -m "<message>"
96
- git push -u origin HEAD
97
85
  ```
98
86
 
99
- If splitting commits, repeat the add/commit cycle per logical change, then push once at the end.
87
+ If splitting commits, repeat the add/commit cycle per logical change. Push once at the end:
88
+
89
+ - If the current branch has no upstream, set it: `git push -u origin HEAD`
90
+ - Otherwise: `git push`
100
91
 
101
- ### 8. Report
92
+ ### 7. Report
102
93
 
103
94
  After pushing, show a summary:
104
95
 
@@ -110,6 +101,7 @@ Pushed to <branch>:
110
101
 
111
102
  ## Rules
112
103
 
104
+ - Stage selectively per logical change; NEVER use `git add -A`.
113
105
  - NEVER amend existing commits.
114
106
  - NEVER force push.
115
107
  - NEVER create empty commits.
@@ -0,0 +1,68 @@
1
+ ---
2
+ description: Review uncommitted changes for bugs, security and quality issues (read-only)
3
+ subtask: true
4
+ ---
5
+
6
+ You are a code reviewer. Review the changes below and report issues. You do NOT edit, stage, or commit — review only.
7
+
8
+ ## Context
9
+
10
+ Status:
11
+ !`git status`
12
+
13
+ Staged diff:
14
+ !`git diff --staged`
15
+
16
+ Unstaged diff:
17
+ !`git diff`
18
+
19
+ ## Steps
20
+
21
+ ### 1. Determine Scope
22
+
23
+ If there are no changes in either diff above, respond with "Nothing to review." and stop.
24
+
25
+ Otherwise, skim the changed files to understand what changed and why.
26
+
27
+ ### 2. Review
28
+
29
+ Assess the changed lines against the criteria below. Judge only the lines that were actually added or modified, not the surrounding untouched code.
30
+
31
+ **General**
32
+
33
+ - Obvious bugs or incorrect logic.
34
+ - Missing error handling or swallowed errors.
35
+ - Security: secrets committed in code, injection, unvalidated input.
36
+ - Dead or commented-out code, leftover debug logging (`console.log`).
37
+ - Missing tests where they are clearly warranted.
38
+ - Unclear names or overly broad visibility.
39
+
40
+ **TypeScript / Next.js**
41
+
42
+ - `any` or unsafe casts instead of `unknown` + narrowing.
43
+ - Server/client boundary: server secrets or `server-only` logic leaking into client components; `"use client"` set correctly; no `NEXT_PUBLIC_` exposure of secrets.
44
+ - `async`/`await` in Server Components with proper error and loading handling.
45
+ - Input validation at API route / server action boundaries (e.g. Zod).
46
+ - Re-render or dependency-array correctness (only when visible in the diff).
47
+
48
+ ### 3. Report
49
+
50
+ Output the result in this format:
51
+
52
+ ```
53
+ ## Review
54
+
55
+ Verdict: OK | Changes recommended | Blocking issues
56
+
57
+ ### Findings
58
+ - [blocker|warning|nit] file.ts:42 — description + suggested fix
59
+ ```
60
+
61
+ If there are no findings, write "No issues found." under the verdict.
62
+
63
+ ## Rules
64
+
65
+ - Read-only: NEVER edit, stage, or commit files.
66
+ - Judge only the changed lines, not unrelated surrounding code.
67
+ - Always reference findings with `file:line`.
68
+ - Skip formatting nits already covered by Prettier/ESLint.
@@ -3,18 +3,29 @@
3
3
  "devCommand": "pnpm run dev"
4
4
  },
5
5
  "mcpServers": {
6
- "playwright": {
6
+ "context7": {
7
+ "transport": "http",
8
+ "url": "https://mcp.context7.com/mcp"
9
+ },
10
+ "excalidraw": {
7
11
  "transport": "stdio",
8
12
  "command": "npx",
9
- "args": ["-y", "@playwright/mcp@latest", "--isolated"]
13
+ "args": ["-y", "excalidraw-mcp"]
14
+ },
15
+ "langfuse": {
16
+ "transport": "http",
17
+ "url": "https://cloud.langfuse.com/api/public/mcp",
18
+ "headers": {
19
+ "Authorization": "Basic ${LANGFUSE_MCP_TOKEN}"
20
+ }
10
21
  },
11
22
  "langfuse-docs": {
12
23
  "transport": "http",
13
24
  "url": "https://langfuse.com/api/mcp"
14
25
  },
15
- "context7": {
26
+ "linear": {
16
27
  "transport": "http",
17
- "url": "https://mcp.context7.com/mcp"
28
+ "url": "https://mcp.linear.app/mcp"
18
29
  },
19
30
  "neon": {
20
31
  "transport": "http",
@@ -23,24 +34,26 @@
23
34
  "Authorization": "Bearer ${NEON_API_KEY}"
24
35
  }
25
36
  },
26
- "vercel": {
27
- "transport": "http",
28
- "url": "https://mcp.vercel.com"
29
- },
30
37
  "notion": {
31
38
  "transport": "http",
32
39
  "url": "https://mcp.notion.com/mcp"
33
40
  },
41
+ "playwright": {
42
+ "transport": "stdio",
43
+ "command": "npx",
44
+ "args": ["-y", "@playwright/mcp@latest", "--isolated"]
45
+ },
34
46
  "posthog": {
35
47
  "transport": "http",
36
48
  "url": "https://mcp.posthog.com/mcp"
37
49
  },
38
- "langfuse": {
50
+ "sentry": {
39
51
  "transport": "http",
40
- "url": "https://cloud.langfuse.com/api/public/mcp",
41
- "headers": {
42
- "Authorization": "Basic ${LANGFUSE_MCP_TOKEN}"
43
- }
52
+ "url": "https://mcp.sentry.dev/mcp"
53
+ },
54
+ "vercel": {
55
+ "transport": "http",
56
+ "url": "https://mcp.vercel.com"
44
57
  }
45
58
  },
46
59
  "claude": {