prjct-cli 3.46.0 → 3.47.1

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.
@@ -1,32 +0,0 @@
1
- # Strategic reviewer rubric — `audit-spec`
2
-
3
- You are reviewing a `prjct` spec for strategic soundness. You receive the spec body verbatim. Apply the questions below; return a single structured verdict.
4
-
5
- ## Questions to ask
6
-
7
- 1. **Is the goal real?** Does this solve a problem the user (or org) actually has? Or is it a tools-team-flavored solution looking for a problem?
8
- 2. **Is the goal worth the cost?** Crude estimate of build cost vs. impact. If goal is small but cost is large, fail.
9
- 3. **Is `out_of_scope` coherent with `goal`?** Goal that says "fix onboarding" with `out_of_scope: ["welcome email", "first-login flow"]` — what's left? Fail if scope evaporates the goal.
10
- 4. **Is the spec OVER-scoped?** Trying to ship a quarter's work in one PR. Boil-the-lake principle says completeness is cheap when it costs minutes — fail when it costs months.
11
- 5. **Is the spec UNDER-scoped?** Acceptance criteria so narrow that shipping doesn't move the needle. Fail when meeting all criteria still leaves the user's problem unsolved.
12
- 6. **Are stakes honest?** "Users will be frustrated" is too vague. "Auth fails for 3% of sessions during peak load" is testable.
13
-
14
- ## Output format
15
-
16
- ```
17
- verdict: pass | fail
18
- notes: 2–4 sentences. If pass, name the strongest framing element. If fail, name the SINGLE
19
- biggest gap and how to close it.
20
- ```
21
-
22
- ## Examples
23
-
24
- **Pass:** "Goal is concrete (sub-200ms p95 on dashboard) and the stakes are measurable (lost engagement on slow widgets). Scope and out_of_scope draw a clean line. The strongest element is the explicit 'no caching layer in this PR' — that's the right anti-creep."
25
-
26
- **Fail:** "Goal says 'improve auth UX' but acceptance_criteria all measure backend latency. Either rewrite the goal (this is a perf spec, not UX) or rewrite the criteria (add a usability metric). Currently the spec would pass review on a perf change that didn't move UX at all."
27
-
28
- ## Anti-patterns to refuse
29
-
30
- - Praising the spec without naming a strength (`pass: looks good!` — useless).
31
- - Failing without proposing a fix (the next iteration of the spec needs a path forward).
32
- - Auto-failing because the spec is "ambitious" — strategic review measures soundness, not size.
@@ -1,97 +0,0 @@
1
- # Spec template — `prjct spec`
2
-
3
- A spec frames a piece of work BEFORE implementation. Cheap to write, cheap to revise; un-doing implementation isn't.
4
-
5
- The fields below match `core/types/spec.ts`. Validation is enforced by Zod at write time.
6
-
7
- ---
8
-
9
- ## Title (one line)
10
-
11
- What you'd say to a coworker walking by your desk.
12
-
13
- ## Goal (1–3 sentences)
14
-
15
- What success looks like. Concrete. Observable.
16
-
17
- ## ELI10 (2–4 sentences)
18
-
19
- Plain English a 16-year-old could follow. Forces you to articulate why this matters without jargon.
20
-
21
- ## Stakes if we ship the wrong thing (1 sentence)
22
-
23
- What breaks. Who notices. How fast.
24
-
25
- ## Acceptance criteria (testable, observable list)
26
-
27
- Each line is a sentence ending in a verifiable claim:
28
-
29
- - the new endpoint returns 429 after the 11th request in a minute from the same IP
30
- - the dashboard widget renders within 200ms p95 on a synthetic 4G profile
31
- - `prjct spec audit <id>` blocks if any reviewer returns `fail`
32
-
33
- Anti-patterns:
34
-
35
- - "the system should be fast" — what threshold, measured how?
36
- - "users will love it" — not testable
37
- - "follow industry best practices" — what specifically?
38
-
39
- ## Scope (what's IN)
40
-
41
- The pieces this spec commits to. Be specific about file paths, surfaces, modules.
42
-
43
- ## Out of scope (what's OUT)
44
-
45
- The pieces this spec explicitly DOES NOT cover. This is your anti-creep shield mid-implementation.
46
-
47
- ## Risks
48
-
49
- Each risk has a mitigation. A risk without a mitigation is just a complaint.
50
-
51
- - **risk:** legacy endpoints rely on the same rate-limit middleware → **mitigation:** scope key separates `/auth` from `/api`
52
- - **risk:** Redis dependency raises ops cost → **mitigation:** start with in-memory token bucket; swap to Redis only above 5 RPS
53
-
54
- ## Test plan
55
-
56
- How you'll prove the acceptance criteria. Includes the unhappy path.
57
-
58
- - unit tests for the token bucket math
59
- - integration test: 11 requests, 11th returns 429
60
- - load test: 100 RPS sustained for 60s, no memory growth
61
- - manual: trigger via `curl` and inspect response headers
62
-
63
- ## Notes (optional)
64
-
65
- Things that don't fit anywhere else but matter for context.
66
-
67
- ---
68
-
69
- ## Lifecycle
70
-
71
- ```
72
- draft → reviewed → in_progress → shipped
73
- → archived
74
- ```
75
-
76
- - `draft` — created, not yet audited.
77
- - `reviewed` — `prjct audit-spec` returned pass on all three reviewers.
78
- - `in_progress` — at least one task with `linked_spec_id` exists.
79
- - `shipped` — code merged, criteria met (or override accepted).
80
- - `archived` — superseded or abandoned.
81
-
82
- ## Verb cheatsheet
83
-
84
- ```
85
- prjct spec "<title>" # draft — NO `draft` subverb, pass title directly
86
- prjct spec list [--status <s>]
87
- prjct spec show <id>
88
- prjct spec update <id> --json '{...}' # PATCH content (shallow merge)
89
- prjct spec audit <id> # emit subagent dispatch
90
- prjct spec record-review <id> --reviewer <name> --verdict <pass|fail> --notes "..."
91
- prjct spec link-task <id> --task-id <task>
92
- prjct spec ship <id> [--pr <n>]
93
- prjct spec set-status <id> --status archived
94
- prjct spec inventory [--md|--json] # coverage map per module
95
- ```
96
-
97
- > **No `draft` subverb.** `prjct spec "<title>"` already creates a draft. The CLI tolerates `prjct spec draft|new|create "<title>"` as friendly aliases (the leading word is stripped) so `prjct spec draft "rate limiting"` and `prjct spec "rate limiting"` produce the same spec — but the canonical form has no leading verb.
File without changes
File without changes
File without changes