@rasensio/aidlc-content 1.15.2 → 1.17.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rasensio/aidlc-content",
3
- "version": "1.15.2",
3
+ "version": "1.17.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -16,6 +16,7 @@
16
16
  "skills/",
17
17
  "templates/",
18
18
  "guidance/",
19
+ "packs/",
19
20
  "capabilities/",
20
21
  "phases/",
21
22
  "tutorials/",
@@ -0,0 +1,261 @@
1
+ # SOC 2 Trust Services Criteria — the Common Criteria only.
2
+ #
3
+ # `kind` says what the AIDLC artifact trail can establish:
4
+ #
5
+ # evidenced the trail genuinely demonstrates the control
6
+ # checked-only the control operates over a running system, so no document
7
+ # evidences it; the pack supplies a fail condition an agent
8
+ # applies, and the trail records only that the check happened
9
+ #
10
+ # `check_kind` says who applies the fail condition: `mechanical` controls carry a
11
+ # pattern the diff check evaluates itself, `agent` controls need a review session.
12
+ #
13
+ # Exactly one control is `evidenced`. Six are `checked-only`. Twenty-six Common
14
+ # Criteria points are not covered at all, each listed below with its reason.
15
+ #
16
+ # `references` points at the guidance layer whose rule a control restates, so the
17
+ # duplication is traceable and a later edit to that layer can be found. The pack's
18
+ # own constraint layer does not restate those rules.
19
+
20
+ controls:
21
+ # -------------------------------------------------------------------------
22
+ # Evidenced: the lifecycle trail is real evidence for this control.
23
+ # -------------------------------------------------------------------------
24
+ - id: CC8.1
25
+ kind: evidenced
26
+ check_kind: agent
27
+ severity: critical
28
+ phases:
29
+ - requirements
30
+ - design
31
+ - implementation
32
+ - testing
33
+ - deployment
34
+ requires: >-
35
+ The entity authorizes, designs, develops, configures, documents, tests,
36
+ approves and implements changes to infrastructure, data, software and
37
+ procedures to meet its objectives.
38
+ look_at: >-
39
+ requirements.md for numbered acceptance criteria; design.md for the design
40
+ the change was built to; tasks.md for the link from each task to the criteria
41
+ it satisfies; the review findings files; transitions.log for the recorded
42
+ phase progression; and deployment-record.md for the release.
43
+ fails_when: >-
44
+ A change reached deployment without an artifact recording each of
45
+ authorization, design, test and approval — that is, any of requirements.md,
46
+ design.md, a completed review findings file, test-results.md or
47
+ deployment-record.md is absent or names no outcome for the change.
48
+ evidence_artifact: design.md
49
+
50
+ # -------------------------------------------------------------------------
51
+ # Checked-only: these operate over a running system. The pack gives you a fail
52
+ # condition to apply; the trail records that you applied it, never that the
53
+ # control operates.
54
+ # -------------------------------------------------------------------------
55
+ - id: CC6.1
56
+ kind: checked-only
57
+ check_kind: agent
58
+ severity: critical
59
+ phases:
60
+ - design
61
+ - implementation
62
+ requires: >-
63
+ The entity implements logical access security software, infrastructure and
64
+ architectures over protected information assets to meet its objectives.
65
+ look_at: >-
66
+ Request handlers and data-access code in the change: where authorization is
67
+ decided, and whether any read or write of a protected record can be reached
68
+ without that decision. Also any credential handling.
69
+ fails_when: >-
70
+ A code path reads or writes a protected record without an authorization check
71
+ on the same path, or a credential, key or token appears in source.
72
+ references: secure-defaults#authentication-and-authorization
73
+
74
+ - id: CC6.6
75
+ kind: checked-only
76
+ check_kind: agent
77
+ severity: major
78
+ phases:
79
+ - design
80
+ - implementation
81
+ requires: >-
82
+ The entity implements logical access security measures to protect against
83
+ threats from sources outside its system boundaries.
84
+ look_at: >-
85
+ Every place external input crosses into the system in this change: HTTP
86
+ handlers, message consumers, file uploads, and any parser reached from them.
87
+ fails_when: >-
88
+ External input reaches a parser, query, filesystem path or command without
89
+ validation at the boundary, or an authentication endpoint has no rate limit.
90
+ references: secure-defaults#input-validation
91
+
92
+ - id: CC6.7
93
+ kind: checked-only
94
+ check_kind: mechanical
95
+ severity: major
96
+ phases:
97
+ - implementation
98
+ - deployment
99
+ requires: >-
100
+ The entity restricts the transmission, movement and removal of information to
101
+ authorized internal and external users and processes, and protects it during
102
+ transmission, movement or removal.
103
+ look_at: Network client configuration and request targets in the change.
104
+ fails_when: >-
105
+ An added line targets a plain-HTTP URL, so protected information could be
106
+ transmitted without transport encryption.
107
+ pattern: "http://(?!localhost|127\\.0\\.0\\.1|\\[::1\\])"
108
+ references: secure-defaults#transport-and-data-protection
109
+
110
+ - id: CC6.8
111
+ kind: checked-only
112
+ check_kind: agent
113
+ severity: major
114
+ phases:
115
+ - implementation
116
+ - deployment
117
+ requires: >-
118
+ The entity implements controls to prevent or detect and act upon the
119
+ introduction of unauthorized or malicious software.
120
+ look_at: >-
121
+ Dependency manifests and lockfiles in the change, and any script that fetches
122
+ and executes code at build or run time.
123
+ fails_when: >-
124
+ A dependency is added without a lockfile entry, a dependency range is
125
+ unpinned, or a script pipes a downloaded payload straight into a shell.
126
+ references: secure-defaults#dependency-security
127
+
128
+ - id: CC7.1
129
+ kind: checked-only
130
+ check_kind: agent
131
+ severity: major
132
+ phases:
133
+ - implementation
134
+ - deployment
135
+ requires: >-
136
+ The entity uses detection and monitoring procedures to identify changes to
137
+ configurations that result in the introduction of new vulnerabilities, and
138
+ susceptibilities to newly discovered vulnerabilities.
139
+ look_at: >-
140
+ Configuration and infrastructure changes in the diff, and whether a
141
+ vulnerability audit runs over the dependency set.
142
+ fails_when: >-
143
+ A configuration change relaxes a security setting with no stated reason, or the
144
+ project has no dependency vulnerability audit in its build or CI.
145
+ references: secure-defaults#dependency-security
146
+
147
+ - id: CC7.2
148
+ kind: checked-only
149
+ check_kind: agent
150
+ severity: major
151
+ phases:
152
+ - implementation
153
+ - deployment
154
+ - maintenance
155
+ requires: >-
156
+ The entity monitors system components and the operation of those components
157
+ for anomalies indicative of malicious acts, natural disasters and errors
158
+ affecting the entity's ability to meet its objectives.
159
+ look_at: >-
160
+ Error handling and logging in the change: whether failures are recorded with
161
+ enough context to notice an anomaly, and whether anything sensitive is logged.
162
+ fails_when: >-
163
+ A failure path swallows an error without logging it, a log statement records a
164
+ secret or personal data, or a user-facing error exposes a stack trace or
165
+ internal path.
166
+ references: secure-defaults#error-handling-and-logging
167
+
168
+ # ---------------------------------------------------------------------------
169
+ # Not covered. Twenty-six of the thirty-three Common Criteria points.
170
+ #
171
+ # organizational the control is about the entity's governance, people or
172
+ # processes; a tool that reads code cannot speak to it
173
+ # not-yet-built a code lifecycle could say something here, and this pack does
174
+ # not yet
175
+ # ---------------------------------------------------------------------------
176
+ excluded:
177
+ # CC1 — control environment. Board oversight, integrity and ethics, competence.
178
+ - id: CC1.1
179
+ reason: organizational
180
+ - id: CC1.2
181
+ reason: organizational
182
+ - id: CC1.3
183
+ reason: organizational
184
+ - id: CC1.4
185
+ reason: organizational
186
+ - id: CC1.5
187
+ reason: organizational
188
+
189
+ # CC2 — communication and information.
190
+ - id: CC2.1
191
+ reason: organizational
192
+ - id: CC2.2
193
+ reason: organizational
194
+ - id: CC2.3
195
+ reason: organizational
196
+
197
+ # CC3 — risk assessment.
198
+ - id: CC3.1
199
+ reason: organizational
200
+ - id: CC3.2
201
+ reason: organizational
202
+ - id: CC3.3
203
+ reason: organizational
204
+ - id: CC3.4
205
+ reason: organizational
206
+
207
+ # CC4 — monitoring activities.
208
+ - id: CC4.1
209
+ reason: organizational
210
+ - id: CC4.2
211
+ reason: organizational
212
+
213
+ # CC5 — control activities.
214
+ - id: CC5.1
215
+ reason: organizational
216
+ - id: CC5.2
217
+ reason: organizational
218
+ - id: CC5.3
219
+ reason: organizational
220
+
221
+ # CC6 — the access-management points, as distinct from the code-facing ones above.
222
+ - id: CC6.2
223
+ reason: organizational
224
+ note: >-
225
+ Registering and authorizing new users is the entity's access-management
226
+ process. An application's provisioning code is not the control.
227
+ - id: CC6.3
228
+ reason: organizational
229
+ note: >-
230
+ Removing access is the entity's process. Deprovisioning code in an
231
+ application is not the control.
232
+ - id: CC6.4
233
+ reason: organizational
234
+ note: Physical access to facilities is outside a code tool's reach entirely.
235
+ - id: CC6.5
236
+ reason: organizational
237
+ note: Disposal of physical media is outside a code tool's reach entirely.
238
+
239
+ # CC7 — the incident-response points.
240
+ - id: CC7.3
241
+ reason: organizational
242
+ note: Evaluating security events is an incident-response process, not a code property.
243
+ - id: CC7.4
244
+ reason: organizational
245
+ note: Responding to identified security incidents is an incident-response process.
246
+ - id: CC7.5
247
+ reason: organizational
248
+ note: Recovering from identified security incidents is an incident-response process.
249
+
250
+ # CC9 — risk mitigation.
251
+ - id: CC9.1
252
+ reason: organizational
253
+ note: Mitigating business-disruption risk is a continuity programme.
254
+ - id: CC9.2
255
+ reason: not-yet-built
256
+ note: >-
257
+ Vendor and business-partner risk has a real code angle — dependency
258
+ inventory, lockfiles and vulnerability audit. Those rules already exist in the
259
+ secure-defaults guidance layer and CC6.8 checks them, but this pack does not
260
+ claim them as CC9.2 evidence: a dependency audit is one input to vendor risk
261
+ management, not the control itself.
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: soc2-constraints
3
+ description: SOC 2 Common Criteria constraints that apply while code is being written
4
+ ---
5
+ # SOC 2 Constraints
6
+
7
+ **This pack's control text has not been reviewed by a compliance practitioner.**
8
+ It was written by an engineer reading the Trust Services Criteria. Treat it as a
9
+ working draft: useful for applying controls while you write code, not as an opinion
10
+ on whether your controls are adequate. Nothing here makes a project SOC 2 certified,
11
+ attested, or audit-ready.
12
+
13
+ ## Which controls apply, and when
14
+
15
+ | Phase | Controls to have in mind |
16
+ |---|---|
17
+ | Requirements, design | CC8.1, CC6.1, CC6.6 |
18
+ | Implementation | CC6.1, CC6.6, CC6.7, CC6.8, CC7.1, CC7.2, CC8.1 |
19
+ | Testing | CC8.1 |
20
+ | Deployment | CC6.7, CC6.8, CC7.1, CC7.2, CC8.1 |
21
+ | Maintenance | CC7.2 |
22
+
23
+ Run `aidlc compliance check` for each control's exact fail condition. Apply the fail
24
+ condition as written rather than your reading of the criterion — that is what makes
25
+ two reviews of the same change agree.
26
+
27
+ ## One control is evidenced. Six are only checked.
28
+
29
+ **CC8.1 is evidenced.** It is a control over the change process, and this lifecycle
30
+ *is* a change process, so the artifact trail demonstrates it.
31
+
32
+ **CC6.1, CC6.6, CC6.7, CC6.8, CC7.1 and CC7.2 are checked only.** They operate over
33
+ a running system. No document establishes that your system monitors components for
34
+ anomalies or restricts information in transmission — so the pack gives you a fail
35
+ condition to apply, and the trail records that you applied it. A report will say
36
+ which is which. Never present a checked-only control as evidence.
37
+
38
+ ## What CC8.1 asks of you while you build
39
+
40
+ Make sure each of these leaves a record, because the record is the evidence:
41
+
42
+ - **Authorization.** `requirements.md` carries numbered acceptance criteria and the
43
+ change stays inside them. Work no criterion asks for is unauthorized change,
44
+ however small.
45
+ - **Design.** `design.md` exists before implementation and names what the change
46
+ touches.
47
+ - **Traceability.** Every task in `tasks.md` references the criteria it satisfies. A
48
+ task referencing none is a gap to state, not to hide.
49
+ - **Test.** Every active criterion has a referencing test.
50
+ - **Approval.** A completed review findings file exists for each required artifact,
51
+ and no critical finding is left open.
52
+ - **Release.** `deployment-record.md` records what shipped.
53
+
54
+ ## What CC8.1 does not evidence here
55
+
56
+ The trail shows a change passed through requirements, design, review and deployment.
57
+ It does **not** establish that `requirements.md` and the shipped code still agree.
58
+ There is no reopen protocol and no impact walk, so a requirement can change after
59
+ design signed off and every gate still passes. Closing that gap is tracked as
60
+ `item-20260815-change-management`. Until it ships, do not represent this pack's CC8.1
61
+ output as evidence of requirement-to-code agreement.
62
+
63
+ ## Security rules live in one place, not here
64
+
65
+ This pack does not restate the project's security rules. Read
66
+ `.aidlc/guidance/secure-defaults.md` and apply it. The six checked-only controls
67
+ reference its sections — authentication and authorization, input validation,
68
+ transport and data protection, dependency security, error handling and logging — so
69
+ there is exactly one place to change when a rule changes.
@@ -0,0 +1,25 @@
1
+ id: soc2
2
+ regime: SOC 2
3
+ version: 0.2.0
4
+
5
+ # SOC 2 is a service-organization examination, not an industry standard, so it
6
+ # applies to any industry. The field exists so an industry-scoped regime can use
7
+ # it later; the wizard skips the industry level while every pack is `any`.
8
+ industries:
9
+ - any
10
+
11
+ entitlement: unrestricted
12
+
13
+ # Null on purpose. The control text in this pack was written by an engineer, not
14
+ # a compliance practitioner. Nulling this field obliges the constraint layer to
15
+ # say so, obliges every report to say so, and makes a doctor check watch for
16
+ # someone editing the statement out.
17
+ reviewed_by: null
18
+
19
+ layers:
20
+ - name: soc2-constraints
21
+ file: soc2-constraints.md
22
+ # Pack layers are delivered as a read-instruction whatever their size. A small
23
+ # layer that got inlined would put pack text inside an emitted skill, which is
24
+ # forbidden outright.
25
+ always_pointer: true
@@ -178,6 +178,14 @@ An instance's **completion moment** is when the last applicable phase (template
178
178
  - `lessons.md` is the retrospective-fed guidance layer: historical observations from completed instances. Read it via the index like any other layer; treat entries as observations, not directives
