@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.
- package/LICENSE +21 -0
- package/README.md +137 -2
- package/dist/cli.js +483 -0
- package/package.json +49 -4
- package/templates/commands/apply.md +36 -0
- package/templates/commands/breakdown.md +35 -0
- package/templates/commands/contracts.md +43 -0
- package/templates/commands/install.md +63 -0
- package/templates/commands/intent.md +46 -0
- package/templates/nvaid/DESIGN-CODE-DICTIONARY.md +90 -0
- package/templates/nvaid/PROJECT-RULES.md +93 -0
- package/templates/nvaid/config.yml +87 -0
- package/templates/nvaid/intents/.gitkeep +0 -0
- package/templates/rules/ISSUE-TRACKER-TEMPLATE.md +221 -0
- package/templates/rules/backend-architecture-contract-generation-rules.md +56 -0
- package/templates/rules/customer-experience-contract-generation-rules.md +51 -0
- package/templates/rules/frontend-architecture-contract-generation-rules.md +56 -0
- package/templates/rules/quality-architecture-contract-generation-rules.md +86 -0
- package/templates/rules/solutions-architecture-contract-generation-rules.md +59 -0
- package/templates/rules/unit-breakdown-rules.md +121 -0
- package/templates/skills/backend/SKILL.md +34 -0
- package/templates/skills/customer-experience/SKILL.md +26 -0
- package/templates/skills/daily-construction-update/SKILL.md +27 -0
- package/templates/skills/frontend/SKILL.md +30 -0
- package/templates/skills/github/SKILL.md +142 -0
- package/templates/skills/pr-review/SKILL.md +119 -0
- package/templates/skills/project-ticketing/SKILL.md +26 -0
- package/templates/skills/quality/SKILL.md +31 -0
- package/templates/skills/r3-analytics/SKILL.md +26 -0
- package/templates/skills/release-plan/SKILL.md +27 -0
- package/templates/skills/solutions/SKILL.md +29 -0
- package/templates/skills/unit-breakdown/SKILL.md +31 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: backend
|
|
3
|
+
description: Drafts the Backend Architecture Contract for an Intent, per backend-architecture-contract-generation-rules.md. Use when asked to run the Backend Skill or draft a Backend contract during Mob Elaboration.
|
|
4
|
+
invoked_by: Mob Elaboration (Ceremony 1), Phases 2–5
|
|
5
|
+
output: file — nvaid/intents/<INTENT-ID>/contracts/backend-architecture-contract.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Backend Skill
|
|
9
|
+
|
|
10
|
+
Drafts the Backend Architecture Contract for an Intent, per
|
|
11
|
+
`{{AIDLC_ROOT}}/backend-architecture-contract-generation-rules.md` — the shapes every
|
|
12
|
+
consuming role (most often Frontend) reproduces verbatim rather than re-deriving.
|
|
13
|
+
|
|
14
|
+
## Steps
|
|
15
|
+
|
|
16
|
+
1. Confirm this Intent has at least one Unit touching the backend — an API/service layer,
|
|
17
|
+
an async worker, a data schema, or any server-side component — if none do, this
|
|
18
|
+
contract is not produced; state that plainly rather than leaving the file absent
|
|
19
|
+
with no explanation.
|
|
20
|
+
2. Write the full API Contract Exposed for any new or changed endpoint — request and
|
|
21
|
+
response shape, including error cases (4xx/5xx), not just the happy path.
|
|
22
|
+
3. Define every Shared Derivation Rule (a naming rule, an ID derivation) exactly once
|
|
23
|
+
here; never let a consuming role re-derive it independently.
|
|
24
|
+
4. State Data Model Touches — which tables/columns are written, and whether a migration
|
|
25
|
+
is needed.
|
|
26
|
+
5. List components touched (Design-Code Dictionary impact).
|
|
27
|
+
6. State what this contract deliberately excludes — anything the room discussed and
|
|
28
|
+
explicitly deferred, named rather than silently dropped.
|
|
29
|
+
7. Write `nvaid/intents/<INTENT-ID>/contracts/backend-architecture-contract.md`.
|
|
30
|
+
|
|
31
|
+
## Boundaries
|
|
32
|
+
|
|
33
|
+
- A draft, not a verdict — flag it awaiting the Backend Solutions Architect's Sign-Off;
|
|
34
|
+
never present it as final.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: customer-experience
|
|
3
|
+
description: Drafts the Customer Experience Contract for an Intent, per customer-experience-contract-generation-rules.md. Use when asked to run the Customer Experience Skill or draft a Customer Experience contract during Mob Elaboration.
|
|
4
|
+
invoked_by: Mob Elaboration (Ceremony 1), Phases 2–5
|
|
5
|
+
output: file — intents/<INTENT-ID>/contracts/customer-experience-contract.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Customer Experience Skill
|
|
9
|
+
|
|
10
|
+
Drafts the Customer Experience Contract for an Intent, per
|
|
11
|
+
`docs/templates/customer-experience-contract-generation-rules.md` — reconciling what the
|
|
12
|
+
room actually committed to against what `intent.md` originally asked for.
|
|
13
|
+
|
|
14
|
+
## Steps
|
|
15
|
+
|
|
16
|
+
1. Name explicitly where the final, technically-grounded shape narrowed, resolved, or
|
|
17
|
+
held unchanged against the original Intent — never silently absorbed.
|
|
18
|
+
2. Write the Final Acceptance Criteria: the Intent's Success Criteria, incorporating
|
|
19
|
+
what the other contracts actually committed to, not a verbatim restatement.
|
|
20
|
+
3. Tie "done" to a concrete validation scenario, never just "the code merged."
|
|
21
|
+
4. Write `intents/<INTENT-ID>/contracts/customer-experience-contract.md`.
|
|
22
|
+
|
|
23
|
+
## Boundaries
|
|
24
|
+
|
|
25
|
+
- A draft, not a verdict — flag it awaiting the Customer Experience Architect's
|
|
26
|
+
Sign-Off; never present it as final.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: daily-construction-update
|
|
3
|
+
description: Generates the daily three-question Construction digest (Completed / In Progress / Impediments) and publishes it to Wiki.js. Use when asked to run the Daily Construction Update Skill or produce today's construction update.
|
|
4
|
+
invoked_by: Mob Construction (Ceremony 2) — background, no meeting
|
|
5
|
+
output: link — a Wiki.js page, updated in place
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Daily Construction Update Skill
|
|
9
|
+
|
|
10
|
+
Replaces the Daily Standup with a generated report about Construction's ongoing work.
|
|
11
|
+
The work itself keeps no fixed cadence — that doesn't change. What runs daily is the
|
|
12
|
+
report, not the work.
|
|
13
|
+
|
|
14
|
+
## Steps
|
|
15
|
+
|
|
16
|
+
1. Query every in-flight Unit's ticket and gate status.
|
|
17
|
+
2. Compose the three-question digest, translated from the standup's own questions:
|
|
18
|
+
**Completed** (Units Merged, Intents that became Shippable since the last update),
|
|
19
|
+
**In progress** (current WIP — Design, Building, Gates), **Impediments** (stalled
|
|
20
|
+
Units, repeated gate failures, anything flagged as a Known Gap).
|
|
21
|
+
3. Publish to the team's Wiki.js page, updated in place — never a chat message that
|
|
22
|
+
scrolls out of reach.
|
|
23
|
+
|
|
24
|
+
## Boundaries
|
|
25
|
+
|
|
26
|
+
- Never block or gate a Unit's progress — only report state, the same way a daily sales
|
|
27
|
+
report doesn't stop the sales.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend
|
|
3
|
+
description: Drafts the Frontend Architecture Contract for an Intent, per frontend-architecture-contract-generation-rules.md. Use when asked to run the Frontend Skill or draft a Frontend contract during Mob Elaboration.
|
|
4
|
+
invoked_by: Mob Elaboration (Ceremony 1), Phases 2–5
|
|
5
|
+
output: file — intents/<INTENT-ID>/contracts/frontend-architecture-contract.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Frontend Skill
|
|
9
|
+
|
|
10
|
+
Drafts the Frontend Architecture Contract for an Intent, per
|
|
11
|
+
`docs/templates/frontend-architecture-contract-generation-rules.md` — consuming the
|
|
12
|
+
Backend contract's shapes verbatim rather than reinterpreting them.
|
|
13
|
+
|
|
14
|
+
## Steps
|
|
15
|
+
|
|
16
|
+
1. Name which Backend contract this one consumes, and confirm no field is locally
|
|
17
|
+
reinterpreted or renamed.
|
|
18
|
+
2. Write the concrete UI flow, tied to specific screens or components, not a general
|
|
19
|
+
feature description.
|
|
20
|
+
3. Point to the Backend contract's version of any shared derivation instead of
|
|
21
|
+
re-deriving it independently.
|
|
22
|
+
4. State Identity/Access implications explicitly, even when "none for this Intent" —
|
|
23
|
+
never left implicit.
|
|
24
|
+
5. List components touched (Design-Code Dictionary impact).
|
|
25
|
+
6. Write `intents/<INTENT-ID>/contracts/frontend-architecture-contract.md`.
|
|
26
|
+
|
|
27
|
+
## Boundaries
|
|
28
|
+
|
|
29
|
+
- A draft, not a verdict — flag it awaiting the Frontend Architect's Sign-Off; never
|
|
30
|
+
present it as final.
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github
|
|
3
|
+
description: Branches (feature/bugfix/hotfix/intent/chore, mapped to ticket or Intent IDs, or a slug for repo tooling), commits, opens pull requests, checks CI, self-reviews before requesting human review, iterates on review comments, and hands off to manual merge approval, following this repo's master/develop Git Flow. Use when asked to run the GitHub Skill, start work on a ticket or an Intent, push a Unit's work, do repo tooling/config work, open or update a pull request, address review comments, or check CI status.
|
|
4
|
+
invoked_by: Mob Construction (Ceremony 2), and Mob Elaboration (Ceremony 1) for its own intent/ branches
|
|
5
|
+
output: link — a GitHub pull request
|
|
6
|
+
version: 5.0
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# GitHub Skill
|
|
10
|
+
|
|
11
|
+
The procedure Mob Construction invokes to touch the repository — the same steps, every
|
|
12
|
+
Unit, every time. Covers the full loop: branch → commit → PR → self-review → human
|
|
13
|
+
review → iterate → manual merge. This Skill never merges anything itself.
|
|
14
|
+
|
|
15
|
+
## Branch model (Git Flow)
|
|
16
|
+
|
|
17
|
+
- **`master`** — the default, production branch. Nothing commits here directly; it only
|
|
18
|
+
moves forward via an approved release merge from `develop`, or a hotfix.
|
|
19
|
+
- **`develop`** — the integration branch. Every feature and bugfix branch is cut from
|
|
20
|
+
here and merges back here.
|
|
21
|
+
- **`feature/<story-id>`** — new capability, cut from `develop`. `<story-id>` is the
|
|
22
|
+
GitHub Project story ID this Unit's ticket carries — e.g. `feature/142`. Add a short
|
|
23
|
+
slug if the ID alone reads as opaque in a long branch list: `feature/142-branch-override`.
|
|
24
|
+
- **`bugfix/<bug-id>`** — fixes a Bug-classified ticket found before release, cut from
|
|
25
|
+
`develop`, same ID convention as `feature/`.
|
|
26
|
+
- **`hotfix/<slug>`** — an emergency fix to what's already in production, cut from
|
|
27
|
+
`master` directly (the one exception to "always branch from develop"), merged back
|
|
28
|
+
into **both** `master` and `develop` so the fix isn't lost on the next release. No
|
|
29
|
+
Unit exists yet when this starts — run the Unit Breakdown Skill retroactively to log
|
|
30
|
+
one once the fix is in.
|
|
31
|
+
- **`intent/<intent-id>-<slug>`** — Mob Elaboration's own output, cut from `develop`:
|
|
32
|
+
`intent.md` itself, `unit-breakdown.md`, and the per-role `contracts/` files. Not a
|
|
33
|
+
Construction branch type — nothing here is code, so treating it as `feature/` would
|
|
34
|
+
misdescribe what actually changed and would demand a Story ID that doesn't exist yet
|
|
35
|
+
(a Unit of Work isn't decided until Elaboration produces `unit-breakdown.md` in the
|
|
36
|
+
first place). Review on this branch's PR is the CX Architect (or relevant Architect)
|
|
37
|
+
reading the artifact for content, not CI verifying code — the gates still run, but
|
|
38
|
+
pass on a markdown-only diff as a no-op, not as a meaningful check of anything.
|
|
39
|
+
Example: `intent/001-login-navigation-shell`.
|
|
40
|
+
- **`chore/<slug>`** — repo tooling, config, or meta work with no application code and
|
|
41
|
+
no Unit of Work behind it: a new Skill, a CI/CD workflow change, a convention update
|
|
42
|
+
(this branch type's own addition was one). Cut from `develop`, same as `feature`/
|
|
43
|
+
`bugfix`. This was already the de facto convention across every tooling PR in this
|
|
44
|
+
repo before being written down here — `chore/ci-setup`, `chore/verify-bot-identity`,
|
|
45
|
+
`chore/manual-deploy-trigger`, `chore/pr-review-skill`, `chore/pr-title-convention`,
|
|
46
|
+
`chore/reconcile-spec-planning`, and others all predate this entry. This documents
|
|
47
|
+
existing practice, not a new rule nobody's followed yet.
|
|
48
|
+
|
|
49
|
+
## Steps
|
|
50
|
+
|
|
51
|
+
### 1. Branch
|
|
52
|
+
|
|
53
|
+
Cut the branch per the model above, named by type and ticket ID (or Intent ID, for
|
|
54
|
+
`intent/`) so what's happening is visible in the branch list itself. Never commit
|
|
55
|
+
directly to `master` or `develop`.
|
|
56
|
+
|
|
57
|
+
### 2. Commit
|
|
58
|
+
|
|
59
|
+
One commit per meaningful step, not one giant diff, using Conventional Commits scoped
|
|
60
|
+
to the Unit:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
<type>(<unit-id>): <what changed, imperative mood>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`<type>` is `feat`, `fix`, `refactor`, `test`, or `chore`. Example:
|
|
67
|
+
`feat(unit-004-02): add branch-override endpoint with slot-limit check`.
|
|
68
|
+
|
|
69
|
+
On an `intent/` branch there's no Unit ID yet to scope to — use `docs: draft
|
|
70
|
+
INTENT-XXX — <short title>` instead (no parenthesized scope). On a `chore/` branch
|
|
71
|
+
there's no Unit ID either, since there's no Unit of Work behind tooling/config changes —
|
|
72
|
+
use a plain `chore: <what changed, imperative mood>`, no parenthesized scope.
|
|
73
|
+
|
|
74
|
+
### 3. Open the pull request
|
|
75
|
+
|
|
76
|
+
Target `develop` (or `master` for a `hotfix/`). The PR body links the Unit's design doc
|
|
77
|
+
and its Quality Architecture Contract, and lists which Acceptance Criteria this PR
|
|
78
|
+
closes. Request the owning Architect (the human) as reviewer explicitly — never leave
|
|
79
|
+
the reviewer field empty.
|
|
80
|
+
|
|
81
|
+
**PR title format** — bracket tags, not a Conventional Commit prefix. Commits keep the
|
|
82
|
+
`<type>(<unit-id>):` style from step 2; the PR *title* uses this readable form instead:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
[TYPE][TARGET][TICKET] <plain readable summary>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
- **`[TYPE]`** — the work type, mapped from the commit type:
|
|
89
|
+
`feat → [FEATURE]`, `fix → [FIX]`, `chore → [CHORE]`, `refactor → [REFACTOR]`,
|
|
90
|
+
`test → [TEST]`, `docs → [DOCS]`.
|
|
91
|
+
- **`[TARGET]`** — the base branch this PR merges into:
|
|
92
|
+
`develop → [DEV]`, UAT branch → `[UAT]`, `master → [PROD]`.
|
|
93
|
+
- **`[TICKET]`** — the ticket ID this Unit carries: the `UNIT-XXX-YY` Story/Bug
|
|
94
|
+
(e.g. `[UNIT-004-02]`), or the `INTENT-XXX` Epic when the PR spans the whole Intent.
|
|
95
|
+
These are the IDs from `{{AIDLC_ROOT}}/ISSUE-TRACKER-TEMPLATE.md`, mirrored into the GitHub
|
|
96
|
+
Project. **Omit this tag entirely** when the change has no ticket (e.g. repo tooling or
|
|
97
|
+
config) — never write an empty `[]`.
|
|
98
|
+
- **`<summary>`** — a plain, human-readable sentence under ~70 chars. No `type:` prefix.
|
|
99
|
+
|
|
100
|
+
Examples:
|
|
101
|
+
- `[FEATURE][DEV][UNIT-004-01] Add branch-override selector to the environment form`
|
|
102
|
+
- `[FIX][PROD][UNIT-004-02] Correct username derivation collision`
|
|
103
|
+
- `[CHORE][DEV] Replicate Claude skills to Kiro` *(no ticket → no third tag)*
|
|
104
|
+
|
|
105
|
+
### 4. Self-review before asking for human time
|
|
106
|
+
|
|
107
|
+
Before flagging for human review, re-read the diff once against the Unit's own
|
|
108
|
+
Acceptance Criteria and the Quality Architecture Contract's Required Test Coverage
|
|
109
|
+
table. Catch what's catchable here — a missing negative-path test, an unhandled error
|
|
110
|
+
case — so the human's review time goes to judgment calls, not things this Skill could
|
|
111
|
+
have caught itself.
|
|
112
|
+
|
|
113
|
+
### 5. Poll CI, self-correct on failure
|
|
114
|
+
|
|
115
|
+
On a Guardrail Gate failure, self-correct and push again. Never ask for review while a
|
|
116
|
+
gate is red.
|
|
117
|
+
|
|
118
|
+
### 6. Iterate on review comments
|
|
119
|
+
|
|
120
|
+
Once the human leaves review comments (`gh pr view <n> --comments` or the GitHub MCP
|
|
121
|
+
server's structured comment tools, if configured):
|
|
122
|
+
|
|
123
|
+
1. Read every open thread before changing anything — don't react comment-by-comment in
|
|
124
|
+
isolation when they interact.
|
|
125
|
+
2. Address each with a targeted commit, not a rewrite of the whole diff.
|
|
126
|
+
3. Reply to each thread stating what changed, then re-request review. Never mark a
|
|
127
|
+
thread resolved that this Skill left open-ended or partially addressed.
|
|
128
|
+
|
|
129
|
+
### 7. Hand off to Merge Approval
|
|
130
|
+
|
|
131
|
+
Once review is approved and every gate is green, flag the PR ready. Stop there. For a
|
|
132
|
+
`hotfix/`, note explicitly in the PR that a second merge into `develop` is still needed
|
|
133
|
+
after `master` receives this one — never assume the human will remember to ask for it.
|
|
134
|
+
|
|
135
|
+
## Boundaries
|
|
136
|
+
|
|
137
|
+
- Never merge the pull request, and never approve its own PR — Merge Approval is a
|
|
138
|
+
human gate this Skill can reach but not cross. (Repo branch protection enforces this
|
|
139
|
+
independently of this instruction.)
|
|
140
|
+
- Never commit directly to `master` or `develop` — always through a typed branch, even
|
|
141
|
+
for a one-line fix.
|
|
142
|
+
- Never resolve a review thread on the human's behalf.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pr-review
|
|
3
|
+
description: Evaluates an open pull request against this repo's established conventions (branch type, base branch, commit/PR-title format, CI gate status, path and file-shape conventions, PROJECT-RULES.md) and recommends one of three outcomes -- approve and merge, close and delete, or request changes -- with reasoning for each check. Never merges, approves, closes, deletes a branch, or submits a review itself; the human takes the actual action. Use when asked to review a pull request, evaluate a PR, or decide whether to approve, close, or request changes on one.
|
|
4
|
+
invoked_by: On demand, by request -- "review PR #N" or "run the PR Review Skill on PR #N"
|
|
5
|
+
output: a recommendation report to the conversation, plus a suggested review-comment draft. No file written, no GitHub action taken.
|
|
6
|
+
version: 1.0
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# PR Review Skill
|
|
10
|
+
|
|
11
|
+
Reads a pull request against this repo's *current* conventions and recommends one of
|
|
12
|
+
three outcomes. The rules it checks against are never hardcoded here — they live in
|
|
13
|
+
`.claude/skills/github/SKILL.md` and `nvaid/PROJECT-RULES.md`, read fresh every
|
|
14
|
+
time, so this Skill can't drift out of sync with the conventions as they evolve.
|
|
15
|
+
|
|
16
|
+
**This Skill never takes the action it recommends.** It doesn't call `gh pr merge`,
|
|
17
|
+
`gh pr close`, `gh pr review --approve`, `gh pr review --request-changes`, or delete a
|
|
18
|
+
branch. It reports a recommendation and reasoning; a human reads it and acts.
|
|
19
|
+
|
|
20
|
+
## Steps
|
|
21
|
+
|
|
22
|
+
### 1. Gather the facts
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
gh pr view $ARGUMENTS --json title,body,headRefName,baseRefName,author,state,mergeable,reviewDecision,statusCheckRollup,files
|
|
26
|
+
gh pr diff $ARGUMENTS
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Also re-read `.claude/skills/github/SKILL.md` (this repo's copy) and
|
|
30
|
+
`nvaid/PROJECT-RULES.md` before judging anything — the checks below are applied
|
|
31
|
+
against whatever those files currently say, not a memorized version of them.
|
|
32
|
+
|
|
33
|
+
### 2. Check branch type against actual content
|
|
34
|
+
|
|
35
|
+
- Does `headRefName` match one of the branch types `github/SKILL.md` currently defines
|
|
36
|
+
(`feature/<story-id>`, `bugfix/<bug-id>`, `hotfix/<slug>`, `intent/<intent-id>-slug`,
|
|
37
|
+
or whatever it's since been extended to)?
|
|
38
|
+
- Does the branch **type** actually match what changed? Code changes on an `intent/`
|
|
39
|
+
branch, or a pure-documentation Elaboration artifact on a `feature/` branch, is a
|
|
40
|
+
category error. A category error here means the PR is built on the wrong foundation
|
|
41
|
+
and can't be fixed by pushing more commits to the same branch.
|
|
42
|
+
|
|
43
|
+
### 3. Check base branch
|
|
44
|
+
|
|
45
|
+
`develop` in almost every case; `master` only for a declared `hotfix/`. Anything else
|
|
46
|
+
is wrong regardless of how good the content is.
|
|
47
|
+
|
|
48
|
+
### 4. Check CI status
|
|
49
|
+
|
|
50
|
+
Every entry in `statusCheckRollup` must be a pass. Any `pending` or `failing` gate means
|
|
51
|
+
this isn't ready for a merge/close/request-changes decision yet at all — say so plainly
|
|
52
|
+
rather than forcing one of the three outcomes prematurely.
|
|
53
|
+
|
|
54
|
+
### 5. Check commit and PR-title format
|
|
55
|
+
|
|
56
|
+
Against whatever `github/SKILL.md` currently specifies (Conventional Commits for commit
|
|
57
|
+
messages; the PR title format, once one is defined). Stray artifacts from an unrelated
|
|
58
|
+
project or template — a ticket ID, a company name, placeholder text that was clearly
|
|
59
|
+
never adapted to this project — are a flag here even if the format is otherwise followed
|
|
60
|
+
correctly.
|
|
61
|
+
|
|
62
|
+
### 6. Check path and file-shape conventions
|
|
63
|
+
|
|
64
|
+
Compare every changed/added file's path against this repo's established shape
|
|
65
|
+
(`nvaid/intents/INTENT-XXX-slug/`, `.claude/skills/<name>/SKILL.md`, `deploy/`,
|
|
66
|
+
etc. — read from `PROJECT-RULES.md` and the existing repo tree, not assumed). A new
|
|
67
|
+
top-level convention appearing alongside an existing one for the same concept (two
|
|
68
|
+
different intent-tracking shapes, two different daily-report mechanisms) is a
|
|
69
|
+
duplication flag, not something to wave through because each one is internally
|
|
70
|
+
consistent.
|
|
71
|
+
|
|
72
|
+
### 7. Check for semantic duplication
|
|
73
|
+
|
|
74
|
+
Does this PR introduce a Skill, file, or concept that already exists under a different
|
|
75
|
+
name? Read the existing `.claude/skills/*/SKILL.md` descriptions and compare — a new
|
|
76
|
+
Skill whose description overlaps meaningfully with an existing one is worth flagging
|
|
77
|
+
even if no path literally collides.
|
|
78
|
+
|
|
79
|
+
### 8. Check the PR description itself
|
|
80
|
+
|
|
81
|
+
Per `github/SKILL.md` Step 3: does the body link the relevant design doc / contract and
|
|
82
|
+
name the Acceptance Criteria it closes, where applicable? A PR with no explanation of
|
|
83
|
+
what changed or why is weaker evidence for a decision, not a blocker on its own.
|
|
84
|
+
|
|
85
|
+
### 9. Synthesize one of three recommendations
|
|
86
|
+
|
|
87
|
+
- **Approve and merge** — every check above passes; nothing outstanding.
|
|
88
|
+
- **Close and delete** — a foundational defect (wrong branch type/category error, or
|
|
89
|
+
fully superseded by other already-merged work) that pushing more commits can't fix.
|
|
90
|
+
The right move is recutting on a corrected branch, not iterating in place.
|
|
91
|
+
- **Request changes** — the branch and approach are sound, but something specific and
|
|
92
|
+
fixable is wrong (a stray example, a missing description detail, a failing test to
|
|
93
|
+
correct). Iterating on the *same* branch is the right move here, unlike Close.
|
|
94
|
+
|
|
95
|
+
Output, in this order:
|
|
96
|
+
|
|
97
|
+
1. **Recommendation** — one of the three, in bold.
|
|
98
|
+
2. **Brief justification** — one sentence, the single core reason driving the verdict.
|
|
99
|
+
Not a summary of every check — the one fact that would change the verdict if it
|
|
100
|
+
weren't true.
|
|
101
|
+
3. **Reasoning per check** (pass / fail / flagged) — the full breakdown backing up the
|
|
102
|
+
one-line justification, so the human can see exactly what it's based on, not just
|
|
103
|
+
take the verdict on faith.
|
|
104
|
+
|
|
105
|
+
### 10. Draft a suggested review comment
|
|
106
|
+
|
|
107
|
+
Write the comment the human could paste in as-is, or edit — summarizing the finding(s)
|
|
108
|
+
driving the recommendation. Never post it — output it in the conversation only.
|
|
109
|
+
|
|
110
|
+
## Boundaries
|
|
111
|
+
|
|
112
|
+
- Never run `gh pr merge`, `gh pr close`, `gh pr review`, or delete a branch. Report
|
|
113
|
+
and recommend; the human's own review submission and merge/close click is the action.
|
|
114
|
+
- Never treat "CI is green" alone as sufficient for Approve — CI verifies code
|
|
115
|
+
correctness, not convention compliance, path correctness, or duplication, which are
|
|
116
|
+
exactly what this Skill exists to catch that CI can't.
|
|
117
|
+
- Never soften a Close-and-delete finding into a Request-changes one to avoid
|
|
118
|
+
recommending a branch be redone — a category error doesn't get smaller by wishing it
|
|
119
|
+
were a smaller fix.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-ticketing
|
|
3
|
+
description: Creates and updates Epics, Stories, and Bugs in Jira or GitHub Projects per ISSUE-TRACKER-TEMPLATE.md. Use when asked to run the Project Ticketing Skill, create tickets from a Unit Breakdown, or sync ticket status with Construction progress.
|
|
4
|
+
invoked_by: Mob Elaboration (Ceremony 1), Mob Construction (Ceremony 2)
|
|
5
|
+
output: link — a Jira or GitHub Projects ticket
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Project Ticketing Skill
|
|
9
|
+
|
|
10
|
+
Creates and updates Epics, Stories, and Bugs per `docs/templates/ISSUE-TRACKER-TEMPLATE.md`
|
|
11
|
+
— so ticket shape never drifts from one Intent to the next.
|
|
12
|
+
|
|
13
|
+
## Steps
|
|
14
|
+
|
|
15
|
+
1. On Unit Breakdown (Mob Elaboration Phase 5), create one Story or Bug per Unit,
|
|
16
|
+
classified per `docs/templates/unit-breakdown-rules.md` §3.
|
|
17
|
+
2. Attach each ticket's Acceptance Criteria verbatim from the Unit's own design doc —
|
|
18
|
+
never re-worded independently.
|
|
19
|
+
3. As Mob Construction moves a Unit through Design → Building → Gates → Merged, update
|
|
20
|
+
ticket status to match. The ticket reflects the repo, not the other way round.
|
|
21
|
+
4. Once every Unit under an Epic reaches Merged, roll the Epic to "Intent Complete."
|
|
22
|
+
|
|
23
|
+
## Boundaries
|
|
24
|
+
|
|
25
|
+
- Never assign a Story or Epic to a Release Checkpoint — that decision belongs to the
|
|
26
|
+
Release Plan Skill, made at Release Planning Day, not pre-empted here.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: quality
|
|
3
|
+
description: Drafts the Quality Architecture Contract for an Intent, per quality-architecture-contract-generation-rules.md. Use when asked to run the Quality Skill or draft a Quality contract during Mob Elaboration.
|
|
4
|
+
invoked_by: Mob Elaboration (Ceremony 1), Phases 2–5
|
|
5
|
+
output: file — intents/<INTENT-ID>/contracts/quality-architecture-contract.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Quality Skill
|
|
9
|
+
|
|
10
|
+
Drafts the Quality Architecture Contract for an Intent, per
|
|
11
|
+
`docs/templates/quality-architecture-contract-generation-rules.md` — the Required Test
|
|
12
|
+
Coverage table the Unit Test and Integration Test gates run against.
|
|
13
|
+
|
|
14
|
+
## Steps
|
|
15
|
+
|
|
16
|
+
1. Build the Required Test Coverage table — one row per scenario, classified Happy
|
|
17
|
+
Path / Negative Path / Edge Case.
|
|
18
|
+
2. Trace every row to one of the owning Unit's stated Acceptance Criteria, and confirm
|
|
19
|
+
every Acceptance Criterion has at least one covering row — both directions checked.
|
|
20
|
+
3. State which existing SRS NFRs this Intent's Units are held to, beyond the standing
|
|
21
|
+
baseline; say "none beyond baseline" explicitly when true.
|
|
22
|
+
4. Log any Known Gap the room consciously accepted, flagged rather than dropped.
|
|
23
|
+
5. Write `intents/<INTENT-ID>/contracts/quality-architecture-contract.md`.
|
|
24
|
+
|
|
25
|
+
## Boundaries
|
|
26
|
+
|
|
27
|
+
- Never define Solution-Specific gates (Build, Code Coverage, Code Quality,
|
|
28
|
+
Reusability, Regression Test, SAST) — those are fixed in `docs/templates/PROJECT-RULES.md`
|
|
29
|
+
§5.2, not something any Intent's contract opts into or out of.
|
|
30
|
+
- A draft, not a verdict — flag it awaiting the Quality Architect's Sign-Off; never
|
|
31
|
+
present it as final.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: r3-analytics
|
|
3
|
+
description: Gathers checkpoint-to-checkpoint performance indicators (lead time, gate pass rate, escaped defects, Known Gaps) for R3's Retrospective step. Use when asked to run the R3 Analytics Skill or prepare Retrospective data after a Release Checkpoint ships.
|
|
4
|
+
invoked_by: R3 (Ceremony 4), triggered by a Release Checkpoint shipping
|
|
5
|
+
output: file — process/retro-<checkpoint>.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# R3 Analytics Skill
|
|
9
|
+
|
|
10
|
+
Gathers the checkpoint-to-checkpoint performance indicators the Retrospective step
|
|
11
|
+
looks at, so "what does the data actually say" has an answer ready the moment R3 starts.
|
|
12
|
+
|
|
13
|
+
## Steps
|
|
14
|
+
|
|
15
|
+
1. On a Release Checkpoint shipping, pull every Intent it bundled and their Units.
|
|
16
|
+
2. Compute lead time (Intent opened → Shippable), Guardrail Gate pass rate, and any
|
|
17
|
+
escaped defects logged against this checkpoint's Units.
|
|
18
|
+
3. Roll up every Known Gap logged across this checkpoint's Quality Architecture
|
|
19
|
+
Contracts — a gap doesn't disappear just because the checkpoint shipped.
|
|
20
|
+
4. Draft `process/retro-<checkpoint>.md` with the above, structured for the room to read
|
|
21
|
+
before proposing Regenerate edits.
|
|
22
|
+
|
|
23
|
+
## Boundaries
|
|
24
|
+
|
|
25
|
+
- Report what happened; propose nothing. Which rule files actually change (Regenerate)
|
|
26
|
+
is the room's call, never this Skill's.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release-plan
|
|
3
|
+
description: Drafts the Release Planning Day deployment plan — which Intents are Shippable, their cross-Intent dependencies, and each one's Customer Experience targets. Use when asked to run the Release Plan Skill or prepare for Release Planning Day.
|
|
4
|
+
invoked_by: Release Planning Day (Ceremony 3)
|
|
5
|
+
output: file — checkpoints/<checkpoint-name>/plan.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Release Plan Skill
|
|
9
|
+
|
|
10
|
+
Drafts the Release Planning Day deployment plan for the room to review and approve —
|
|
11
|
+
never to finalize alone.
|
|
12
|
+
|
|
13
|
+
## Steps
|
|
14
|
+
|
|
15
|
+
1. Pull every Intent currently at "Intent Complete" (every Unit Merged) and propose
|
|
16
|
+
which ones ship together in this Release Checkpoint.
|
|
17
|
+
2. Surface cross-Intent dependencies — an Intent that reads another's output, a shared
|
|
18
|
+
schema change.
|
|
19
|
+
3. Flag contradictions between Intents built independently — conflicting API shapes,
|
|
20
|
+
overlapping ownership.
|
|
21
|
+
4. Draft `checkpoints/<checkpoint-name>/plan.md`, including each Intent's Customer
|
|
22
|
+
Experience targets.
|
|
23
|
+
|
|
24
|
+
## Boundaries
|
|
25
|
+
|
|
26
|
+
- Draft the plan; the room decides. Nothing in `plan.md` is final until Release Planning
|
|
27
|
+
Day signs off on it.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: solutions
|
|
3
|
+
description: Drafts the Solutions Architecture Contract for an Intent, per solutions-architecture-contract-generation-rules.md. Use when asked to run the Solutions Skill or draft a Solutions contract during Mob Elaboration.
|
|
4
|
+
invoked_by: Mob Elaboration (Ceremony 1), Phases 2–5
|
|
5
|
+
output: file — intents/<INTENT-ID>/contracts/solutions-architecture-contract.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Solutions Skill
|
|
9
|
+
|
|
10
|
+
Drafts the Solutions Architecture Contract for an Intent, per
|
|
11
|
+
`docs/templates/solutions-architecture-contract-generation-rules.md` — the cross-role
|
|
12
|
+
boundary and consistency check every other contract this session has to fit inside.
|
|
13
|
+
|
|
14
|
+
## Steps
|
|
15
|
+
|
|
16
|
+
1. Assess whether this Intent introduces a new system container, crosses an SRS System
|
|
17
|
+
Container boundary, or needs a new ADR — state the answer even when it's "no" on
|
|
18
|
+
every count.
|
|
19
|
+
2. State explicitly what this Intent is and isn't allowed to touch.
|
|
20
|
+
3. Flag any unsupervised-action surface `docs/templates/PROJECT-RULES.md` §7 doesn't
|
|
21
|
+
already cover.
|
|
22
|
+
4. Cross-check the other contracts drafted this session for contradictions — the
|
|
23
|
+
Consistency Gate, recorded in writing.
|
|
24
|
+
5. Write `intents/<INTENT-ID>/contracts/solutions-architecture-contract.md`.
|
|
25
|
+
|
|
26
|
+
## Boundaries
|
|
27
|
+
|
|
28
|
+
- A draft, not a verdict — flag it awaiting the Solutions Architect's Sign-Off; never
|
|
29
|
+
present it as final.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unit-breakdown
|
|
3
|
+
description: Cuts an Intent into Units of Work, each with its own Acceptance Criteria, per unit-breakdown-rules.md. Use when asked to run the Unit Breakdown Skill, break down an Intent into Units, or produce a Unit Breakdown during Mob Elaboration Phase 5.
|
|
4
|
+
invoked_by: Mob Elaboration (Ceremony 1), Phase 5
|
|
5
|
+
output: file — intents/<INTENT-ID>/unit-breakdown.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Unit Breakdown Skill
|
|
9
|
+
|
|
10
|
+
Cuts an Intent into Units of Work small enough to build and approve independently —
|
|
11
|
+
a first-cut proposal the room then critiques, not the decomposition of record.
|
|
12
|
+
|
|
13
|
+
## Steps
|
|
14
|
+
|
|
15
|
+
1. Read the Intent file (`intents/<INTENT-ID>/intent.md`) and its stated success
|
|
16
|
+
criteria.
|
|
17
|
+
2. Propose a decomposition into Units, each with its own Acceptance Criteria narrowed
|
|
18
|
+
from the Intent's success criteria, per `docs/templates/unit-breakdown-rules.md` §2.
|
|
19
|
+
3. Classify each Unit as a Story or Bug (§3), and size it per the file's decomposition
|
|
20
|
+
heuristics (§4).
|
|
21
|
+
4. Number Units per §5.
|
|
22
|
+
5. Write `intents/<INTENT-ID>/unit-breakdown.md` — the contract index every
|
|
23
|
+
Architecture Contract Skill downstream reads from.
|
|
24
|
+
|
|
25
|
+
## Boundaries
|
|
26
|
+
|
|
27
|
+
- This is a proposal, not the decomposition of record. Mob Elaboration Phase 3
|
|
28
|
+
("Mark it up alone") and Phase 4 ("Negotiate live") are where the room actually owns
|
|
29
|
+
the cut — flag this file as a draft awaiting that review, never as final.
|
|
30
|
+
- Read `docs/templates/unit-breakdown-rules.md` in full before drafting; don't rely on
|
|
31
|
+
this summary alone for the numbering and classification rules.
|