schub 0.1.21 → 0.1.23

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.
@@ -8,6 +8,27 @@
8
8
  "when": 1770925849551,
9
9
  "tag": "0000_salty_champions",
10
10
  "breakpoints": true
11
+ },
12
+ {
13
+ "idx": 1,
14
+ "version": "6",
15
+ "when": 1770989495517,
16
+ "tag": "0001_quick_prowler",
17
+ "breakpoints": true
18
+ },
19
+ {
20
+ "idx": 2,
21
+ "version": "6",
22
+ "when": 1771408222359,
23
+ "tag": "0002_closed_tyrannus",
24
+ "breakpoints": true
25
+ },
26
+ {
27
+ "idx": 3,
28
+ "version": "6",
29
+ "when": 1771410443593,
30
+ "tag": "0003_heavy_scrambler",
31
+ "breakpoints": true
11
32
  }
12
33
  ]
13
34
  }
package/package.json CHANGED
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "name": "schub",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
4
4
  "type": "module",
5
+ "imports": {
6
+ "#services": "./src/services.ts"
7
+ },
5
8
  "bin": {
6
9
  "schub": "./dist/index.js"
7
10
  },
@@ -17,10 +20,11 @@
17
20
  "prepublishOnly": "bun run build:bundle",
18
21
  "build": "bun build ./src/index.ts --outfile dist/index.js --target node --banner \"#!/usr/bin/env node\"",
19
22
  "build:bundle": "bun run build && bun run build:services && bun run build:dashboard && bun run build:api",
20
- "build:services": "bun build ../../packages/schub-services/src/index.ts --outfile dist/services/runtime.js --target node --external better-sqlite3",
23
+ "build:services": "bun build ./src/services.ts --outfile dist/services/runtime.js --target node --external better-sqlite3",
21
24
  "build:dashboard": "bun run --cwd ../../dashboard build && rm -rf dist/dashboard && cp -r ../../dashboard/dist dist/dashboard",
22
- "build:api": "bun build ../../packages/schub-api/src/server.ts --outfile dist/api/server.js --target node --external better-sqlite3 && rm -rf drizzle && cp -r ../../packages/schub-services/drizzle drizzle",
23
- "lint": "bunx @biomejs/biome lint .",
25
+ "build:api": "bun build ../../packages/schub-api/src/server.ts --outfile dist/api/server.js --target node --external better-sqlite3 && rm -rf drizzle && cp -r ../../packages/schub-db/drizzle drizzle",
26
+ "typecheck": "bunx tsc --noEmit",
27
+ "lint": "bun run typecheck && bunx @biomejs/biome lint .",
24
28
  "format": "bunx @biomejs/biome format --write .",
25
29
  "test": "bun test"
26
30
  },
@@ -40,7 +44,9 @@
40
44
  "yargs": "^18.0.0"
41
45
  },