179
179
  - Load context relevant to the current phase; avoid re-reading unchanged files
180
180
 
181
+ ### The constitution rule
182
+
183
+ This is the canonical statement of the rule. Other skills point here instead of restating it, so there is no second copy to drift.
184
+
185
+ When `.aidlc/context/constitution.md` exists, read it before shaping work. It records what this repo owns (`IN-<n>` entries) and what it must never do (`NOT-<n>` entries), each citing the vision statement it was derived from. **If the work in front of you crosses a prohibition, name that prohibition by its id and say plainly that it does, before going further.** The user may still choose to proceed, or to amend the constitution — but the crossing gets stated out loud at the start rather than discovered in review.
186
+
187
+ The constitution never fails a gate and never blocks a transition; its whole force is that somebody read it out at the right moment. An absent file is a normal state, not a gap to fill — it is written by the **aidlc-constitution** skill, and only a project with a vision document to import has one.
188
+
181
189
  ## Security
182
190
 
183
191
  Before executing any sensitive operation (infrastructure changes, permission modifications, file deletions), you MUST:
@@ -112,6 +112,8 @@ Moving an `inbox/` item to `backlog/` means "we agree to do this". Moving it to
112
112
 
113
113
  Triage is the one flow that reads into the body, and it reads **the executive summary and nothing else**. Six labelled lines per item is what makes triaging a full inbox in one sitting possible; opening whole items is what makes triage something nobody ever gets round to. Show the summary, say which way you would go and why, and let the human decide. If an item has no executive summary, write one from what the item says before asking for a decision — a decision made without one is a decision made twice.
