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.
- package/README.md +24 -7
- package/dist/api/server.js +5825 -4464
- package/dist/dashboard/assets/{EquationComponent-CmNRbeKS.js → EquationComponent-B_Rqmz8I.js} +1 -1
- package/dist/dashboard/assets/index-i1qsMsQQ.js +391 -0
- package/dist/dashboard/index.html +1 -1
- package/dist/index.js +26224 -7416
- package/dist/services/runtime.js +6042 -5234
- package/drizzle/0001_quick_prowler.sql +2 -0
- package/drizzle/0002_closed_tyrannus.sql +2 -0
- package/drizzle/0003_heavy_scrambler.sql +1 -0
- package/drizzle/meta/0001_snapshot.json +1410 -0
- package/drizzle/meta/0002_snapshot.json +1423 -0
- package/drizzle/meta/0003_snapshot.json +1416 -0
- package/drizzle/meta/_journal.json +21 -0
- package/package.json +11 -5
- package/skills/create-proposal/SKILL.md +3 -3
- package/skills/create-ticket/SKILL.md +1 -1
- package/skills/create-tickets-for-proposal/SKILL.md +2 -2
- package/skills/implement-ticket/SKILL.md +6 -7
- package/skills/review-proposal/SKILL.md +3 -3
- package/templates/create-proposal/cookbook-template.md +1 -1
- package/templates/create-proposal/proposal-template.md +1 -1
- package/templates/create-tasks/task-template.md +1 -1
- package/templates/create-ticket/ticket-template.md +1 -1
- package/templates/review-proposal/q&a-template.md +1 -1
- package/templates/review-proposal/review-me-template.md +1 -1
- package/dist/dashboard/assets/index-C5ndFDi9.js +0 -391
|
@@ -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.
|
|
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
|
|
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-
|
|
23
|
-
"
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
17
|
-
- If
|
|
18
|
-
- If
|
|
19
|
-
-
|
|
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
|
|
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
|
|
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 `
|
|
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
|
|
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
|
|
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.
|