@hechura/noreaster-cli 0.2.1 → 0.2.2
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.
|
@@ -12,6 +12,10 @@ exports.TEMPLATE_DOC_TYPES = [
|
|
|
12
12
|
"design_system",
|
|
13
13
|
"implementation_plan",
|
|
14
14
|
"prd",
|
|
15
|
+
"technical_design",
|
|
16
|
+
"feature_summary",
|
|
17
|
+
"sprint_plan",
|
|
18
|
+
"executive_summary",
|
|
15
19
|
];
|
|
16
20
|
const AI_WRITING_HINT = `<!-- Writing for AI tools:
|
|
17
21
|
- Be explicit with exact values ("max file size: 10MB", not "reasonable").
|
|
@@ -299,6 +303,139 @@ ${AI_WRITING_HINT}
|
|
|
299
303
|
|
|
300
304
|
## Feature List
|
|
301
305
|
|
|
306
|
+
-
|
|
307
|
+
`;
|
|
308
|
+
const TECHNICAL_DESIGN_TEMPLATE = `# Technical Design
|
|
309
|
+
|
|
310
|
+
${AI_WRITING_HINT}
|
|
311
|
+
|
|
312
|
+
## Technical Context
|
|
313
|
+
|
|
314
|
+
<!-- Co-authored with engineering. -->
|
|
315
|
+
|
|
316
|
+
## Affected Areas
|
|
317
|
+
|
|
318
|
+
<!-- One subsection per project area. -->
|
|
319
|
+
|
|
320
|
+
### Frontend
|
|
321
|
+
|
|
322
|
+
- Services & APIs Affected:
|
|
323
|
+
- Changes needed:
|
|
324
|
+
|
|
325
|
+
### Backend
|
|
326
|
+
|
|
327
|
+
- Services & APIs Affected:
|
|
328
|
+
- Changes needed:
|
|
329
|
+
|
|
330
|
+
## API Contract
|
|
331
|
+
|
|
332
|
+
\`\`\`
|
|
333
|
+
POST /api/v1/[resource]
|
|
334
|
+
Request:
|
|
335
|
+
{
|
|
336
|
+
"field": "type — description"
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
Response (200):
|
|
340
|
+
{
|
|
341
|
+
"field": "type — description"
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
Response (400):
|
|
345
|
+
{
|
|
346
|
+
"error": "VALIDATION_ERROR",
|
|
347
|
+
"message": "Human-readable description"
|
|
348
|
+
}
|
|
349
|
+
\`\`\`
|
|
350
|
+
|
|
351
|
+
## Data Model Changes
|
|
352
|
+
|
|
353
|
+
\`\`\`
|
|
354
|
+
Table: [table_name]
|
|
355
|
+
+ new_column (type, constraints)
|
|
356
|
+
~ modified_column (old_type → new_type)
|
|
357
|
+
\`\`\`
|
|
358
|
+
|
|
359
|
+
## Edge Cases & Error Handling
|
|
360
|
+
|
|
361
|
+
| # | Scenario | Expected Behavior | Error Message (if applicable) |
|
|
362
|
+
|---|----------|-------------------|-------------------------------|
|
|
363
|
+
| 1 | | | |
|
|
364
|
+
|
|
365
|
+
## Dependencies & Risks
|
|
366
|
+
|
|
367
|
+
-
|
|
368
|
+
|
|
369
|
+
## Open Questions
|
|
370
|
+
|
|
371
|
+
- [ ]
|
|
372
|
+
|
|
373
|
+
## Decision Log
|
|
374
|
+
|
|
375
|
+
| Date | Decision | Rationale | Decided By |
|
|
376
|
+
|------|----------|-----------|------------|
|
|
377
|
+
| | | | |
|
|
378
|
+
`;
|
|
379
|
+
const FEATURE_SUMMARY_TEMPLATE = `# Feature Summary
|
|
380
|
+
|
|
381
|
+
${AI_WRITING_HINT}
|
|
382
|
+
|
|
383
|
+
## Problem
|
|
384
|
+
|
|
385
|
+
## Outcome
|
|
386
|
+
|
|
387
|
+
## In Scope
|
|
388
|
+
|
|
389
|
+
-
|
|
390
|
+
|
|
391
|
+
## Out of Scope
|
|
392
|
+
|
|
393
|
+
-
|
|
394
|
+
|
|
395
|
+
## Key Decisions
|
|
396
|
+
|
|
397
|
+
-
|
|
398
|
+
`;
|
|
399
|
+
const SPRINT_PLAN_TEMPLATE = `# Sprint Plan
|
|
400
|
+
|
|
401
|
+
${AI_WRITING_HINT}
|
|
402
|
+
|
|
403
|
+
## Sprint Goal
|
|
404
|
+
|
|
405
|
+
## Scope
|
|
406
|
+
|
|
407
|
+
-
|
|
408
|
+
|
|
409
|
+
## Deliverables
|
|
410
|
+
|
|
411
|
+
| Item | Owner | Done when |
|
|
412
|
+
|------|-------|-----------|
|
|
413
|
+
| | | |
|
|
414
|
+
|
|
415
|
+
## Risks & Dependencies
|
|
416
|
+
|
|
417
|
+
-
|
|
418
|
+
|
|
419
|
+
## Notes
|
|
420
|
+
|
|
421
|
+
-
|
|
422
|
+
`;
|
|
423
|
+
const EXECUTIVE_SUMMARY_TEMPLATE = `# Executive Summary
|
|
424
|
+
|
|
425
|
+
${AI_WRITING_HINT}
|
|
426
|
+
|
|
427
|
+
## Situation
|
|
428
|
+
|
|
429
|
+
## Recommendation
|
|
430
|
+
|
|
431
|
+
## Status
|
|
432
|
+
|
|
433
|
+
## Decisions Needed
|
|
434
|
+
|
|
435
|
+
-
|
|
436
|
+
|
|
437
|
+
## Next Steps
|
|
438
|
+
|
|
302
439
|
-
|
|
303
440
|
`;
|
|
304
441
|
const TEMPLATES = {
|
|
@@ -309,6 +446,10 @@ const TEMPLATES = {
|
|
|
309
446
|
design_system: DESIGN_SYSTEM_TEMPLATE,
|
|
310
447
|
implementation_plan: IMPLEMENTATION_PLAN_TEMPLATE,
|
|
311
448
|
prd: PRD_TEMPLATE,
|
|
449
|
+
technical_design: TECHNICAL_DESIGN_TEMPLATE,
|
|
450
|
+
feature_summary: FEATURE_SUMMARY_TEMPLATE,
|
|
451
|
+
sprint_plan: SPRINT_PLAN_TEMPLATE,
|
|
452
|
+
executive_summary: EXECUTIVE_SUMMARY_TEMPLATE,
|
|
312
453
|
};
|
|
313
454
|
function isTemplateDocType(value) {
|
|
314
455
|
return value != null && exports.TEMPLATE_DOC_TYPES.includes(value);
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@ Use this skill for operational work in Noreaster through the official agent CLI
|
|
|
10
10
|
## Execution Defaults
|
|
11
11
|
|
|
12
12
|
1. Prefer the published CLI:
|
|
13
|
-
- `npx @hechura/noreaster-cli@0.2.
|
|
13
|
+
- `npx @hechura/noreaster-cli@0.2.2 <command>` or `noreaster <command>` after global install (`npm install -g @hechura/noreaster-cli@0.2.2`)
|
|
14
14
|
- In this repo: `npm run agent -- <command>`
|
|
15
15
|
2. Default API base URL:
|
|
16
16
|
- `https://noreaster.vercel.app`
|
|
@@ -30,17 +30,22 @@ PRD → Feature → Feature PRD (feature_description) → Feature Spec (design_s
|
|
|
30
30
|
→ Work Items → Implementation Plan docs → GitHub PRs
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
###
|
|
33
|
+
### The source-of-truth document set
|
|
34
34
|
|
|
35
|
-
UI labels are for humans; CLI/API payloads use `doc_type` values:
|
|
35
|
+
Project documents are the versioned source of truth for how a project is built. Read the relevant docs before doing work; treat their contents as binding unless a human approves a change. UI labels are for humans; CLI/API payloads use `doc_type` values:
|
|
36
36
|
|
|
37
|
-
| UI label | `doc_type` |
|
|
38
|
-
| --- | --- |
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
| Technical
|
|
42
|
-
| Design System | `design_system` |
|
|
43
|
-
|
|
|
37
|
+
| UI label | `doc_type` | Purpose — how agents use it |
|
|
38
|
+
| --- | --- | --- |
|
|
39
|
+
| PRD | `prd` | Product requirements: problem, goals, personas, feature list. Governs *what* to build and why. |
|
|
40
|
+
| Architecture | `architecture` | System overview: services, data flows, infrastructure. Governs *where* code lives and how systems connect. |
|
|
41
|
+
| Technical Design | `technical_design` | Project-level technical design: affected areas, API contracts, data model, edge cases. Governs implementation shape. |
|
|
42
|
+
| Design System | `design_system` | UI system: tokens, typography, components, a11y rules. All UI work must conform to it. |
|
|
43
|
+
| Feature Summary | `feature_summary` | Concise feature overview: problem, outcome, in/out of scope. Orients agents before deeper docs. |
|
|
44
|
+
| Sprint Plan | `sprint_plan` | Sprint goal, scope, deliverables, risks. Governs what belongs in the current sprint. |
|
|
45
|
+
| Executive Summary | `executive_summary` | Stakeholder-facing status and decisions. Read for context; humans own the framing. |
|
|
46
|
+
| General Context | `general_context` | Background context for the project or engagement. Read early; useful constraints often live here. |
|
|
47
|
+
| Feature PRD | `feature_description` | Feature-scoped requirements (feature-linked, not a Core Document). |
|
|
48
|
+
| Feature Spec | `design_spec` | Feature-scoped technical design (feature-linked, not a Core Document). |
|
|
44
49
|
|
|
45
50
|
Do not invent types like `feature_prd`. Use the `doc_type` column in create/update payloads and `docs template <docType>`.
|
|
46
51
|
|
|
@@ -50,7 +55,7 @@ Ownership defaults:
|
|
|
50
55
|
- Feature Spec: engineering-owned
|
|
51
56
|
- Work-item breakdowns: submitted by external agents as draft runs; humans review/apply
|
|
52
57
|
- Implementation plans: authored by a developer's agent, linked to a work item
|
|
53
|
-
- PRs: linked manually or via inbound webhook matching `
|
|
58
|
+
- PRs: linked manually or via inbound webhook matching `{ticket_prefix}-<n>` (e.g. `AIM-12`)
|
|
54
59
|
|
|
55
60
|
## Lifecycle Gates
|
|
56
61
|
|
|
@@ -74,6 +79,8 @@ Before implementing a work item, load the governing docs — do not invent contr
|
|
|
74
79
|
3. Load project foundation docs:
|
|
75
80
|
- `docs list --project-id <id> --type architecture`
|
|
76
81
|
- `docs list --project-id <id> --type design_system`
|
|
82
|
+
- `docs list --project-id <id> --type technical_design`
|
|
83
|
+
- `docs list --project-id <id> --type general_context` (constraints and background often live here)
|
|
77
84
|
4. If an ADR governs the change, read it (`--type adr`) before contradicting prior decisions.
|
|
78
85
|
|
|
79
86
|
Compliance rules while coding:
|
|
@@ -87,7 +94,24 @@ Compliance rules while coding:
|
|
|
87
94
|
On completion:
|
|
88
95
|
|
|
89
96
|
- Record deviations under the design/implementation notes **Deviations from Spec** section
|
|
90
|
-
- Link the PR with `
|
|
97
|
+
- Link the PR with `{ticket_prefix}-<n>` in the branch name or title (`tasks pr-link` if needed)
|
|
98
|
+
|
|
99
|
+
## Recording decisions in the source of truth
|
|
100
|
+
|
|
101
|
+
The document set only works as a source of truth if decisions land in it explicitly. Agents may update project documents, but every decision made during work must be recorded — never applied silently in code alone.
|
|
102
|
+
|
|
103
|
+
Rules:
|
|
104
|
+
|
|
105
|
+
- Every content update writes a new revision. Always pass `change_summary` stating what changed and why:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
noreaster docs update <id> --data '{"content":"...","change_summary":"Recorded decision: switched session storage to Redis (perf, NOR-42)"}'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
- Architectural decisions (technology choices, service boundaries, data model direction) go in a new ADR (`doc_type: "adr"`), not buried in an edit. Then update the affected `architecture` / `technical_design` doc to reflect it, with a `change_summary` referencing the ADR.
|
|
112
|
+
- Implementation decisions that deviate from or refine an approved doc: update the governing doc's **Decision Log** / **Deviations from Spec** section with date, decision, rationale, and who decided — plus a `change_summary`.
|
|
113
|
+
- Never rewrite history: use `docs revisions <id>` to inspect prior versions; corrections are new revisions, not silent replacements.
|
|
114
|
+
- Approved docs are gated: content edits to an `approved` doc still record revisions, but status changes go through review (`reviews request` → human approval). If your change invalidates an approval, say so and request re-review rather than working around it.
|
|
91
115
|
|
|
92
116
|
## Work Discovery
|
|
93
117
|
|
|
@@ -114,9 +138,9 @@ Do not invent silent auto-apply behavior.
|
|
|
114
138
|
|
|
115
139
|
## NOR Short IDs and PR Linking
|
|
116
140
|
|
|
117
|
-
- Work items have
|
|
118
|
-
- Branch convention: `
|
|
119
|
-
- Put `
|
|
141
|
+
- Work items have per-project short IDs rendered as `{ticket_prefix}-<n>` (starting at 1 per project)
|
|
142
|
+
- Branch convention: `{prefix}-<n>-<kebab-title>` (e.g. `aim-12-fix-login`)
|
|
143
|
+
- Put `{ticket_prefix}-<n>` in the branch name or PR title so the webhook can auto-link
|
|
120
144
|
- Manual link: `tasks pr-link <id> --url <github-pr-url>`
|
|
121
145
|
- Unlink: `tasks pr-unlink <id> --url <github-pr-url>`
|
|
122
146
|
- PR merge never silently moves work-item status; humans accept "PR merged — move to done?"
|
|
@@ -201,7 +225,7 @@ Empty `content` on create is seeded from the template for that `doc_type`.
|
|
|
201
225
|
## Quick Command Examples
|
|
202
226
|
|
|
203
227
|
```bash
|
|
204
|
-
npm install -g @hechura/noreaster-cli@0.2.
|
|
228
|
+
npm install -g @hechura/noreaster-cli@0.2.2
|
|
205
229
|
noreaster skill install
|
|
206
230
|
noreaster my-work
|
|
207
231
|
noreaster features list --project-id <project-id>
|