114
114
 
115
+ Read `.aidlc/context/constitution.md` when it exists and apply the constitution rule in **aidlc-overview**: an item that crosses a prohibition is the clearest `hold/` there is, and naming the prohibition turns "not for us" into a reason the submitter can read.
116
+
115
117
  ## Promote
116
118
 
117
119
  Promotion is where the roadmap meets the lifecycle:
@@ -0,0 +1,186 @@
1
+ ---
2
+ name: aidlc-constitution
3
+ description: Turns a product vision document into the repo's constitution — what this repo is for and what it must never become — and keeps it in step when the vision is updated
4
+ phase: ideation
5
+ priority: 88
6
+ trigger: When the user points at a product vision document, asks what this repo is or is not allowed to do, asks to create or update a project constitution, or when the vision document has changed
7
+ native_mode_hint:
8
+ claude-code: >-
9
+ This skill imports a document and drafts prose for the user to correct. Do
10
+ not enter plan mode. Never rewrite an existing constitution from the vision
11
+ in one step — propose changes into the inbox and apply only what the user
12
+ accepts.
13
+ ---
14
+ # Constitution
15
+
16
+ A product has a vision. A repo usually builds only part of it. The constitution
17
+ writes down which part, and — more usefully — what this repo must never grow into.
18
+
19
+ Two files, and the difference between them matters:
20
+
21
+ - `.aidlc/context/vision-source.md` — the vision document's text, extracted and
22
+ hashed. Machine-written, never hand-edited.
23
+ - `.aidlc/context/constitution.md` — what this repo owns and what it is forbidden
24
+ to do, each line citing the vision statement it came from. Drafted by this
25
+ skill, owned by the user.
26
+
27
+ The vision is imported. The constitution is a judgement about the vision, and
28
+ judgement is why this is a skill and not just a command.
29
+
30
+ ## First run
31
+
32
+ ### Step 1 — Import the vision document
33
+
34
+ Ask for the path if the user has not given one. Then:
35
+
36
+ ```
37
+ aidlc constitution import <path>
38
+ ```
39
+
40
+ `.docx`, `.md`, `.markdown` and `.txt` are read directly. For a PDF, a Google Doc,
41
+ or anything else: read it yourself, save a markdown copy next to the original, and
42
+ import that — the command tells you the same thing if you try.
43
+
44
+ The command prints one line per statement, each with a `V-` id derived from that
45
+ statement's own text. Those ids are the vocabulary for everything below.
46
+
47
+ If anything in the extracted text looks like a credential — an API key, a token, a
48
+ password, a connection string — say so, and do not let it reach
49
+ `.aidlc/context/vision-source.md`. Ask the user to remove it from the source
50
+ document and re-import. The snapshot is committed; the vision document may not be.
51
+
52
+ ### Step 2 — Read the repo, not just the document
53
+
54
+ The vision says what the product is. Only the code says what this repo does. Read
55
+ `.aidlc/context/architecture.md` if it exists, then look at the top-level layout
56
+ and the entry points. You are deciding one thing: which slice of the vision this
57
+ repo carries.
58
+
59
+ ### Step 3 — Draft the constitution
60
+
61
+ Write `.aidlc/context/constitution.md`:
62
+
63
+ ```markdown
64
+ ---
65
+ generated_by: aidlc-constitution
66
+ generated_at: <ISO 8601 UTC>
67
+ vision_source: <path as imported>
68
+ ---
69
+ # Constitution — <repo or component name>
70
+
71
+ ## Mandate
72
+
73
+ One paragraph, plain words: which part of the product this repo owns, and which
74
+ parts belong to something else.
75
+
76
+ ## In scope
77
+
78
+ - IN-1 [V-a1b2c3d4]: <what this repo builds>
79
+ - IN-2 [V-e5f6a7b8, V-11223344]: <another>
80
+
81
+ ## Prohibitions
82
+
83
+ - NOT-1 [V-99887766]: <what this repo must never do>
84
+ - NOT-2 [V-a1b2c3d4]: <another>
85
+
86
+ ## Amendments
87
+
88
+ <empty on the first run>
89
+ ```
90
+
91
+ Four rules that make the file usable later:
92
+
93
+ 1. **Every entry cites at least one `V-` id.** An entry with no citation is an
94
+ opinion someone had, and a re-run cannot tell whether the vision still supports
95
+ it. If you cannot find a supporting statement, that is a finding — say so and
96
+ leave the entry out.
97
+ 2. **`IN-` and `NOT-` ids are assigned once.** Never renumbered, never reused. An
98
+ entry that no longer holds is recorded in Amendments with a date and a reason,
99
+ not deleted — a deleted prohibition and one that never existed look identical.
100
+ 3. **A prohibition is a sentence someone can be shown.** "No customer PII in this
101
+ service" is checkable. "Keep it simple" is not.
102
+ 4. **Derive, do not invent.** A prohibition the vision does not support is your
103
+ opinion wearing the document's authority.
104
+
105
+ ### Step 4 — Hand it back
106
+
107
+ Show the Mandate and the Prohibitions and ask the user to correct them. They will
108
+ know things the document does not say. Their corrections are the point — and step
109
+ 2 of the re-run flow exists to protect them.
110
+
111
+ ## When the vision is updated
112
+
113
+ The user replaces the vision document and re-runs this skill. Never rewrite
114
+ `.aidlc/context/constitution.md` from the new vision in one step: a human's
115
+ correction to a derived line and a genuine change in the vision are
116
+ indistinguishable once overwritten, and if corrections do not survive nobody makes
117
+ them twice.
118
+
119
+ ### Step 1 — Ask what moved
120
+
121
+ ```
122
+ aidlc constitution check
123
+ ```
124
+
125
+ It reports statement ids **added** and **removed** relative to the snapshot. An
126
+ edited statement appears as one of each, because ids come from content. It also
127
+ names every constitution entry citing a removed id — those are the entries at
128
+ risk, and it exits 0 either way. This is advisory. It never fails a phase.
129
+
130
+ ### Step 2 — Propose, do not apply
131
+
132
+ Write a proposal to `.aidlc/inbox/constitution-update-<YYYY-MM-DD>.md`, one
133
+ checkbox per change, following the User Input Protocol in the overview skill:
134
+
135
+ ```markdown
136
+ # Constitution update — <date>
137
+
138
+ Vision source: <path> (<n> statements added, <m> removed)
139
+
140
+ ## NOT-2 cites V-99887766, which is gone
141
+
142
+ The vision no longer says: "<old statement text>"
143
+ It now says: "<new statement text, if there is a successor>"
144
+
145
+ - [ ] Re-cite NOT-2 against V-<new id>, wording unchanged
146
+ - [ ] Reword NOT-2: <proposed wording>
147
+ - [ ] Retire NOT-2 — the vision no longer supports it
148
+ - [ ] Leave NOT-2 as it is (a deliberate local rule the vision never carried)
149
+
150
+ ## V-<new id> is new and nothing covers it
151
+
152
+ "<statement text>"
153
+
154
+ - [ ] Add IN-<next>: <proposed wording>
155
+ - [ ] Add NOT-<next>: <proposed wording>
156
+ - [ ] Nothing — this statement is about a different repo
157
+ ```
158
+
159
+ Include the last option every time. "The vision changed and this repo's boundary
160
+ did not" is a common and correct answer.
161
+
162
+ ### Step 3 — Apply only what is checked
163
+
164
+ Then re-import so the snapshot matches the vision the decisions were made against:
165
+
166
+ ```
167
+ aidlc constitution import <path>
168
+ ```
169
+
170
+ Append one line to Amendments for every applied change — date, entry id, what
171
+ changed, why. Amendments are how the next reader tells a deliberate local rule from
172
+ a stale derivation. Offer to delete the inbox file once its content has landed.
173
+
174
+ ## Consulting the constitution
175
+
176
+ Reading it during other work is not this skill's job — the overview skill carries
177
+ that rule, and the requirements, design and roadmap skills point at it. This skill
178
+ writes the file; they read it.
179
+
180
+ ## Exit criteria
181
+
182
+ - `.aidlc/context/vision-source.md` exists and its `source_path` names a real file.
183
+ - `.aidlc/context/constitution.md` has a Mandate, at least one prohibition, and a
184
+ cited `V-` id on every entry.
185
+ - On a re-run: every proposed change was either applied or explicitly declined, and
186
+ each applied one has an Amendments line.
@@ -30,7 +30,7 @@ and open questions.
30
30
 
