nubos-pilot 0.1.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/agents/np-ai-researcher.md +140 -0
- package/agents/np-code-fixer.md +363 -0
- package/agents/np-code-reviewer.md +351 -0
- package/agents/np-domain-researcher.md +136 -0
- package/agents/np-eval-auditor.md +167 -0
- package/agents/np-eval-planner.md +153 -0
- package/agents/np-executor.md +72 -0
- package/agents/np-framework-selector.md +171 -0
- package/agents/np-nyquist-auditor.md +185 -0
- package/agents/np-plan-checker.md +165 -0
- package/agents/np-planner.md +199 -0
- package/agents/np-researcher.md +150 -0
- package/agents/np-security-auditor.md +206 -0
- package/agents/np-ui-auditor.md +369 -0
- package/agents/np-ui-checker.md +192 -0
- package/agents/np-ui-researcher.md +324 -0
- package/agents/np-verifier.md +79 -0
- package/bin/check-coverage.cjs +40 -0
- package/bin/check-workflows.cjs +171 -0
- package/bin/check-workflows.test.cjs +208 -0
- package/bin/install.js +500 -0
- package/bin/np-tools/_commands.cjs +70 -0
- package/bin/np-tools/add-tests.cjs +171 -0
- package/bin/np-tools/add-tests.test.cjs +122 -0
- package/bin/np-tools/add-todo.cjs +108 -0
- package/bin/np-tools/add-todo.test.cjs +112 -0
- package/bin/np-tools/agent-skills.cjs +14 -0
- package/bin/np-tools/agent-skills.test.cjs +42 -0
- package/bin/np-tools/ai-integration-phase.cjs +109 -0
- package/bin/np-tools/ai-integration-phase.test.cjs +123 -0
- package/bin/np-tools/askuser.cjs +53 -0
- package/bin/np-tools/askuser.test.cjs +49 -0
- package/bin/np-tools/autonomous.cjs +69 -0
- package/bin/np-tools/autonomous.test.cjs +74 -0
- package/bin/np-tools/checkpoint.cjs +101 -0
- package/bin/np-tools/checkpoint.test.cjs +119 -0
- package/bin/np-tools/code-review.cjs +133 -0
- package/bin/np-tools/code-review.test.cjs +96 -0
- package/bin/np-tools/commit-task.cjs +120 -0
- package/bin/np-tools/commit-task.test.cjs +160 -0
- package/bin/np-tools/commit.cjs +103 -0
- package/bin/np-tools/commit.test.cjs +93 -0
- package/bin/np-tools/config.cjs +101 -0
- package/bin/np-tools/config.test.cjs +71 -0
- package/bin/np-tools/discuss-phase-power.cjs +265 -0
- package/bin/np-tools/discuss-phase-power.test.cjs +242 -0
- package/bin/np-tools/discuss-phase.cjs +132 -0
- package/bin/np-tools/discuss-phase.test.cjs +148 -0
- package/bin/np-tools/dispatch.cjs +116 -0
- package/bin/np-tools/doctor.cjs +242 -0
- package/bin/np-tools/eval-review.cjs +116 -0
- package/bin/np-tools/eval-review.test.cjs +123 -0
- package/bin/np-tools/execute-phase.cjs +182 -0
- package/bin/np-tools/execute-phase.test.cjs +116 -0
- package/bin/np-tools/execute-plan.cjs +124 -0
- package/bin/np-tools/execute-plan.test.cjs +82 -0
- package/bin/np-tools/help.cjs +28 -0
- package/bin/np-tools/help.test.cjs +29 -0
- package/bin/np-tools/init-dispatch.test.cjs +91 -0
- package/bin/np-tools/metrics.cjs +97 -0
- package/bin/np-tools/metrics.test.cjs +188 -0
- package/bin/np-tools/new-milestone.cjs +288 -0
- package/bin/np-tools/new-milestone.test.cjs +166 -0
- package/bin/np-tools/new-project.cjs +284 -0
- package/bin/np-tools/new-project.test.cjs +165 -0
- package/bin/np-tools/next.cjs +7 -0
- package/bin/np-tools/next.test.cjs +30 -0
- package/bin/np-tools/park.cjs +48 -0
- package/bin/np-tools/park.test.cjs +50 -0
- package/bin/np-tools/pause-work.cjs +24 -0
- package/bin/np-tools/pause-work.test.cjs +74 -0
- package/bin/np-tools/phase.cjs +71 -0
- package/bin/np-tools/phase.test.cjs +81 -0
- package/bin/np-tools/plan-diff.cjs +57 -0
- package/bin/np-tools/plan-diff.test.cjs +134 -0
- package/bin/np-tools/plan-milestone-gaps.cjs +115 -0
- package/bin/np-tools/plan-milestone-gaps.test.cjs +122 -0
- package/bin/np-tools/plan-phase.cjs +350 -0
- package/bin/np-tools/plan-phase.test.cjs +263 -0
- package/bin/np-tools/progress.cjs +7 -0
- package/bin/np-tools/progress.test.cjs +44 -0
- package/bin/np-tools/queue.cjs +213 -0
- package/bin/np-tools/research-phase.cjs +144 -0
- package/bin/np-tools/research-phase.test.cjs +154 -0
- package/bin/np-tools/reset-slice.cjs +17 -0
- package/bin/np-tools/reset-slice.test.cjs +96 -0
- package/bin/np-tools/resolve-model.cjs +110 -0
- package/bin/np-tools/resolve-model.test.cjs +200 -0
- package/bin/np-tools/resume-work.cjs +76 -0
- package/bin/np-tools/resume-work.test.cjs +91 -0
- package/bin/np-tools/skip.cjs +48 -0
- package/bin/np-tools/skip.test.cjs +66 -0
- package/bin/np-tools/slug.cjs +34 -0
- package/bin/np-tools/slug.test.cjs +46 -0
- package/bin/np-tools/state.cjs +16 -0
- package/bin/np-tools/state.test.cjs +40 -0
- package/bin/np-tools/stats.cjs +151 -0
- package/bin/np-tools/stats.test.cjs +118 -0
- package/bin/np-tools/triage.cjs +128 -0
- package/bin/np-tools/ui-phase.cjs +108 -0
- package/bin/np-tools/ui-phase.test.cjs +121 -0
- package/bin/np-tools/ui-review.cjs +108 -0
- package/bin/np-tools/ui-review.test.cjs +120 -0
- package/bin/np-tools/undo-task.cjs +31 -0
- package/bin/np-tools/undo-task.test.cjs +117 -0
- package/bin/np-tools/undo.cjs +43 -0
- package/bin/np-tools/undo.test.cjs +120 -0
- package/bin/np-tools/unpark.cjs +48 -0
- package/bin/np-tools/unpark.test.cjs +50 -0
- package/bin/np-tools/verify-work.cjs +186 -0
- package/bin/np-tools/verify-work.test.cjs +97 -0
- package/docs/adr/0001-no-daemon-invariant.md +82 -0
- package/docs/adr/0002-zero-runtime-dependencies.md +90 -0
- package/docs/adr/0003-max-six-unit-types.md +85 -0
- package/docs/adr/0004-atomic-commit-per-unit.md +102 -0
- package/docs/adr/0005-three-orthogonal-file-trees.md +98 -0
- package/docs/adr/0006-yaml-dependency-amendment.md +60 -0
- package/docs/adr/README.md +27 -0
- package/docs/agent-frontmatter-schema.md +84 -0
- package/docs/phase-artifact-schemas.md +292 -0
- package/docs/phase-directory-layout.md +82 -0
- package/lib/__tests__/README.md +1 -0
- package/lib/agents.cjs +98 -0
- package/lib/agents.test.cjs +286 -0
- package/lib/askuser.cjs +36 -0
- package/lib/askuser.test.cjs +310 -0
- package/lib/checkpoint.cjs +135 -0
- package/lib/checkpoint.test.cjs +184 -0
- package/lib/core.cjs +165 -0
- package/lib/core.test.cjs +405 -0
- package/lib/fixtures/README.md +1 -0
- package/lib/fixtures/phase-tree/README.md +1 -0
- package/lib/fixtures/plans/cycle/PLAN.md +16 -0
- package/lib/fixtures/plans/cycle/tasks/T-01.md +20 -0
- package/lib/fixtures/plans/cycle/tasks/T-02.md +20 -0
- package/lib/fixtures/plans/cycle/tasks/T-03.md +20 -0
- package/lib/fixtures/plans/linear/PLAN.md +16 -0
- package/lib/fixtures/plans/linear/tasks/T-01.md +20 -0
- package/lib/fixtures/plans/linear/tasks/T-02.md +20 -0
- package/lib/fixtures/plans/linear/tasks/T-03.md +20 -0
- package/lib/fixtures/plans/parallel/PLAN.md +16 -0
- package/lib/fixtures/plans/parallel/tasks/T-01.md +20 -0
- package/lib/fixtures/plans/parallel/tasks/T-02.md +20 -0
- package/lib/fixtures/plans/parallel/tasks/T-03.md +20 -0
- package/lib/fixtures/plans/wave-conflict/PLAN.md +16 -0
- package/lib/fixtures/plans/wave-conflict/tasks/T-01.md +20 -0
- package/lib/fixtures/plans/wave-conflict/tasks/T-02.md +20 -0
- package/lib/fixtures/roadmap/ROADMAP-malformed.md +3 -0
- package/lib/fixtures/roadmap/ROADMAP-minimal.md +51 -0
- package/lib/fixtures/roadmap/roadmap-malformed.yaml +7 -0
- package/lib/fixtures/roadmap/roadmap-minimal.yaml +40 -0
- package/lib/fixtures/roadmap/roadmap-ten-phases.yaml +101 -0
- package/lib/fixtures/templates/phase-context.md +6 -0
- package/lib/fixtures/templates/plan-skeleton.md +6 -0
- package/lib/frontmatter.cjs +251 -0
- package/lib/frontmatter.test.cjs +177 -0
- package/lib/gaps.cjs +197 -0
- package/lib/gaps.test.cjs +200 -0
- package/lib/git.cjs +207 -0
- package/lib/git.test.cjs +305 -0
- package/lib/install/agents-md.cjs +77 -0
- package/lib/install/backup.cjs +70 -0
- package/lib/install/codex-toml.cjs +440 -0
- package/lib/install/managed-block.cjs +30 -0
- package/lib/install/manifest.cjs +148 -0
- package/lib/install/mcp-writer.cjs +127 -0
- package/lib/install/runtime-detect.cjs +44 -0
- package/lib/install/staging.cjs +149 -0
- package/lib/metrics-aggregate.cjs +229 -0
- package/lib/metrics-aggregate.test.cjs +192 -0
- package/lib/metrics.cjs +120 -0
- package/lib/metrics.test.cjs +182 -0
- package/lib/model-aliases.regression.test.cjs +16 -0
- package/lib/model-profiles.cjs +42 -0
- package/lib/model-profiles.test.cjs +61 -0
- package/lib/next.cjs +236 -0
- package/lib/next.test.cjs +194 -0
- package/lib/phase.cjs +95 -0
- package/lib/phase.test.cjs +189 -0
- package/lib/plan-checker-contract.test.cjs +72 -0
- package/lib/plan-diff.cjs +173 -0
- package/lib/plan-diff.test.cjs +217 -0
- package/lib/plan.cjs +85 -0
- package/lib/plan.test.cjs +263 -0
- package/lib/progress.cjs +95 -0
- package/lib/progress.test.cjs +116 -0
- package/lib/researcher-contract.test.cjs +61 -0
- package/lib/roadmap-render.cjs +206 -0
- package/lib/roadmap-render.test.cjs +121 -0
- package/lib/roadmap.cjs +416 -0
- package/lib/roadmap.test.cjs +371 -0
- package/lib/runtime/_contract.test.cjs +61 -0
- package/lib/runtime/_readline.cjs +119 -0
- package/lib/runtime/_readline.test.cjs +126 -0
- package/lib/runtime/claude.cjs +48 -0
- package/lib/runtime/claude.test.cjs +101 -0
- package/lib/runtime/codex.cjs +35 -0
- package/lib/runtime/codex.test.cjs +114 -0
- package/lib/runtime/gemini.cjs +35 -0
- package/lib/runtime/gemini.test.cjs +109 -0
- package/lib/runtime/index.cjs +49 -0
- package/lib/runtime/index.test.cjs +181 -0
- package/lib/runtime/opencode.cjs +35 -0
- package/lib/runtime/opencode.test.cjs +124 -0
- package/lib/state.cjs +205 -0
- package/lib/state.test.cjs +264 -0
- package/lib/surface-audit.test.cjs +46 -0
- package/lib/tasks.cjs +327 -0
- package/lib/tasks.test.cjs +389 -0
- package/lib/template.cjs +66 -0
- package/lib/template.test.cjs +159 -0
- package/lib/undo.cjs +179 -0
- package/lib/undo.test.cjs +261 -0
- package/lib/verify.cjs +116 -0
- package/lib/verify.test.cjs +187 -0
- package/np-tools.cjs +303 -0
- package/package.json +39 -0
- package/templates/AI-SPEC.md +90 -0
- package/templates/CONTEXT.md +32 -0
- package/templates/PLAN.md +69 -0
- package/templates/PROJECT.md +60 -0
- package/templates/REQUIREMENTS.md +38 -0
- package/templates/SECURITY.md +61 -0
- package/templates/UI-SPEC.md +64 -0
- package/templates/VALIDATION.md +76 -0
- package/templates/claude/payload/README.md +11 -0
- package/templates/opencode/opencode.json +6 -0
- package/templates/opencode/payload/AGENTS.md +9 -0
- package/workflows/add-backlog.md +212 -0
- package/workflows/add-tests.md +69 -0
- package/workflows/add-todo.md +222 -0
- package/workflows/ai-integration-phase.md +230 -0
- package/workflows/autonomous.md +94 -0
- package/workflows/cleanup.md +325 -0
- package/workflows/code-review-fix.md +435 -0
- package/workflows/code-review.md +447 -0
- package/workflows/discuss-phase-assumptions.md +269 -0
- package/workflows/discuss-phase-power.md +139 -0
- package/workflows/discuss-phase.md +386 -0
- package/workflows/dispatch.md +9 -0
- package/workflows/doctor.md +10 -0
- package/workflows/eval-review.md +243 -0
- package/workflows/execute-phase.md +142 -0
- package/workflows/execute-plan.md +82 -0
- package/workflows/help.md +8 -0
- package/workflows/new-milestone.md +166 -0
- package/workflows/new-project.md +213 -0
- package/workflows/next.md +8 -0
- package/workflows/note.md +244 -0
- package/workflows/park.md +29 -0
- package/workflows/pause-work.md +34 -0
- package/workflows/plan-milestone-gaps.md +233 -0
- package/workflows/plan-phase.md +351 -0
- package/workflows/progress.md +8 -0
- package/workflows/queue.md +9 -0
- package/workflows/research-phase.md +327 -0
- package/workflows/reset-slice.md +39 -0
- package/workflows/resume-work.md +79 -0
- package/workflows/review.md +489 -0
- package/workflows/secure-phase.md +209 -0
- package/workflows/session-report.md +243 -0
- package/workflows/skip.md +29 -0
- package/workflows/state.md +7 -0
- package/workflows/stats.md +170 -0
- package/workflows/thread.md +214 -0
- package/workflows/triage.md +9 -0
- package/workflows/ui-phase.md +246 -0
- package/workflows/ui-review.md +222 -0
- package/workflows/undo-task.md +42 -0
- package/workflows/undo.md +55 -0
- package/workflows/unpark.md +29 -0
- package/workflows/validate-phase.md +231 -0
- package/workflows/verify-work.md +83 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase: {{phase}}
|
|
3
|
+
generated: {{timestamp}}
|
|
4
|
+
generator: np:ai-integration-phase
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Phase {{phase}} — AI Integration Spec
|
|
8
|
+
|
|
9
|
+
This document is the AI design contract for Phase {{phase}}. It locks the
|
|
10
|
+
framework, implementation patterns, domain rubrics, evaluation strategy,
|
|
11
|
+
guardrails, and production monitoring plan BEFORE the planner creates
|
|
12
|
+
tasks. Re-read this file in full before planning or executing any task
|
|
13
|
+
that produces, consumes, or reasons about model output.
|
|
14
|
+
|
|
15
|
+
## 1b. Domain Context
|
|
16
|
+
|
|
17
|
+
Business domain, stakeholders, and expert rubrics. Each rubric ingredient
|
|
18
|
+
(Good / Bad / Stakes) grounds a downstream eval dimension (Section 5).
|
|
19
|
+
|
|
20
|
+
{{domain_rubric}}
|
|
21
|
+
|
|
22
|
+
## 2. Framework Selection
|
|
23
|
+
|
|
24
|
+
Scoring matrix (cost, fit, maturity, ecosystem, lock-in) and final pick.
|
|
25
|
+
Capture the rejected alternative with one-line rationale so downstream
|
|
26
|
+
reviewers can revisit the trade-off.
|
|
27
|
+
|
|
28
|
+
{{framework_scoring_matrix}}
|
|
29
|
+
|
|
30
|
+
**Selected:** {{selected_framework}}
|
|
31
|
+
|
|
32
|
+
**Alternative considered:** {{alternative_framework}}
|
|
33
|
+
|
|
34
|
+
**Rationale:** {{rationale}}
|
|
35
|
+
|
|
36
|
+
## 3. Implementation
|
|
37
|
+
|
|
38
|
+
Canonical entry-point pattern using the selected framework. Copy-paste
|
|
39
|
+
ready; the planner turns this into literal task actions ("wire the client
|
|
40
|
+
exactly as shown below").
|
|
41
|
+
|
|
42
|
+
```{{language}}
|
|
43
|
+
{{code_patterns}}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Pitfalls and version-specific gotchas called out inline.
|
|
47
|
+
|
|
48
|
+
## 4b. Pydantic / Typed Models
|
|
49
|
+
|
|
50
|
+
Structured output contracts (Pydantic, Zod, dataclasses — whatever the
|
|
51
|
+
framework ingests). Use these types everywhere the model returns data;
|
|
52
|
+
free-text parsing is an eval-coverage regression.
|
|
53
|
+
|
|
54
|
+
```{{language}}
|
|
55
|
+
{{pydantic_models}}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## 5. Eval Dimensions
|
|
59
|
+
|
|
60
|
+
Named rubric per dimension. Each row states **what is measured**, **how
|
|
61
|
+
it is scored**, and **which Section-1b rubric ingredient it anchors**.
|
|
62
|
+
|
|
63
|
+
{{eval_dimensions}}
|
|
64
|
+
|
|
65
|
+
## 6. Guardrails
|
|
66
|
+
|
|
67
|
+
Hard constraints enforced at runtime — NOT evaluated post-hoc. PII
|
|
68
|
+
redaction, toxicity filters, cost caps, output-format validators, timeout
|
|
69
|
+
bounds. Guardrail violations MUST short-circuit the response.
|
|
70
|
+
|
|
71
|
+
{{guardrails}}
|
|
72
|
+
|
|
73
|
+
## 7. Production Monitoring
|
|
74
|
+
|
|
75
|
+
Tracing, metrics, and alerting contract. Arize Phoenix or detected
|
|
76
|
+
equivalent is the tracing default (OpenTelemetry-compatible). Specify
|
|
77
|
+
dashboard panels + alert thresholds here so they ship in Phase execution,
|
|
78
|
+
not as a retrofit.
|
|
79
|
+
|
|
80
|
+
{{monitoring_plan}}
|
|
81
|
+
|
|
82
|
+
## Checklist
|
|
83
|
+
|
|
84
|
+
- [ ] Framework selected with rationale (Section 2)
|
|
85
|
+
- [ ] Domain rubric ingredients non-empty (Section 1b)
|
|
86
|
+
- [ ] Entry-point code block non-empty (Section 3)
|
|
87
|
+
- [ ] Typed output models present (Section 4b)
|
|
88
|
+
- [ ] At least one eval dimension defined (Section 5)
|
|
89
|
+
- [ ] Guardrails list or explicit N/A rationale (Section 6)
|
|
90
|
+
- [ ] Production-monitoring plan with tracing default (Section 7)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!-- Placeholders: canonical_refs_text, code_context_text, created_date, decisions_text, deferred_text, domain_text, phase_name, phase_number, phase_padded, phase_slug, specifics_text -->
|
|
2
|
+
# Phase {{phase_number}}: {{phase_name}} — Context
|
|
3
|
+
|
|
4
|
+
**Gathered:** {{created_date}}
|
|
5
|
+
|
|
6
|
+
<domain>
|
|
7
|
+
{{domain_text}}
|
|
8
|
+
</domain>
|
|
9
|
+
|
|
10
|
+
<decisions>
|
|
11
|
+
{{decisions_text}}
|
|
12
|
+
</decisions>
|
|
13
|
+
|
|
14
|
+
<canonical_refs>
|
|
15
|
+
{{canonical_refs_text}}
|
|
16
|
+
</canonical_refs>
|
|
17
|
+
|
|
18
|
+
<code_context>
|
|
19
|
+
{{code_context_text}}
|
|
20
|
+
</code_context>
|
|
21
|
+
|
|
22
|
+
<specifics>
|
|
23
|
+
{{specifics_text}}
|
|
24
|
+
</specifics>
|
|
25
|
+
|
|
26
|
+
<deferred>
|
|
27
|
+
{{deferred_text}}
|
|
28
|
+
</deferred>
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
*Phase: {{phase_padded}}-{{phase_slug}}*
|
|
32
|
+
*Context gathered: {{created_date}}*
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<!-- Placeholders: autonomous, created_date, depends_on_json, files_modified_yaml, phase, plan, plan_id, requirements_json, wave -->
|
|
2
|
+
---
|
|
3
|
+
phase: "{{phase}}"
|
|
4
|
+
plan: "{{plan}}"
|
|
5
|
+
plan_id: "{{plan_id}}"
|
|
6
|
+
type: execute
|
|
7
|
+
wave: {{wave}}
|
|
8
|
+
depends_on: {{depends_on_json}}
|
|
9
|
+
files_modified:
|
|
10
|
+
{{files_modified_yaml}}
|
|
11
|
+
autonomous: {{autonomous}}
|
|
12
|
+
requirements: {{requirements_json}}
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<objective>
|
|
16
|
+
TBD — what does this plan deliver, and why now? One or two sentences.
|
|
17
|
+
|
|
18
|
+
Purpose: Cover TBD.
|
|
19
|
+
|
|
20
|
+
Output: TBD (list of artifacts).
|
|
21
|
+
</objective>
|
|
22
|
+
|
|
23
|
+
<context>
|
|
24
|
+
TBD — @-reference the CONTEXT.md, RESEARCH.md, prior PLAN.md files, and any
|
|
25
|
+
lib modules whose public surface this plan consumes.
|
|
26
|
+
</context>
|
|
27
|
+
|
|
28
|
+
<tasks>
|
|
29
|
+
|
|
30
|
+
<task type="auto">
|
|
31
|
+
<name>Task 1: TBD</name>
|
|
32
|
+
<files>TBD</files>
|
|
33
|
+
<read_first>
|
|
34
|
+
- TBD
|
|
35
|
+
</read_first>
|
|
36
|
+
<action>
|
|
37
|
+
TBD — describe the concrete edit or creation. Keep it to a single commit.
|
|
38
|
+
</action>
|
|
39
|
+
<verify>
|
|
40
|
+
<automated>TBD — runnable command that returns exit 0 on success.</automated>
|
|
41
|
+
</verify>
|
|
42
|
+
<acceptance_criteria>
|
|
43
|
+
- TBD
|
|
44
|
+
</acceptance_criteria>
|
|
45
|
+
<done>TBD — one-line statement of the task's done state.</done>
|
|
46
|
+
</task>
|
|
47
|
+
|
|
48
|
+
</tasks>
|
|
49
|
+
|
|
50
|
+
<threat_model>
|
|
51
|
+
| Threat ID | Category | Component | Disposition | Mitigation Plan |
|
|
52
|
+
|-----------|----------|-----------|-------------|-----------------|
|
|
53
|
+
| T-TBD | TBD | TBD | mitigate | TBD |
|
|
54
|
+
</threat_model>
|
|
55
|
+
|
|
56
|
+
<verification>
|
|
57
|
+
- TBD
|
|
58
|
+
</verification>
|
|
59
|
+
|
|
60
|
+
<success_criteria>
|
|
61
|
+
- TBD
|
|
62
|
+
</success_criteria>
|
|
63
|
+
|
|
64
|
+
<output>
|
|
65
|
+
After completion, create `.nubos-pilot/phases/{{phase}}-<slug>/{{plan_id}}-SUMMARY.md` covering: TBD.
|
|
66
|
+
</output>
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
*Plan drafted: {{created_date}}*
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<!-- Placeholders: core_value, created_date, first_milestone_name, first_phase_name, primary_constraints, project_name -->
|
|
2
|
+
# {{project_name}}
|
|
3
|
+
|
|
4
|
+
## Project
|
|
5
|
+
|
|
6
|
+
{{project_name}} — {{core_value}}
|
|
7
|
+
|
|
8
|
+
## What This Is
|
|
9
|
+
|
|
10
|
+
{{project_name}} is an early-stage project. Update this section after the first
|
|
11
|
+
phase ships with a concrete 2-3 sentence description of what the product does
|
|
12
|
+
and who it serves. Use the user's language and framing.
|
|
13
|
+
|
|
14
|
+
## Core Value
|
|
15
|
+
|
|
16
|
+
{{core_value}}
|
|
17
|
+
|
|
18
|
+
If everything else fails, this one sentence must remain true. It drives
|
|
19
|
+
prioritization when tradeoffs arise.
|
|
20
|
+
|
|
21
|
+
## Constraints
|
|
22
|
+
|
|
23
|
+
{{primary_constraints}}
|
|
24
|
+
|
|
25
|
+
## Current Focus
|
|
26
|
+
|
|
27
|
+
Milestone: **{{first_milestone_name}}**
|
|
28
|
+
First phase: **{{first_phase_name}}**
|
|
29
|
+
|
|
30
|
+
This section is updated by `np:next` and milestone transitions. It reflects
|
|
31
|
+
what is actively being worked on right now, not the full roadmap (see
|
|
32
|
+
`ROADMAP.md`).
|
|
33
|
+
|
|
34
|
+
## Key Decisions
|
|
35
|
+
|
|
36
|
+
<!-- Decisions that constrain future work. Add throughout project lifecycle. -->
|
|
37
|
+
|
|
38
|
+
| Decision | Rationale | Outcome |
|
|
39
|
+
|----------|-----------|---------|
|
|
40
|
+
| Initial scaffold via np:new-project | Greenfield project bootstrap (D-28) | — Pending |
|
|
41
|
+
|
|
42
|
+
## Evolution
|
|
43
|
+
|
|
44
|
+
PROJECT.md evolves throughout the project lifecycle.
|
|
45
|
+
|
|
46
|
+
**After each phase transition:**
|
|
47
|
+
1. Requirements invalidated? → Move to Out of Scope in REQUIREMENTS.md with reason
|
|
48
|
+
2. Requirements validated? → Move to Validated in REQUIREMENTS.md with phase reference
|
|
49
|
+
3. New requirements emerged? → Add to REQUIREMENTS.md Active list
|
|
50
|
+
4. Decisions to log? → Add to Key Decisions above
|
|
51
|
+
5. "What This Is" still accurate? → Update if drifted
|
|
52
|
+
|
|
53
|
+
**After each milestone:**
|
|
54
|
+
1. Full review of all sections
|
|
55
|
+
2. Core Value check — still the right priority?
|
|
56
|
+
3. Update Current Focus with next milestone/phase
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
*Created: {{created_date}}*
|
|
60
|
+
*Last updated: {{created_date}} after np:new-project*
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- Placeholders: core_value, created_date, first_milestone_name, project_name -->
|
|
2
|
+
# Requirements: {{project_name}}
|
|
3
|
+
|
|
4
|
+
**Defined:** {{created_date}}
|
|
5
|
+
**Core Value:** {{core_value}}
|
|
6
|
+
|
|
7
|
+
## {{first_milestone_name}} Requirements
|
|
8
|
+
|
|
9
|
+
Requirements for the first milestone. Each should map to one or more roadmap
|
|
10
|
+
phases. Edit these and add more after `np:new-project` completes.
|
|
11
|
+
|
|
12
|
+
<!-- TBD: first requirement -->
|
|
13
|
+
- [ ] **REQ-01**: TBD — edit this line with a checkable requirement
|
|
14
|
+
|
|
15
|
+
<!-- TBD: add more requirements here as they emerge -->
|
|
16
|
+
|
|
17
|
+
## Out of Scope
|
|
18
|
+
|
|
19
|
+
Explicitly excluded. Documented to prevent scope creep.
|
|
20
|
+
|
|
21
|
+
<!-- TBD: add exclusions as boundaries become clear -->
|
|
22
|
+
|
|
23
|
+
| Feature | Reason |
|
|
24
|
+
|---------|--------|
|
|
25
|
+
| *(none yet)* | — |
|
|
26
|
+
|
|
27
|
+
## Traceability
|
|
28
|
+
|
|
29
|
+
Which phases cover which requirements. Updated during roadmap evolution.
|
|
30
|
+
|
|
31
|
+
<!-- Filled by /np:plan-phase -->
|
|
32
|
+
|
|
33
|
+
| Requirement | Phase | Status |
|
|
34
|
+
|-------------|-------|--------|
|
|
35
|
+
| REQ-01 | TBD | Pending |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
*Requirements defined: {{created_date}}*
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase: {N}
|
|
3
|
+
slug: {phase-slug}
|
|
4
|
+
status: draft
|
|
5
|
+
threats_open: 0
|
|
6
|
+
asvs_level: 1
|
|
7
|
+
created: {date}
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Phase {N} — Security
|
|
11
|
+
|
|
12
|
+
> Per-phase security contract: threat register, accepted risks, and audit trail.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Trust Boundaries
|
|
17
|
+
|
|
18
|
+
| Boundary | Description | Data Crossing |
|
|
19
|
+
|----------|-------------|---------------|
|
|
20
|
+
| {boundary} | {description} | {data type / sensitivity} |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Threat Register
|
|
25
|
+
|
|
26
|
+
| Threat ID | Category | Component | Disposition | Mitigation | Status |
|
|
27
|
+
|-----------|----------|-----------|-------------|------------|--------|
|
|
28
|
+
| T-{N}-01 | {STRIDE category} | {component} | {mitigate / accept / transfer} | {control or reference} | open |
|
|
29
|
+
|
|
30
|
+
*Status: open · closed*
|
|
31
|
+
*Disposition: mitigate (implementation required) · accept (documented risk) · transfer (third-party)*
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Accepted Risks Log
|
|
36
|
+
|
|
37
|
+
| Risk ID | Threat Ref | Rationale | Accepted By | Date |
|
|
38
|
+
|---------|------------|-----------|-------------|------|
|
|
39
|
+
|
|
40
|
+
*Accepted risks do not resurface in future audit runs.*
|
|
41
|
+
|
|
42
|
+
*If none: "No accepted risks."*
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Security Audit Trail
|
|
47
|
+
|
|
48
|
+
| Audit Date | Threats Total | Closed | Open | Run By |
|
|
49
|
+
|------------|---------------|--------|------|--------|
|
|
50
|
+
| {YYYY-MM-DD} | {N} | {N} | {N} | {name / agent} |
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Sign-Off
|
|
55
|
+
|
|
56
|
+
- [ ] All threats have a disposition (mitigate / accept / transfer)
|
|
57
|
+
- [ ] Accepted risks documented in Accepted Risks Log
|
|
58
|
+
- [ ] `threats_open: 0` confirmed
|
|
59
|
+
- [ ] `status: verified` set in frontmatter
|
|
60
|
+
|
|
61
|
+
**Approval:** {pending / verified YYYY-MM-DD}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase: {{phase}}
|
|
3
|
+
generated: {{timestamp}}
|
|
4
|
+
generator: np:ui-phase
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Phase {{phase}} — UI Spec
|
|
8
|
+
|
|
9
|
+
This document is the UI design contract for Phase {{phase}}. It locks the
|
|
10
|
+
six visual pillars BEFORE the planner creates tasks so execution stays
|
|
11
|
+
consistent with brand and system. Re-read this file in full before any
|
|
12
|
+
task that modifies user-facing surface.
|
|
13
|
+
|
|
14
|
+
## 1. Spacing
|
|
15
|
+
|
|
16
|
+
Spacing scale, layout grid, vertical rhythm, and breakpoint math.
|
|
17
|
+
|
|
18
|
+
{{spacing_rules}}
|
|
19
|
+
|
|
20
|
+
## 2. Typography
|
|
21
|
+
|
|
22
|
+
Type scale, font stacks, weights, line-heights, and letter-spacing.
|
|
23
|
+
Include usage rules (headings vs body, emphasis, numeric alignment).
|
|
24
|
+
|
|
25
|
+
{{typography_scale}}
|
|
26
|
+
|
|
27
|
+
## 3. Color
|
|
28
|
+
|
|
29
|
+
Palette with token names, contrast contracts (WCAG AA/AAA evidence), and
|
|
30
|
+
semantic intent (danger, warning, info, success, neutral). Include
|
|
31
|
+
dark/light variants if applicable.
|
|
32
|
+
|
|
33
|
+
{{color_palette}}
|
|
34
|
+
|
|
35
|
+
## 4. Copywriting
|
|
36
|
+
|
|
37
|
+
Voice, tone, persona. Reusable microcopy patterns (CTAs, empty states,
|
|
38
|
+
errors, confirmations). Include profanity / tone guardrails.
|
|
39
|
+
|
|
40
|
+
{{voice_and_tone}}
|
|
41
|
+
|
|
42
|
+
## 5. Design System
|
|
43
|
+
|
|
44
|
+
Component inventory from the chosen design system (shadcn/ui, Radix,
|
|
45
|
+
Material, bespoke). Which components are already-wired vs TODO. Which
|
|
46
|
+
design-tokens map to which Tailwind/CSS-variable name.
|
|
47
|
+
|
|
48
|
+
{{design_system_components}}
|
|
49
|
+
|
|
50
|
+
## 6. Components
|
|
51
|
+
|
|
52
|
+
Phase-specific component contracts: prop signature, accessibility
|
|
53
|
+
contract (ARIA roles/labels, keyboard nav), state machine, edge cases.
|
|
54
|
+
|
|
55
|
+
{{component_inventory}}
|
|
56
|
+
|
|
57
|
+
## Checklist
|
|
58
|
+
|
|
59
|
+
- [ ] Spacing scale defined with evidence (Section 1)
|
|
60
|
+
- [ ] Typography scale + font-stack pinned (Section 2)
|
|
61
|
+
- [ ] Color palette with contrast contract (Section 3)
|
|
62
|
+
- [ ] Voice and microcopy patterns captured (Section 4)
|
|
63
|
+
- [ ] Design-system inventory with token map (Section 5)
|
|
64
|
+
- [ ] Component contracts per phase (Section 6)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase: {N}
|
|
3
|
+
slug: {phase-slug}
|
|
4
|
+
status: draft
|
|
5
|
+
nyquist_compliant: false
|
|
6
|
+
wave_0_complete: false
|
|
7
|
+
created: {date}
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Phase {N} — Validation Strategy
|
|
11
|
+
|
|
12
|
+
> Per-phase validation contract for feedback sampling during execution.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Test Infrastructure
|
|
17
|
+
|
|
18
|
+
| Property | Value |
|
|
19
|
+
|----------|-------|
|
|
20
|
+
| **Framework** | {pytest 7.x / jest 29.x / vitest / go test / other} |
|
|
21
|
+
| **Config file** | {path or "none — Wave 0 installs"} |
|
|
22
|
+
| **Quick run command** | `{quick command}` |
|
|
23
|
+
| **Full suite command** | `{full command}` |
|
|
24
|
+
| **Estimated runtime** | ~{N} seconds |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Sampling Rate
|
|
29
|
+
|
|
30
|
+
- **After every task commit:** Run `{quick run command}`
|
|
31
|
+
- **After every plan wave:** Run `{full suite command}`
|
|
32
|
+
- **Before `/np:verify-work`:** Full suite must be green
|
|
33
|
+
- **Max feedback latency:** {N} seconds
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Per-Task Verification Map
|
|
38
|
+
|
|
39
|
+
| Task ID | Plan | Wave | Requirement | Threat Ref | Secure Behavior | Test Type | Automated Command | File Exists | Status |
|
|
40
|
+
|---------|------|------|-------------|------------|-----------------|-----------|-------------------|-------------|--------|
|
|
41
|
+
| {N}-01-01 | 01 | 1 | REQ-{XX} | T-{N}-01 / — | {expected secure behavior or "N/A"} | unit | `{command}` | ✅ / ❌ W0 | ⬜ pending |
|
|
42
|
+
|
|
43
|
+
*Status: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky*
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Wave 0 Requirements
|
|
48
|
+
|
|
49
|
+
- [ ] `{tests/test_file.py}` — stubs for REQ-{XX}
|
|
50
|
+
- [ ] `{tests/conftest.py}` — shared fixtures
|
|
51
|
+
- [ ] `{framework install}` — if no framework detected
|
|
52
|
+
|
|
53
|
+
*If none: "Existing infrastructure covers all phase requirements."*
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Manual-Only Verifications
|
|
58
|
+
|
|
59
|
+
| Behavior | Requirement | Why Manual | Test Instructions |
|
|
60
|
+
|----------|-------------|------------|-------------------|
|
|
61
|
+
| {behavior} | REQ-{XX} | {reason} | {steps} |
|
|
62
|
+
|
|
63
|
+
*If none: "All phase behaviors have automated verification."*
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Validation Sign-Off
|
|
68
|
+
|
|
69
|
+
- [ ] All tasks have `<automated>` verify or Wave 0 dependencies
|
|
70
|
+
- [ ] Sampling continuity: no 3 consecutive tasks without automated verify
|
|
71
|
+
- [ ] Wave 0 covers all MISSING references
|
|
72
|
+
- [ ] No watch-mode flags
|
|
73
|
+
- [ ] Feedback latency < {N}s
|
|
74
|
+
- [ ] `nyquist_compliant: true` set in frontmatter
|
|
75
|
+
|
|
76
|
+
**Approval:** {pending / approved YYYY-MM-DD}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# nubos-pilot Source Payload
|
|
2
|
+
|
|
3
|
+
This directory is the SOURCE TREE for the installer. Content ships here and is COPIED by `bin/install.js` into `.claude/nubos-pilot/` at install time.
|
|
4
|
+
|
|
5
|
+
Subdirectories (populated in Phase 8 and onwards):
|
|
6
|
+
- `workflows/` — `.md` commands copied into `.claude/nubos-pilot/workflows/`
|
|
7
|
+
- `agents/` — agent `.md` files
|
|
8
|
+
- `hooks/` — hook scripts
|
|
9
|
+
- `templates/` — scaffolding templates
|
|
10
|
+
|
|
11
|
+
See `.planning/phases/07-install-npx-flow/07-RESEARCH.md` §Recommended Project Structure for the full layout.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# AGENTS.md (OpenCode)
|
|
2
|
+
|
|
3
|
+
> This file is regenerated by nubos-pilot on install. User edits will be preserved
|
|
4
|
+
> only outside the managed block.
|
|
5
|
+
|
|
6
|
+
<!-- nubos-pilot:begin v1 -->
|
|
7
|
+
<!-- do not edit manually — managed by npx nubos-pilot -->
|
|
8
|
+
(Managed content rewritten by installer.)
|
|
9
|
+
<!-- nubos-pilot:end -->
|