@novare-technologies/nvaid 0.0.0-stage → 0.2.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.
Files changed (32) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +137 -2
  3. package/dist/cli.js +483 -0
  4. package/package.json +49 -4
  5. package/templates/commands/apply.md +36 -0
  6. package/templates/commands/breakdown.md +35 -0
  7. package/templates/commands/contracts.md +43 -0
  8. package/templates/commands/install.md +63 -0
  9. package/templates/commands/intent.md +46 -0
  10. package/templates/nvaid/DESIGN-CODE-DICTIONARY.md +90 -0
  11. package/templates/nvaid/PROJECT-RULES.md +93 -0
  12. package/templates/nvaid/config.yml +87 -0
  13. package/templates/nvaid/intents/.gitkeep +0 -0
  14. package/templates/rules/ISSUE-TRACKER-TEMPLATE.md +221 -0
  15. package/templates/rules/backend-architecture-contract-generation-rules.md +56 -0
  16. package/templates/rules/customer-experience-contract-generation-rules.md +51 -0
  17. package/templates/rules/frontend-architecture-contract-generation-rules.md +56 -0
  18. package/templates/rules/quality-architecture-contract-generation-rules.md +86 -0
  19. package/templates/rules/solutions-architecture-contract-generation-rules.md +59 -0
  20. package/templates/rules/unit-breakdown-rules.md +121 -0
  21. package/templates/skills/backend/SKILL.md +34 -0
  22. package/templates/skills/customer-experience/SKILL.md +26 -0
  23. package/templates/skills/daily-construction-update/SKILL.md +27 -0
  24. package/templates/skills/frontend/SKILL.md +30 -0
  25. package/templates/skills/github/SKILL.md +142 -0
  26. package/templates/skills/pr-review/SKILL.md +119 -0
  27. package/templates/skills/project-ticketing/SKILL.md +26 -0
  28. package/templates/skills/quality/SKILL.md +31 -0
  29. package/templates/skills/r3-analytics/SKILL.md +26 -0
  30. package/templates/skills/release-plan/SKILL.md +27 -0
  31. package/templates/skills/solutions/SKILL.md +29 -0
  32. package/templates/skills/unit-breakdown/SKILL.md +31 -0