42
46
  "devDependencies": {
43
- "@pstdio/schub-services": "workspace:*",
47
+ "@pstdio/schub-agents": "workspace:*",
48
+ "@pstdio/schub-db": "workspace:*",
49
+ "@pstdio/schub-storage": "workspace:*",
44
50
  "@types/bun": "latest",
45
51
  "@types/marked-terminal": "^6.0.0",
46
52
  "@types/node": "^24.3.0",
@@ -12,17 +12,17 @@ $ARGUMENTS
12
12
  ## Workflow
13
13
 
14
14
  1. Derive a concise, verb-led `title` from the request (kebab-case: `add-`, `update-`, `remove-`, `refactor-`, `fix-`).
15
- 2. Run `npx schub proposals create --title "<title>" --input "<user prompt verbatim>"` to scaffold the proposal template.
15
+ 2. Run `npx schub proposals write --title "<title>" --input "<user prompt verbatim>"` to scaffold the proposal template.
16
16
  - Treat the scaffolded file as temporary while drafting the proposal.
17
17
  - Supported flags: `--title`, `--input`, `--overwrite`.
18
18
  3. Capture the generated proposal-id from the command output or the created path under `.schub/proposals/<proposal-id>/`.
19
19
  4. Update the generated proposal with concrete, testable statements.
20
20
  5. Identify the touch points throughout the project and track them in the proposal.
21
21
  6. Track missing information with [MISSING INFORMATION] tags in the proposal.
22
- 7. (OPTIONAL) If the change affects a public surface, e.g. an api / sdk / cli. Run `npx schub cookbook create --proposal-id "<proposal-id>"` to scaffold `cookbook.md`.
22
+ 7. (OPTIONAL) If the change affects a public surface, e.g. an api / sdk / cli. Run `npx schub templates create --name "cookbook" --proposal-id "<proposal-id>"` to scaffold `cookbook.md`.
23
23
  8. (OPTIONAL) If implementing the change requires knowledge of an api / db schema etc. encode this in a `contracts.md` or `schemas.md` files.
24
24
  9. (OPTIONAL) For complex tickets requiring deep understanding of the system, track relevant additional information in `research.md`.
25
- 10. (OPTIONAL) For decisions with lasting architectural impact or important tradeoffs, run `npx schub adr create --proposal-id "<proposal-id>" --title "<title>"`.
25
+ 10. (OPTIONAL) For decisions with lasting architectural impact or important tradeoffs, run `npx schub templates create --name "adr" --proposal-id "<proposal-id>" --title "<title>"`.
26
26
  11. Run `npx schub proposals save --proposal-id "<proposal-id>"` to persist the final proposal and related files under `.schub/proposals/<proposal-id>/` (proposal, cookbook, schemas, contracts, research, adr).
27
27
 
28
28
  ## Output Locations
@@ -15,7 +15,7 @@ $ARGUMENTS
15
15
  - If the user explicitly asked to create a ticket, set status to `backlog`.
16
16
  - Otherwise set status to `wip`.
17
17
  2. Derive a concise, verb-led ticket title from the user request and immediately run the schub CLI to create the ticket.
18
- - Run `npx schub tickets create --title "<ticket title>" --input "<user prompt verbatim>" --status "<status>"`.
18
+ - Run `npx schub tickets write --title "<ticket title>" --input "<user prompt verbatim>" --status "<status>"`.
19
19
  - If the ticket maps to a proposal, include `--proposal-id "<shorthand>"`.
20
20
  3. Fill the ticket template with concrete details:
21
21
  - Priority (P1/P2/P3)
@@ -12,7 +12,7 @@ $ARGUMENTS
12
12
  ## Workflow
13
13
 
14
14
  1. Load the proposal files locally (they may not exist yet):
15
- - Run `npx schub proposals load --proposal-id "<shorthand>"`.
15
+ - Run `npx schub proposals pull --proposal-id "<shorthand>"`.
16
16
  2. Confirm `.schub/proposals/<proposal-id>/proposal.md` exists and that it is marked accepted. If it is missing, ask the user to run the create-proposal skill first. If it is still a draft, ask the user to review it first.
17
17
  3. Read the proposal and other files in the `<proposal-id>` folder.
18
18
  4. Derive tickets, each ticket should be:
@@ -24,7 +24,7 @@ $ARGUMENTS
24
24
  - Include `Acceptance` criteria with explicit tests (file paths, cases covered) and exact commands to run.
25
25
  - Include corresponding documentation updates.
26
26
  5. Create tickets via the CLI (one command per ticket).
27
- - Run `npx schub tickets create --title "<ticket title>" --proposal-id "<shorthand>" --status "<status>"`.
27
+ - Run `npx schub tickets write --title "<ticket title>" --proposal-id "<shorthand>" --status "<status>"`.
28
28
  6. Fill the ticket template with concrete details:
29
29
  - Priority (P1/P2/P3)
30
30
  - Parallelizable (yes/no)
@@ -13,11 +13,10 @@ $ARGUMENTS
13
13
 
14
14
  ## Workflow
15
15
 
16
- 1. (Optional) If the ticket description is missing, load it:
17
- - If unclear or missing, ask for **one**: ticket id (kebab-case), or `next`.
18
- - If `next` / `continue`: run `npx schub tickets list --status ready --json`, then pick the first ticket by id order.
19
- - Otherwise run `npx schub tickets pull --id <shorthand>`.
20
- - If none found, ask the user to confirm the ticket id.
16
+ 1. (Optional) If no ticket description is provided:
17
+ - If `next` / `continue`: run `npx schub tickets list --status ready --json`, then pull the first ticket by id.
18
+ - If valid id: run `npx schub tickets pull --id <shorthand>`.
19
+ - If the ticket is missing, ask the user to confirm the ticket id or `next`.
21
20
  2. Update the ticket status
22
21
  - When starting work, run: `npx schub tickets update --id "<ticket-id>" --status wip`.
23
22
  - If blocked: run `npx schub tickets update --id "<ticket-id>" --status blocked --blocked-reason <reason>` and stop the workflow.
@@ -47,14 +46,14 @@ $ARGUMENTS
47
46
  - If tests/commands can’t be run, record why in `## Evidence`.
48
47
  6. Finish
49
48
  - Confirm everything in `## Steps` and `## Acceptance` is checked.
50
- - If the ticket is not completed due to errors, run `npx schub tickets update --id "<ticket-id>" --status blocked --blocked-reason <reason>`, then run `npx schub ticket save --id "<ticket-id>"`.
49
+ - If the ticket is not completed due to errors, run `npx schub tickets update --id "<ticket-id>" --status blocked --blocked-reason <reason>`, then run `npx schub tickets save --id "<ticket-id>"`.
51
50
  - If the ticket is completed, run `npx schub tickets update --id "<ticket-id>" --status in_review`.
52
51
  - Commit the implementation changes before handing off, including ticket updates and evidence references.
53
52
  - Report completed files and artifacts.
54
53
 
55
54
  ## Validation
56
55
 
57
- To be considered complete and ready for review, a ticket should provide Validation Artifacts. Validation Artifacts are **verifiable outputs** produced while doing the ticket e.g. by running `some_command &> some-logs.txt`
56
+ To be considered complete and ready for review, a ticket should provide Validation Artifacts. Validation Artifacts are **verifiable outputs** produced while doing the ticket e.g. by running `<validation-command> > validation.log 2>&1`
58
57
 
59
58
  Agents should dump and review artifacts, including:
60
59
 
@@ -3,7 +3,7 @@ name: review-proposal
3
3
  description: "Run a review session for a proposal by creating a list of open questions, updating the proposal, adding a Q&A section, and deleting REVIEW_ME.md on completion. Use when asked to review proposals."
4
4
  ---
5
5
 
6
- ## User Input (proposal-id or shorthand `C####`)
6
+ ## User Input (proposal-id or shorthand `P####`)
7
7
 
8
8
  ```text
9
9
  $ARGUMENTS
@@ -12,10 +12,10 @@ $ARGUMENTS
12
12
  ## Workflow
13
13
 
14
14
  1. Load the proposal files locally (they may not exist yet):
15
- - Run `npx schub proposals load --proposal-id "<shorthand>"`.
15
+ - Run `npx schub proposals pull --proposal-id "<shorthand>"`.
16
16
  2. Confirm `.schub/proposals/<proposal-id>/proposal.md` exists. If it is missing, ask the user to run the create-proposal skill first. If it is still a draft, ask the user to review it first.
17
17
  3. Review the proposal by checking the [MISSING INFORMATION] tags and the potential issues listed.
18
- 4. If there are issues, or missing information, run `npx schub review create --proposal-id "<proposal-id>"` to scaffold `.schub/proposals/<proposal-id>/REVIEW_ME.md`.
18
+ 4. If there are issues, or missing information, run `npx schub templates create --name "review" --proposal-id "<proposal-id>"` to scaffold `.schub/proposals/<proposal-id>/REVIEW_ME.md`.
19
19
  5. Triage each item:
20
20
  - **High-stakes** (scope, risks, dependencies, security, performance): create a bullet point item in the review checklist.
21
21
  - **Minute details** (naming, copy, formatting, low-impact defaults): make a decision update the proposal and mark as an assumption in the proposal.
@@ -1,5 +1,5 @@
1
1
  ---
2
- change_id: "{{CHANGE_ID}}"
2
+ proposal_id: "{{PROPOSAL_ID}}"
3
3
  created: "{{DATE}}"
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- change_id: "{{CHANGE_ID}}"
2
+ proposal_id: "{{PROPOSAL_ID}}"
3
3
  created: "{{DATE}}"
4
4
  status: Draft
5
5
  input: "{{INPUT}}"
@@ -1,5 +1,5 @@
1
1
  ---
2
- change_id: "{{CHANGE_ID}}"
2
+ proposal_id: "{{PROPOSAL_ID}}"
3
3
  priority: "[P1|P2|P3]"
4
4
  depends_on: []
5
5
  parallelizable: "[no|yes]"
@@ -3,7 +3,7 @@ ticket_id: "{{TICKET_ID}}"
3
3
  created: "{{DATE}}"
4
4
  status: "{{STATUS}}"
5
5
  input: "{{INPUT}}"
6
- change_id: "{{CHANGE_ID}}"
6
+ proposal_id: "{{PROPOSAL_ID}}"
7
7
  priority: "[P1|P2|P3]"
8
8
  complexity: "[low|medium|high]"
9
9
  depends_on: []
@@ -1,5 +1,5 @@
1
1
  ---
2
- change_id: "{{CHANGE_ID}}"
2
+ proposal_id: "{{PROPOSAL_ID}}"
3
3
  created: "{{DATE}}"
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- change_id: "{{CHANGE_ID}}"
2
+ proposal_id: "{{PROPOSAL_ID}}"
3
3
  created: "{{DATE}}"
4
4
  ---
5
5