31
31
  > {{glossary:artifact}}
32
32
 
33
- 1. **Consult the knowledge graph first.** If the project has a knowledge graph (`.aidlc/knowledge/` exists), run `aidlc knowledge context --scope phase --phase ideation` before exploring the codebase — the graph is the first source of understanding; re-explore only what it doesn't cover. Also read all active guidance layers from `.aidlc/guidance/index.yaml` (including `lessons.md` — lessons from completed instances) so fresh guidance applies without recompiling skills.
33
+ 1. **Consult the knowledge graph first.** If the project has a knowledge graph (`.aidlc/knowledge/` exists), run `aidlc knowledge context --scope phase --phase ideation` before exploring the codebase — it is the cheapest way to find where in the code to look, and re-exploring what it already covers wastes the phase. It is an index, not an authority: a specific symbol it names may have been renamed or deleted by a later instance, so open the source before treating any named component, table, or registry as real. Also read all active guidance layers from `.aidlc/guidance/index.yaml` (including `lessons.md` — lessons from completed instances) so fresh guidance applies without recompiling skills.
34
34
  2. **Clarify the problem.** Ask the user what they want to build and why. Identify the core need vs. nice-to-haves.
35
35
  3. **Explore constraints.** Document: timeline, technical constraints, platform limitations, team size, budget considerations.