@@ -0,0 +1,36 @@
1
+ ---
2
+ command: nvaid:apply
3
+ summary: Generate per-repo unit design docs and open construction branches for an approved breakdown.
4
+ stage: "Fig. 2 Stage 4+ — Per-Role Authoring / Construction"
5
+ precondition: unit-breakdown approved (Decomposition-Approved gate green)
6
+ ---
7
+
8
+ # /nvaid:apply
9
+
10
+ ## ⛔ Precondition: nvaid install must be complete
11
+
12
+ Read `nvaid/config.yml` and check the `install:` block. If `config`, `project_rules`, or
13
+ `design_code_dictionary` is not `true` (or the file is missing), **STOP** and tell the
14
+ user to run `/nvaid:install` first — name which flag(s) are false. Do not proceed until
15
+ all three are true.
16
+
17
+
18
+ Turn an **approved** unit-breakdown into construction-ready work: for each Unit, generate
19
+ its design doc in the Owning Repo named by the breakdown, and open the construction branch
20
+ per the `github` Skill.
21
+
22
+ ## Precondition
23
+
24
+ Only run once the unit-breakdown is approved. If it's still awaiting the gate, stop.
25
+
26
+ ## Steps
27
+
28
+ 1. Read the approved `unit-breakdown.md` and its Units + Owning Repo tags.
29
+ 2. For each Unit, in its Owning Repo:
30
+ - generate `nvaid/intents/<INTENT-ID>-<slug>/units/<UNIT-ID>-design.md` with the Unit's
31
+ own Acceptance Criteria, referencing the relevant contracts (`covers_units`).
32
+ - cut the construction branch (`feature/<story-id>-<slug>` or `bugfix/...`) per the
33
+ `github` Skill.
34
+ 3. Create/update the GitHub Project items per `ISSUE-TRACKER-TEMPLATE.md` (Epic per Intent,
35
+ Story/Bug per Unit) — links, not pasted content.
36
+ 4. Hand off to Construction. Do not implement code here.
@@ -0,0 +1,35 @@
1
+ ---
2
+ command: nvaid:breakdown
3
+ summary: Cut an approved Intent into Units of Work — the Phase 5 final cut, each unit tagged with its Owning Repo.
4
+ stage: "Mob Elaboration — Phase 5"
5
+ precondition: Contracts drafted (/nvaid:contracts has run)
6
+ ---
7
+
8
+ # /nvaid:breakdown
9
+
10
+ ## ⛔ Precondition: nvaid install must be complete
11
+
12
+ Read `nvaid/config.yml` and check the `install:` block. If `config`, `project_rules`, or
13
+ `design_code_dictionary` is not `true` (or the file is missing), **STOP** and tell the
14
+ user to run `/nvaid:install` first — name which flag(s) are false. Do not proceed until
15
+ all three are true.
16
+
17
+
18
+ Produce `unit-breakdown.md` — the **Phase 5 output**, the decomposition of record,
19
+ informed by the contracts from `/nvaid:contracts`. This runs **after** contracts, not
20
+ before (the `unit-breakdown` Skill is Phase 5; the contract Skills are Phases 2–5).
21
+
22
+ ## Steps
23
+
24
+ 1. Read `intent.md` and the drafted `contracts/`.
25
+ 2. Run the `unit-breakdown` Skill per `{{AIDLC_ROOT}}/unit-breakdown-rules.md`: cut into
26
+ Units each with its own Acceptance Criteria, classify Story or Bug, size per the rules.
27
+ 3. Tag each Unit with its **Owning Repo** (frontend | backend | platform) — this is what
28
+ assigns units across the family (proposal §7).
29
+ 4. Reconcile each contract's `covers_units` against the final cut.
30
+ 5. Write `nvaid/intents/<INTENT-ID>-<slug>/unit-breakdown.md`. Flag as a draft awaiting
31
+ room critique (Phases 3–4) and the Decomposition-Approved gate.
32
+
33
+ ## Next
34
+
35
+ `/nvaid:apply` — generate the per-repo unit design docs and open construction branches.
@@ -0,0 +1,43 @@
1
+ ---
2
+ command: nvaid:contracts
3
+ summary: Draft the per-role Architecture Contracts for an approved Intent (Phases 2–5).
4
+ stage: "Mob Elaboration — Phases 2–5"
5
+ precondition: Intent approved (Decomposition-Approved gate green)
6
+ ---
7
+
8
+ # /nvaid:contracts
9
+
10
+ ## ⛔ Precondition: nvaid install must be complete
11
+
12
+ Read `nvaid/config.yml` and check the `install:` block. If `config`, `project_rules`, or
13
+ `design_code_dictionary` is not `true` (or the file is missing), **STOP** and tell the
14
+ user to run `/nvaid:install` first — name which flag(s) are false. Do not proceed until
15
+ all three are true.
16
+
17
+
18
+ Draft the Architecture Contracts for an **already-approved** Intent, running each role's
19
+ contract Skill. The contracts are negotiated across Elaboration Phases 2–5 and **precede**
20
+ the unit-breakdown (which is the Phase 5 output) — run `/nvaid:breakdown` after this.
21
+
22
+ ## Precondition
23
+
24
+ Only run once the Intent is approved. If `intent.md` is still a draft awaiting the
25
+ stakeholder, stop and say so.
26
+
27
+ ## Steps
28
+
29
+ 1. Read the approved `intent.md`.
30
+ 2. Run each required role Skill per its `*-architecture-contract-generation-rules.md`
31
+ under `{{AIDLC_ROOT}}`: solutions, the relevant tier contract(s) (frontend / backend),
32
+ quality, customer-experience. Pull a role in only if the Intent touches its domain;
33
+ state "not pulled in" explicitly for the rest.
34
+ 3. Write each to `nvaid/intents/<INTENT-ID>-<slug>/contracts/`.
35
+ 4. Each contract is a **draft awaiting its Architect's sign-off** — never present as final.
36
+ Read the architect roster from `nvaid/config.yml` (`architects.<role>`) and flag each
37
+ contract as "awaiting sign-off from <that named architect>". Never fill in a sign-off
38
+ on an architect's behalf (propose, don't dispose). If a role has no named architect in
39
+ config, state that its contract is not pulled in rather than inventing an owner.
40
+
41
+ ## Next
42
+
43
+ `/nvaid:breakdown` — cut the approved Intent into Units, informed by these contracts.
@@ -0,0 +1,63 @@
1
+ ---
2
+ command: nvaid:install
3
+ summary: Scan the project and fill in the three required nvaid documents (config.yml, PROJECT-RULES.md, DESIGN-CODE-DICTIONARY.md). Must run before /nvaid:intent.
4
+ stage: "nvaid onboarding — run once, first, before any workflow command"
5
+ blocks: [nvaid:intent, nvaid:contracts, nvaid:breakdown, nvaid:apply]
6
+ ---
7
+
8
+ # /nvaid:install
9
+
10
+ The **first** command to run after `nvaid init`. `init` only drops empty templates; this
11
+ skill makes nvaid actually usable by scanning the project and authoring the three required
12
+ documents. **Every other nvaid workflow command is blocked until this completes** — running
13
+ `/nvaid:intent` against unfilled templates would produce hollow, confidently-wrong output.
14
+
15
+ ## Why this is a skill, not a CLI step
16
+
17
+ The CLI can detect facts (languages, frameworks from manifest files) but cannot author
18
+ *judgment*: a project's guardrails, its design patterns, what breaks if a given module
19
+ changes. That requires reading the actual code and reasoning about it — the agent's job,
20
+ not a file-scan's. This skill does that reading. A human reviews before it's marked done
21
+ (propose, don't dispose).
22
+
23
+ ## Steps
24
+
25
+ 1. **Scan the project.** Read manifest files (`package.json`, `pyproject.toml`, `go.mod`,
26
+ lockfiles), the directory structure, config, CI workflows, and a representative sample
27
+ of source to understand the stack, the architecture, and the conventions in use.
28
+
29
+ 2. **Fill `nvaid/config.yml`** — replace every `<placeholder>`:
30
+ - `project_name`, `owning_repo` (frontend | backend | platform | other — infer from the
31
+ code, confirm with the user if ambiguous).
32
+ - `tech_stack` — fill from what you actually found in the manifests, not assumptions.
33
+ - `architects` — these are sign-off identities you cannot infer from code. **Ask the
34
+ user** for the names; leave a role blank only if the user confirms it doesn't apply.
35
+ - `context` — the short, always-on constraints worth repeating to every agent.
36
+
37
+ 3. **Author `nvaid/PROJECT-RULES.md`** — replace the template skeleton with real content:
38
+ the approved stack and what's disallowed without an ADR, non-negotiable constraints,
39
+ data rules, coding standards, the quality gates CI actually runs, and known gaps.
40
+ Derive what you can from the code (e.g. the lint/test config that exists); for anything
41
+ that is a *decision* rather than a fact (what's allowed, what's off-limits), propose it
42
+ and flag it for the user to confirm — do not invent a guardrail the project hasn't made.
43
+
44
+ 4. **Author `nvaid/DESIGN-CODE-DICTIONARY.md`** — the technical README for the code:
45
+ the design patterns and conventions in use (with real file examples), and the component
46
+ map (concept → where it lives → what it depends on → what breaks if changed). This is
47
+ narrative derived from reading the code; §1 references `config.yml`'s `tech_stack`
48
+ rather than repeating it. Be honest in the "not yet mapped" section about coverage.
49
+
50
+ 5. **Human review.** Present all three for review. Per propose-don't-dispose, you draft;
51
+ a human confirms. Do not self-approve.
52
+
53
+ 6. **Flip the gate.** Only after the user confirms each document is genuinely filled (not
54
+ placeholder text), set the matching flag in `config.yml`'s `install:` block to `true`:
55
+ `config`, `project_rules`, `design_code_dictionary`. When all three are true, the
56
+ workflow commands unblock.
57
+
58
+ ## Boundaries
59
+
60
+ - Facts come from the code; **decisions and sign-off identities come from the user** — ask,
61
+ don't fabricate.
62
+ - Never set an `install:` flag to `true` on a document that still contains template
63
+ `<placeholder>` text or that the user hasn't confirmed.
@@ -0,0 +1,46 @@
1
+ ---
2
+ command: nvaid:intent
3
+ summary: Draft an Intent (intent.md) — the business need and success criteria only, then STOP.
4
+ stage: "Fig. 2 Stage 1 — Intent captured, pre-Elaboration"
5
+ ---
6
+
7
+ # /nvaid:intent
8
+
9
+ ## ⛔ Precondition: nvaid install must be complete
10
+
11
+ Before doing anything, read `nvaid/config.yml` and check the `install:` block. If
12
+ `config`, `project_rules`, or `design_code_dictionary` is **not** `true` — or
13
+ `nvaid/config.yml` doesn't exist — **STOP** and tell the user:
14
+
15
+ > nvaid isn't fully installed in this project yet. Run `/nvaid:install` first — it scans
16
+ > the project and fills in config.yml, PROJECT-RULES.md, and DESIGN-CODE-DICTIONARY.md.
17
+ > Those documents are what this command relies on; drafting an Intent without them would
18
+ > produce hollow output.
19
+
20
+ Name which flag(s) are false. Do not proceed with any step below until all three are true.
21
+
22
+ ---
23
+
24
+ Draft a new Intent from the user's description. Produce **only** `intent.md` — the
25
+ business need, who it's for, success criteria, and scope boundaries — then **stop**.
26
+
27
+ ## Hard rule: generate the intent and nothing else
28
+
29
+ Do NOT generate contracts, a unit-breakdown, or any downstream artifact. The Intent must
30
+ be approved by the stakeholder (the Decomposition-Approved green light) before anything
31
+ downstream is generated. Stopping here is the whole point of the gated workflow, not a
32
+ limitation — propose, don't dispose.
33
+
34
+ ## Steps
35
+
36
+ 1. Read this repo's `nvaid/PROJECT-RULES.md` for the project's operating guardrails and
37
+ approved stack (guaranteed authored, since the install gate above has passed).
38
+ 2. Write `nvaid/intents/<INTENT-ID>-<slug>/intent.md`: business need, who it's for,
39
+ Intent-level success criteria (observable outcomes, not implementation), scope
40
+ boundaries (name what's out of scope, don't silently drop it), and open questions for
41
+ the room. Do not decide the technical shape here.
42
+ 3. Flag the file as a draft awaiting stakeholder approval. Stop.
43
+
44
+ ## Next (do not run automatically)
45
+
46
+ After the stakeholder approves: `/nvaid:contracts`, then `/nvaid:breakdown`.
@@ -0,0 +1,90 @@
1
+ ---
2
+ document: Design-Code Dictionary
3
+ project: "{{PROJECT_NAME}}"
4
+ version: 0.1.0
5
+ owner: "<owner name>"
6
+ maintained_by: AI agent — updated as part of any unit of work that touches a mapped component
7
+ last_updated: "<YYYY-MM-DD>"
8
+ status: draft
9
+ ---
10
+
11
+ # {{PROJECT_NAME}} — Design-Code Dictionary
12
+
13
+ > **Template dropped by `nvaid init` — HAND-OWNED, fill this in.**
14
+ > `nvaid update` never overwrites this file. Delete these template notes once you have
15
+ > real content.
16
+
17
+ **What this file is:** a *technical README for the code* — the specs and design patterns
18
+ of this repository, and a live map from each named concept (a feature, a module, an
19
+ architectural component) to where it actually lives in the codebase and what else touches
20
+ it. It answers two questions without opening the source: **"where does this live?"** and
21
+ **"what breaks if I change it?"**
22
+
23
+ **What this file is not:**
24
+
25
+ - Not a replacement for reading the code when making a change — it is a navigation aid for
26
+ deciding whether a change is safe and who should review it.
27
+ - Not a product spec. `nvaid/PROJECT-RULES.md` says what to build and how; this file says
28
+ where that intent actually landed, after the fact.
29
+ - Not a promise of completeness. §5 exists so this file can honestly state what it has not
30
+ mapped yet, rather than implying coverage it doesn't have.
31
+
32
+ **Keep it current.** Updating this file for every component a change adds, moves, or
33
+ removes is part of the Definition of Done — a stale map is worse than none, because it is
34
+ trusted and wrong.
35
+
36
+ ---
37
+
38
+ ## 1. Tech stack & toolchain
39
+
40
+ The authoritative, structured stack lives in **`nvaid/config.yml` → `tech_stack`** (that is
41
+ what agents and the CLI read). Don't duplicate it here — instead, add the *narrative* this
42
+ file is for: why each major choice was made, how the pieces fit together, and any
43
+ non-obvious interactions or constraints a contributor should know before changing them.
44
+
45
+ <e.g. "React + Vite for the SPA; Vitest chosen over Jest for ESM-native speed. The build
46
+ emits a static bundle served by nginx — see §2 and the Dockerfile. No SSR.">
47
+
48
+
49
+ ## 2. Project structure
50
+
51
+ <A short orientation to the top-level directories — what each is for. Example:>
52
+
53
+ ```
54
+ src/
55
+ <area>/ <one line: what lives here>
56
+ <area>/
57
+ test/
58
+ ```
59
+
60
+ ## 3. Design patterns & conventions
61
+
62
+ <The patterns a contributor (human or agent) must follow to stay consistent with the
63
+ codebase. Be specific — these are the rules an agent can't infer from a single file.
64
+ Examples:>
65
+
66
+ - **<Pattern name>** — <what it is, when to use it, where an example lives>.
67
+ - **State / data flow** — <how state is managed and data moves>.
68
+ - **Error handling** — <the project's convention>.
69
+ - **Naming** — <files, modules, symbols>.
70
+
71
+ ## 4. Component map (design concept → code)
72
+
73
+ | Concept / feature | Lives in | Depends on | Changing it affects |
74
+ |---|---|---|---|
75
+ | <e.g. Auth session> | `src/auth/session.ts` | <modules> | <what breaks> |
76
+ | | | | |
77
+
78
+ ## 5. Not yet mapped
79
+
80
+ <List components or areas that exist in the code but aren't documented above yet, so this
81
+ file is honest about its coverage. Keep this section — an empty "not yet mapped" is a
82
+ claim of full coverage, and should only be empty when that's actually true.>
83
+
84
+ - <none yet — fill the map as the code grows>
85
+
86
+ ## 6. Change log
87
+
88
+ | Version | Date | Change | Author |
89
+ |---|---|---|---|
90
+ | 0.1.0 | <YYYY-MM-DD> | Initial draft from the nvaid template | <name> |
@@ -0,0 +1,93 @@
1
+ ---
2
+ document: Project Standards & Engineering Rules
3
+ project: "<project name>"
4
+ version: 0.1.0
5
+ owner: "<owner name>"
6
+ last_updated: "<YYYY-MM-DD>"
7
+ status: draft
8
+ ---
9
+
10
+ # <project> — Project Standards & Engineering Rules
11
+
12
+ > **Template dropped by `nvaid init` — HAND-OWNED, fill this in.**
13
+ > `nvaid update` never overwrites this file. It is intentionally project-specific:
14
+ > nvaid ships the universal skills and contract/unit rules, but *this* file is where a
15
+ > developer records what is unique to this repo — the approved stack, the guardrails, the
16
+ > data rules. Delete these template notes once you have real content.
17
+
18
+ ## 1. What this project is
19
+
20
+ <One short paragraph: the objective, this phase's scope, explicit non-goals. The "why"
21
+ an agent needs in the same file as the "how".>
22
+
23
+ ## 2. Architecture principles & constraints
24
+
25
+ ### 2.1 Approved technology stack
26
+
27
+ | Layer | Approved | Disallowed without an ADR |
28
+ |---|---|---|
29
+ | <e.g. Backend> | <language/framework> | <what's off-limits> |
30
+ | <e.g. Frontend> | <framework> | <what's off-limits> |
31
+ | <e.g. Data store> | <engine> | <what's off-limits> |
32
+
33
+ ### 2.2 Non-negotiable constraints
34
+
35
+ - <e.g. deployment target, network posture, build output format — things an agent must
36
+ not quietly change.>
37
+
38
+ ### 2.3 Architecture Decision Records (ADRs)
39
+
40
+ <Where ADRs live and the rule to check them before proposing a change in an area one
41
+ already covers.>
42
+
43
+ ## 3. Data rules
44
+
45
+ - <How tenant/user/domain data is handled; what the project's own data is vs. isn't;
46
+ secret-handling discipline.>
47
+
48
+ ## 4. Design & coding standards
49
+
50
+ - Follow the existing file/module layout; flag any new structural pattern.
51
+ - Documentation bar (docstrings, module responsibilities) applies to AI-generated code
52
+ the same as human-authored.
53
+ - Linter/formatter config: <link once established>.
54
+
55
+ ## 5. Quality & testing rules
56
+
57
+ ### 5.1 Definition of Done (per Unit of Work)
58
+
59
+ - [ ] The Unit's stated Acceptance Criteria are met and each traces to a covering test.
60
+ - [ ] Static analysis / security scan passes with no unresolved High findings.
61
+ - [ ] Merge approved by the owning reviewer on gate evidence.
62
+ - [ ] `nvaid/DESIGN-CODE-DICTIONARY.md` updated for every component added/moved/removed.
63
+
64
+ ### 5.2 Quality gates (CI gates that must pass before merge)
65
+
66
+ <List the gates CI enforces for this project — build, unit test, coverage floor,
67
+ code quality, security scan, etc. Keep project-wide gates here; per-Intent gates come
68
+ from each Quality Architecture Contract.>
69
+
70
+ ## 6. Known gaps (do not silently resolve)
71
+
72
+ - <Open questions the agent must treat as questions, not assumptions to fill in.>
73
+
74
+ ## 7. AI operating rules (guardrails, not suggestions)
75
+
76
+ 1. **Propose, don't dispose.** A named human approves before anything is merged or
77
+ treated as final. Never approve your own gate.
78
+ 2. **Ask before assuming.** Ambiguity → a clarifying question, not a best-guess fill-in.
79
+ 3. **Respect existing decisions.** Conflict with an ADR or an approved design → flag it,
80
+ don't quietly resolve it.
81
+ 4. **No unreviewed new dependencies.**
82
+ 5. **No destructive/irreversible actions without explicit per-action confirmation.**
83
+ 6. **Artifact hygiene is part of the task** — code without the matching `nvaid/` artifact
84
+ update is an incomplete task.
85
+ 7. **Identify AI-assisted changes** in commits and PRs.
86
+
87
+ <Extend with project-specific guardrails.>
88
+
89
+ ## 8. Change log
90
+
91
+ | Version | Date | Change | Author |
92
+ |---|---|---|---|
93
+ | 0.1.0 | <YYYY-MM-DD> | Initial draft from the nvaid template | <name> |
@@ -0,0 +1,87 @@
1
+ # nvaid project config — HAND-OWNED. `nvaid update` never overwrites this file.
2
+ #
3
+ # This is the one place a repo declares who and what it is in the AI-DLC workflow:
4
+ # - which coding agents nvaid targets here,
5
+ # - what tier/role this repo plays,
6
+ # - the full tech stack of the project,
7
+ # - who the named architects are that sign off on each contract,
8
+ # - the always-on project context every agent should carry.
9
+ #
10
+ # Written by `nvaid init`, then yours to maintain. The skills and slash commands read
11
+ # this file to know, for example, who a drafted contract is "awaiting sign-off" from.
12
+
13
+ schema: nvaid/v1
14
+
15
+ # Installation gate. `nvaid init` scaffolds empty templates; the /nvaid:install SKILL
16
+ # then scans the project and fills in all three required documents. The workflow commands
17
+ # (/nvaid:intent, :contracts, :breakdown, :apply) are BLOCKED until install is complete —
18
+ # running them against unfilled templates would produce hollow, confidently-wrong output.
19
+ #
20
+ # Each flag is set to true by /nvaid:install only once that document is genuinely filled
21
+ # (not left as <placeholder> template text) and a human has confirmed it. The install is
22
+ # "complete" when all three are true.
23
+ install:
24
+ config: false # project_name, owning_repo, tech_stack, architects all set
25
+ project_rules: false # nvaid/PROJECT-RULES.md authored (not the template skeleton)
26
+ design_code_dictionary: false # nvaid/DESIGN-CODE-DICTIONARY.md authored (not the skeleton)
27
+
28
+ # A short name for this project/repo, used in generated artifact headers
29
+ # (replaces the {{PROJECT_NAME}} placeholder in PROJECT-RULES.md and the dictionary).
30
+ project_name: "<set-me>"
31
+
32
+ # Which repo this is in the family — used to tag the units this repo owns when a
33
+ # unit-breakdown is cut. One of: frontend | backend | platform | <other>.
34
+ owning_repo: "<set-at-init>"
35
+
36
+ # The full tech stack of this project. This is the STRUCTURED, machine-readable source of
37
+ # truth that agents and the CLI key off — e.g. a skill checks `languages` before proposing
38
+ # a dependency, or picks the right test command from `test`. Keep it factual and short;
39
+ # the narrative "why we chose this / how it fits together" belongs in
40
+ # nvaid/DESIGN-CODE-DICTIONARY.md, which references this block rather than repeating it.
41
+ #
42
+ # Leave a field blank or omit it if it doesn't apply. `additional` is an open map for
43
+ # anything the fixed fields don't cover (message brokers, infra, cloud, auth providers…).
44
+ tech_stack:
45
+ languages: [] # e.g. ["TypeScript", "Python"]
46
+ runtime: "" # e.g. "Node >=18", "Python 3.12"
47
+ frameworks: [] # e.g. ["React", "FastAPI"]
48
+ package_manager: "" # e.g. "npm", "pnpm", "uv", "poetry"
49
+ build: "" # e.g. "Vite", "tsup", "hatch"
50
+ test: "" # e.g. "Vitest", "pytest"
51
+ lint_format: "" # e.g. "eslint + prettier", "ruff"
52
+ database: "" # e.g. "PostgreSQL 16", "none"
53
+ deploy: "" # e.g. "Docker + Kubernetes", "GitHub Pages"
54
+ additional: {} # e.g. { cache: "Redis", broker: "RabbitMQ", auth: "OIDC" }
55
+
56
+ # Named architects who sign off on each role's Architecture Contract.
57
+ #
58
+ # These are SIGN-OFF / OWNERSHIP identities: the person accountable for approving that
59
+ # contract. The AI drafts contracts and flags them "awaiting <role> sign-off from <name>";
60
+ # it never signs on their behalf (propose, don't dispose). Leave a role blank/null if this
61
+ # repo doesn't have that architect — a contract for a missing role is simply not pulled in.
62
+ architects:
63
+ solutions: "<name>" # Solutions Architect
64
+ frontend: "<name>" # Frontend / Identity-Access Architect (if this repo has a frontend)
65
+ backend: "<name>" # Backend Solutions Architect (if this repo has a backend)
66
+ quality: "<name>" # Quality Architect
67
+ customer_experience: "<name>" # Customer Experience Architect (BA / PM)
68
+ # add any project-specific roles here, e.g.:
69
+ # devops: "<name>"
70
+
71
+ # Coding agents nvaid injected skills into. `nvaid update` regenerates exactly these.
72
+ # Managed by init/update; change via `nvaid init` rather than by hand.
73
+ agents: []
74
+
75
+ # Optional project context passed to every agent — constraints an agent can't infer
76
+ # from the code. Keep discoverable codebase facts OUT (same discipline as openspec).
77
+ # The project's full guardrails live in nvaid/PROJECT-RULES.md (fill in that template);
78
+ # this field is just the short, always-on context.
79
+ # Example:
80
+ # context: |
81
+ # On-premises only. No cloud targets.
82
+ # See nvaid/PROJECT-RULES.md for the approved stack and gates.
83
+ context: ""
84
+
85
+ # nvaid version this repo was last generated against. `nvaid validate` compares the
86
+ # installed CLI version to this and flags drift.
87
+ generated_with: "0.2.0"
File without changes