36
36
  4. **Generate options.** Propose 2-3 approaches. For each, note trade-offs (complexity, time, risk).
@@ -25,7 +25,7 @@ Translate the ideation output (or the user's direct request) into precise, testa
25
25
 
26
26
  > {{glossary:artifact}}
27
27
 
28
- 1. **Gather requirements.** If a Full scope, read the ideation phase's artifact for context (`idea.md` for the feature templates, `research-question.md` for `spike`; `phase-ideation.yaml` names it). Otherwise, ask the user to describe desired behavior. Read all active guidance layers from `.aidlc/guidance/index.yaml` (including `lessons.md` — lessons from completed instances) so fresh guidance applies without recompiling skills.
28
+ 1. **Gather requirements.** If a Full scope, read the ideation phase's artifact for context (`idea.md` for the feature templates, `research-question.md` for `spike`; `phase-ideation.yaml` names it). Otherwise, ask the user to describe desired behavior. Read all active guidance layers from `.aidlc/guidance/index.yaml` (including `lessons.md` — lessons from completed instances) so fresh guidance applies without recompiling skills. Read `.aidlc/context/constitution.md` when it exists and apply the constitution rule in **aidlc-overview**.
29
29
  2. **Write user stories.** Use the format: "As a [role], I want [capability], so that [benefit]."
30
30
  3. **Define acceptance criteria.** Each criterion must be:
31
31
  - Specific and unambiguous
@@ -26,14 +26,15 @@ Produce a technical design that satisfies the requirements. Define architecture,
26
26
  > {{glossary:gate}}
27
27
 
28
28
  1. **Review requirements.** Read `requirements.md` (or its summary if one exists). Identify the key technical challenges. When requirements carry `AC-n` IDs, note in each design section which criteria it addresses — that linkage is what reviewers and the testing phase trace against.
29
- 2. **Consult the knowledge graph.** If the project has a knowledge graph (`.aidlc/knowledge/` exists), run `aidlc knowledge context --scope phase --phase design` for existing architecture, decisions, and conventions before re-deriving them from code. Also read all active guidance layers from `.aidlc/guidance/index.yaml` (including `lessons.md` — lessons from completed instances) so fresh guidance applies without recompiling skills.
30
- 3. **Define architecture.** Describe the high-level structure: components, their responsibilities, and how they communicate.
31
- 4. **Specify interfaces.** For each component boundary, define the contract (function signatures, API shapes, data types).
32
- 5. **Data flow.** Document how data moves through the system inputs, transformations, storage, outputs.
33
- 6. **Design decisions.** Record each significant decision with rationale and alternatives considered. Persist accepted decisions as `decision` entities: `aidlc knowledge add --type decision --id <slug> --name "<title>" --description "<rationale>"`.
34
- 7. **Address non-functional concerns.** Map performance, security, and accessibility requirements to design choices.
35
- 8. **Identify risks.** Note technical risks and mitigation strategies.
36
- 9. **Produce the task breakdown.** For templates that require it (full-feature, quick-feature), write `tasks.md` in the instance state directory as the final design step — the design is not done until it is actionable. Decompose the design into commit-sized tasks: each one reviewable in one sitting and independently verifiable. One task per line, in this exact grammar:
29
+ 2. **Consult the knowledge graph, then check it against the source.** If the project has a knowledge graph (`.aidlc/knowledge/` exists), run `aidlc knowledge context --scope phase --phase design` for existing architecture, decisions, and conventions. The graph is an index into the code, not an authority over it: an entry naming a component, table, column, function, or registry is a pointer to open, and an entry written by an earlier instance may name something a later one renamed or deleted. Confirm a named symbol exists in the source before designing against it — `aidlc knowledge verify <id>` records that you did, and `aidlc knowledge update <id>` corrects an entry that no longer matches. A design built on a symbol that is not there produces code against an API nobody has, and nothing downstream catches it until implementation. Also read all active guidance layers from `.aidlc/guidance/index.yaml` (including `lessons.md` — lessons from completed instances) so fresh guidance applies without recompiling skills. Read `.aidlc/context/constitution.md` when it exists and apply the constitution rule in **aidlc-overview**.
30
+ 3. **Find the seams before proposing structure.** A project is brownfield from its second instance onwards, so start from the assumption that something in the codebase already does part of what the requirements ask for. For each capability in `requirements.md`, locate and read the existing code that carries any of it — the scheduler that already fires, the settings shape that already persists, the registry that already dispatches — and name those files in `design.md` before describing a single new component. Keep it narrow: the seams the requirements actually touch, a handful of files, not a survey. When nothing exists, write that down — "no existing seam" is a finding, and stating it is what separates a genuinely new component from one designed alongside the code that should have absorbed it.
31
+ 4. **Define architecture.** Describe the high-level structure: components, their responsibilities, and how they communicate. Say for each one whether it extends a seam found in step 3 or is new.
32
+ 5. **Specify interfaces.** For each component boundary, define the contract (function signatures, API shapes, data types).
33
+ 6. **Data flow.** Document how data moves through the system inputs, transformations, storage, outputs.
34
+ 7. **Design decisions.** Record each significant decision with rationale and alternatives considered. Persist accepted decisions as `decision` entities: `aidlc knowledge add --type decision --id <slug> --name "<title>" --description "<rationale>"`.
35
+ 8. **Address non-functional concerns.** Map performance, security, and accessibility requirements to design choices.
36
+ 9. **Identify risks.** Note technical risks and mitigation strategies.
37
+ 10. **Produce the task breakdown.** For templates that require it (full-feature, quick-feature), write `tasks.md` in the instance state directory as the final design step — the design is not done until it is actionable. Decompose the design into commit-sized tasks: each one reviewable in one sitting and independently verifiable. One task per line, in this exact grammar:
37
38
 
38
39
  ```
39
40
  - [ ] T<n>: <title>
@@ -47,6 +48,8 @@ Produce a technical design that satisfies the requirements. Define architecture,
47
48
  ## Exit Criteria
48
49
 
49
50
  - `design.md` exists with architecture, interfaces, and at least one design decision with rationale
51
+ - `design.md` names the existing code the change extends, or states that no such code exists
52
+ - Every knowledge-graph symbol the design builds on was checked against the source
50
53
  - The design addresses all acceptance criteria from `requirements.md`
51
54
  - For templates requiring it: `tasks.md` exists and every active acceptance criterion is claimed by at least one task, or the gap is deliberate
52
55
  - The user has confirmed the design direction
@@ -26,7 +26,7 @@ Produce working code that satisfies the design and requirements. Follow project
26
26
 
27
27
  > {{glossary:gate}}
28
28
 
29
- 1. **Load context.** Read `.aidlc/context/style-guide.md` and `.aidlc/context/architecture.md` if they exist. Match the project's established patterns. If the project has a knowledge graph (`.aidlc/knowledge/` exists), also run `aidlc knowledge context --scope phase --phase implementation` and query it (`aidlc knowledge query <term>`) before re-exploring code it already describes.
29
+ 1. **Load context.** Read `.aidlc/context/style-guide.md` and `.aidlc/context/architecture.md` if they exist. Match the project's established patterns. If the project has a knowledge graph (`.aidlc/knowledge/` exists), also run `aidlc knowledge context --scope phase --phase implementation` and query it (`aidlc knowledge query <term>`) before re-exploring code it already describes — as an index into the source, never a substitute for reading it. Open the file before calling anything the graph names; an entry can outlive the symbol it describes.
30
30
  2. **Load guidance.** Read all active guidance layers from `.aidlc/guidance/index.yaml`. Apply their rules during implementation.
31
31
  3. **Execute the task breakdown.** When the instance has a `tasks.md` (produced in Design for full/quick-feature scope), read it and execute tasks in order: complete a task, then mark its checkbox `[x]` as part of the same work unit — never batch checkbox updates for later. A task that should not be done is deferred in place (`- [>] T<n>: <title> (deferred YYYY-MM-DD: <reason>)`) with a dated reason, never skipped silently or deleted; the implementation→testing gate blocks on open tasks. For bugfix scope, create the optional `tasks.md` at implementation start when the fix spans more than one commit-sized unit. For Micro scope, reference the task description and acceptance criteria directly — no task file.
32
32
  4. **Write code.** Follow the design interfaces. Match existing code style (naming, formatting, error handling patterns).
@@ -31,19 +31,20 @@ deployment checklist.
31
31
  > {{glossary:gate}}
32
32
  > {{glossary:artifact}}
33
33
 
34
- 1. **Validate readiness.** Check the phase state files: every preceding required phase must be complete (all required artifacts `complete`). If any gate fails, address the gap before proceeding. (CLI shortcut: `aidlc gate <instance> deployment` the phase name is the second argument, not the first.)
35
- 2. **Write release plan.** Document in the phase's required artifact (see Required Artifacts above):
34
+ 1. **Load guidance.** Read all active guidance layers from `.aidlc/guidance/index.yaml` (including `lessons.md` lessons from completed instances) so fresh guidance applies without recompiling skills. Layers can be added to a project after these skills were installed, so read the index rather than assuming the layers named at the bottom of this skill are the only ones.
35
+ 2. **Validate readiness.** Check the phase state files: every preceding required phase must be complete (all required artifacts `complete`). If any gate fails, address the gap before proceeding. (CLI shortcut: `aidlc gate <instance> deployment` — the phase name is the second argument, not the first.)
36
+ 3. **Write release plan.** Document in the phase's required artifact (see Required Artifacts above):
36
37
  - What is being deployed (version, changes summary)
37
38
  - Target environment(s)
38
39
  - Deployment steps in order
39
40
  - Rollback procedure
40
41
  - Monitoring and verification steps post-deploy
41
- 3. **Pre-deployment checks.** Verify:
42
+ 4. **Pre-deployment checks.** Verify:
42
43
  - CI pipeline passes
43
44
  - No critical findings open from adversarial reviews
44
45
  - Dependencies are pinned and audited
45
- 4. **Execute deployment.** Follow the release plan step by step.
46
- 5. **Verify.** Confirm the deployment succeeded using the monitoring steps.
46
+ 5. **Execute deployment.** Follow the release plan step by step.
47
+ 6. **Verify.** Confirm the deployment succeeded using the monitoring steps.
47
48
 
48
49
  ## Exit Criteria
49
50
 
@@ -26,15 +26,16 @@ and follow-up items.
26
26
 
27
27
  ## Instructions
28
28
 
29
- 1. **Monitor.** Check that the deployed changes behave as expected in their target environment. Note any anomalies.
30
- 2. **Update documentation.** Ensure project docs reflect the new state:
29
+ 1. **Load guidance.** Read all active guidance layers from `.aidlc/guidance/index.yaml` (including `lessons.md` lessons from completed instances) so fresh guidance applies without recompiling skills. Layers can be added to a project after these skills were installed, so read the index rather than assuming the layers named at the bottom of this skill are the only ones.
30
+ 2. **Monitor.** Check that the deployed changes behave as expected in their target environment. Note any anomalies.
31
+ 3. **Update documentation.** Ensure project docs reflect the new state:
31
32
  - README or user-facing docs updated if behavior changed
32
33
  - Architecture docs updated if new components were added
33
34
  - API docs updated if endpoints changed
34
- 3. **Gather feedback.** Collect user/team feedback on the delivered feature.
35
- 4. **Record known issues.** Document any edge cases, limitations, or technical debt introduced. If the project has a knowledge graph, record debt as entities (`aidlc knowledge add --type debt …`) and update facts invalidated by code changes (`aidlc knowledge update` / `verify`); list candidates with `aidlc knowledge stale --check-git`.
36
- 5. **Plan follow-up.** If feedback or monitoring reveals needed improvements, document them as potential future lifecycle instances.
37
- 6. **Close the instance.** When maintenance tasks are complete, mark the lifecycle instance as done.
35
+ 4. **Gather feedback.** Collect user/team feedback on the delivered feature.
36
+ 5. **Record known issues.** Document any edge cases, limitations, or technical debt introduced. If the project has a knowledge graph, record debt as entities (`aidlc knowledge add --type debt …`) and update facts invalidated by code changes (`aidlc knowledge update` / `verify`); list candidates with `aidlc knowledge stale --check-git`.
37
+ 6. **Plan follow-up.** If feedback or monitoring reveals needed improvements, document them as potential future lifecycle instances.
38
+ 7. **Close the instance.** When maintenance tasks are complete, mark the lifecycle instance as done.
38
39
 
39
40
  ## Exit Criteria
40
41
 
@@ -30,7 +30,9 @@ You MUST perform this review with fresh eyes. If you authored the artifact being
30
30
 
31
31
  1. **Read the target artifact completely.** Do not skim.
32
32
  - When reviewing a design artifact and the instance has a `tasks.md`, review it together with the design: breakdown completeness (every design section covered by a task), task sizing (commit-sized units), and AC linkage (tasks reference the criteria they satisfy). Record its findings in the design review's findings file — no separate `tasks.review.md`.
33
- 2. **Examine for each dimension:**
33
+ 2. **Load guidance.** Read all active guidance layers from `.aidlc/guidance/index.yaml` (including `lessons.md` — lessons from completed instances) so fresh guidance applies without recompiling skills. A newly installed layer takes effect immediately, so do not assume the layers named in this skill are the only active ones.
34
+ 3. **Check for installed compliance controls.** Run `aidlc compliance list`. If nothing is installed, skip this step and the compliance findings stream below entirely — there is nothing to check and no file to write. If a pack is installed, run `aidlc compliance check` to get the controls that apply to this phase, each with what it requires, where to look, and its fail condition. Apply those fail conditions **as written**: they are the pack's, and reinterpreting one turns a stated control into your opinion.
35
+ 4. **Examine for each dimension:**
34
36
  - **Ambiguities** — Vague terms, undefined behavior, unclear scope
35
37
  - **Contradictions** — Requirements that conflict with each other
36
38
  - **Missing edge cases** — Inputs, states, or scenarios not addressed
@@ -43,13 +45,27 @@ You MUST perform this review with fresh eyes. If you authored the artifact being
43
45
  deserialization. Apply the secure-defaults guidance below as the checklist.
44
46
  - **Scalability concerns** — Performance bottlenecks or resource limits
45
47
  - **Scope creep** — Functionality beyond the stated scope
46
- 3. **Write findings.** For each issue found, record:
48
+ 5. **Write findings.** For each issue found, record:
47
49
  - **Severity**: `critical`, `major`, or `minor`
48
50
  - **Section**: The specific part of the artifact
49
51
  - **Issue**: Clear description of the problem
50
52
  - **Suggestion**: A concrete resolution or question to ask
51
53
  - **Status**: `open` (always for new findings)
52
- 4. **Save the findings file** as `<artifact>.review.md` in the instance namespace.
54
+ 6. **Save the findings file** as `<artifact>.review.md` in the instance namespace.
55
+ 7. **Write the compliance findings stream**, only when a pack is installed. It is a
56
+ **separate file**: `<artifact>.compliance.md`, never mixed into
57
+ `<artifact>.review.md`. The separation is load-bearing — the phase transition gate
58
+ reads only `*.review.md`, so keeping control findings out of it is what lets them
59
+ be advisory by default. See "Compliance Findings Format" below.
60
+
61
+ Every applicable control must appear in exactly one of two places, or it counts as
62
+ unchecked:
63
+ - a finding block carrying its **Control** id, when the fail condition is met;
64
+ - a line in `## Controls Checked` reading `- **Control:** <id> — no issues`, when
65
+ you looked and found nothing.
66
+
67
+ Do not write a cleared line for a control you did not actually examine. An
68
+ unchecked control reported as covered is the one outcome worse than no check at all.
53
69
 
54
70
  {{guidance:secure-defaults}}
55
71
 
@@ -70,11 +86,40 @@ reviewer: <session-id>
70
86
  - **Status:** open
71
87
  ```
72
88
 
89
+ ## Compliance Findings Format
90
+
91
+ Only written when a compliance pack is installed. File: `<artifact>.compliance.md`.
92
+
93
+ ```markdown
94
+ ---
95
+ artifact: <filename>
96
+ reviewed_at: <ISO 8601 UTC>
97
+ reviewer: <session-id>
98
+ ---
99
+
100
+ ## Finding 1
101
+ - **Control:** <control id from the pack>
102
+ - **Severity:** critical | major | minor
103
+ - **Section:** <where in the artifact or diff>
104
+ - **Issue:** <how the fail condition is met>
105
+ - **Suggestion:** <what would satisfy the control>
106
+ - **Status:** open
107
+
108
+ ## Controls Checked
109
+ - **Control:** <control id> — no issues
110
+ - **Control:** <control id> — no issues
111
+ ```
112
+
113
+ The `Control` bullet is what links a finding to a control. A finding without one
114
+ satisfies nothing, and a control appearing in neither section counts as unchecked.
115
+
73
116
  ## Exit Criteria
74
117
 
75
118
  - Findings file exists in the instance namespace
76
119
  - Every dimension was considered (even if no issues found — state "no issues" for that dimension)
77
120
  - Findings are actionable (each has a concrete suggestion or question)
121
+ - When a compliance pack is installed: `<artifact>.compliance.md` exists and every
122
+ applicable control appears either as a finding carrying its id or as a cleared line
78
123
 
79
124
  ## Review Gate
80
125