@rasensio/aidlc-content 1.31.0 → 1.32.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/guidance/index.yaml +8 -0
- package/guidance/lessons-digest.md +29 -0
- package/package.json +1 -1
- package/skills/00-overview.md +15 -1
- package/skills/10-ideation.md +1 -1
- package/skills/20-requirements.md +2 -2
- package/skills/30-design.md +2 -2
- package/skills/40-implementation.md +2 -2
- package/skills/50-testing.md +1 -1
- package/skills/60-deployment.md +1 -1
- package/skills/70-maintenance.md +1 -1
- package/skills/80-review.md +1 -1
- package/skills/90-retrospective.md +10 -2
package/guidance/index.yaml
CHANGED
|
@@ -5,3 +5,11 @@ layers:
|
|
|
5
5
|
file: accessibility.md
|
|
6
6
|
- name: api-conventions
|
|
7
7
|
file: api-conventions.md
|
|
8
|
+
# `always_pointer` is load-bearing here, not decoration: the digest is small by
|
|
9
|
+
# design and would fall under INLINE_THRESHOLD_BYTES, so a skill naming it in a
|
|
10
|
+
# {{guidance:lessons-digest}} placeholder would bake the text into every emitted
|
|
11
|
+
# skill body. Guidance is read from .aidlc/guidance/, never duplicated into a
|
|
12
|
+
# compiled skill (lessons-digest/AC-6, AC-18).
|
|
13
|
+
- name: lessons-digest
|
|
14
|
+
file: lessons-digest.md
|
|
15
|
+
always_pointer: true
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lessons-digest
|
|
3
|
+
description: The lessons this project has paid for more than once — a distillation, refreshed at consolidation
|
|
4
|
+
---
|
|
5
|
+
# Lessons Digest
|
|
6
|
+
|
|
7
|
+
This is the **always-read** lessons layer: a short distillation of the entries this project
|
|
8
|
+
has paid for more than once.
|
|
9
|
+
|
|
10
|
+
The **full corpus is `.aidlc/guidance/lessons.md`** — every lesson from every completed
|
|
11
|
+
instance, in full, registered as an on-demand layer. Read it when a phase has a reason to:
|
|
12
|
+
you are touching a mechanism a past instance got wrong, a gate keeps failing for reasons
|
|
13
|
+
nobody can name, or you are running consolidation. It is not read on entry because it grows
|
|
14
|
+
by design — up to three lessons per instance — and an always-read file that only grows is a
|
|
15
|
+
tax on every future session.
|
|
16
|
+
|
|
17
|
+
This digest is **lossy on purpose**. It is not a summary of the corpus and does not replace
|
|
18
|
+
it. Nothing here is a directive: lessons are historical observations, and one may describe
|
|
19
|
+
code that has since been rewritten. Check the source before acting on an entry that names a
|
|
20
|
+
file, a function, or a flag.
|
|
21
|
+
|
|
22
|
+
## Entries
|
|
23
|
+
|
|
24
|
+
*No entries yet.* This file is a stub until the first consolidation run fills it.
|
|
25
|
+
|
|
26
|
+
The **aidlc-retrospective** skill regenerates the entries below this heading when it runs in
|
|
27
|
+
consolidation mode, keeping the whole file small enough to stay resident. What it leaves out
|
|
28
|
+
is confirmed edit by edit — a digest is a lossy read of a safety mechanism, so omissions are
|
|
29
|
+
agreed, never silent.
|
package/package.json
CHANGED
package/skills/00-overview.md
CHANGED
|
@@ -225,9 +225,23 @@ An instance's **completion moment** is when the last applicable phase (template
|
|
|
225
225
|
|
|
226
226
|
- Project context lives in `.aidlc/context/` (style-guide.md, architecture.md)
|
|
227
227
|
- Guidance layers live in `.aidlc/guidance/` — load only those listed in `index.yaml`
|
|
228
|
-
- `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
|
|
229
228
|
- Load context relevant to the current phase; avoid re-reading unchanged files
|
|
230
229
|
|
|
230
|
+
### The always-read rule
|
|
231
|
+
|
|
232
|
+
This is the canonical statement of the rule. The phase skills point here instead of restating it, so there is no second copy to drift.
|
|
233
|
+
|
|
234
|
+
**Read the always-read set on entering a phase: every layer in `.aidlc/guidance/index.yaml` *except* those whose entry carries `on_demand: true`.** Read the index rather than assuming the layers named at the bottom of a skill are the only ones — a project can install a layer after its skills were emitted.
|
|
235
|
+
|
|
236
|
+
An `on_demand: true` layer is read **only when the phase has a stated reason to**. It is registered, active, and current; it is simply too large to be worth carrying in every session by default.
|
|
237
|
+
|
|
238
|
+
The two lessons layers are the reason the distinction exists:
|
|
239
|
+
|
|
240
|
+
- **`lessons-digest.md` is always-read.** A short distillation of the lessons this project has paid for more than once, regenerated by the **aidlc-retrospective** skill at consolidation.
|
|
241
|
+
- **`.aidlc/guidance/lessons.md` is on-demand, and it is the full corpus** — every lesson from every completed instance. Read it when you are touching a mechanism a past instance got wrong, when a gate keeps failing for reasons nobody can name, or when running consolidation. It grows by design (up to three lessons per instance), which is what makes an unconditional read a tax on every future session rather than a one-time cost.
|
|
242
|
+
|
|
243
|
+
Treat every lesson as a historical observation, not a directive. An entry naming a file, function, or flag may describe code a later instance renamed or deleted — check the source before acting on it.
|
|
244
|
+
|
|
231
245
|
### The constitution rule
|
|
232
246
|
|
|
233
247
|
This is the canonical statement of the rule. Other skills point here instead of restating it, so there is no second copy to drift.
|
package/skills/10-ideation.md
CHANGED
|
@@ -41,7 +41,7 @@ and open questions.
|
|
|
41
41
|
|
|
42
42
|
> {{glossary:artifact}}
|
|
43
43
|
|
|
44
|
-
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
|
|
44
|
+
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 the always-read guidance layers from `.aidlc/guidance/index.yaml` — see **The always-read rule** in **aidlc-overview** for which layers those are and when to reach for the full `lessons.md`.
|
|
45
45
|
2. **Clarify the problem.** Ask the user what they want to build and why. Identify the core need vs. nice-to-haves.
|
|
46
46
|
3. **Explore constraints.** Document: timeline, technical constraints, platform limitations, team size, budget considerations.
|
|
47
47
|
4. **Generate options.** Propose 2-3 approaches. For each, note trade-offs (complexity, time, risk).
|
|
@@ -25,7 +25,7 @@ Read only:
|
|
|
25
25
|
- the ideation artifact (`idea.md`, or `research-question.md` for `spike`) — Full scope only
|
|
26
26
|
- the roadmap item this instance was promoted from — Standard scope, where it replaces the
|
|
27
27
|
ideation artifact as input
|
|
28
|
-
- the guidance layers named in `.aidlc/guidance/index.yaml`
|
|
28
|
+
- the always-read guidance layers named in `.aidlc/guidance/index.yaml` (see **The always-read rule** in **aidlc-overview**)
|
|
29
29
|
- `.aidlc/context/constitution.md`, when it exists
|
|
30
30
|
|
|
31
31
|
Not the ideation *conversation* — the artifact is what it was written for.
|
|
@@ -39,7 +39,7 @@ See **The context rule** in **aidlc-overview**.
|
|
|
39
39
|
|
|
40
40
|
> {{glossary:artifact}}
|
|
41
41
|
|
|
42
|
-
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
|
|
42
|
+
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 the always-read guidance layers from `.aidlc/guidance/index.yaml` — see **The always-read rule** in **aidlc-overview** for which layers those are and when to reach for the full `lessons.md`. Read `.aidlc/context/constitution.md` when it exists and apply the constitution rule in **aidlc-overview**.
|
|
43
43
|
2. **Write user stories.** Use the format: "As a [role], I want [capability], so that [benefit]."
|
|
44
44
|
3. **Define acceptance criteria.** Each criterion must be:
|
|
45
45
|
- Specific and unambiguous
|
package/skills/30-design.md
CHANGED
|
@@ -23,7 +23,7 @@ Read only:
|
|
|
23
23
|
|
|
24
24
|
- `instance.yaml`
|
|
25
25
|
- `requirements.md` — in full; the acceptance criteria are what the design is traced against
|
|
26
|
-
- the guidance layers named in `.aidlc/guidance/index.yaml`
|
|
26
|
+
- the always-read guidance layers named in `.aidlc/guidance/index.yaml` (see **The always-read rule** in **aidlc-overview**)
|
|
27
27
|
- `.aidlc/context/architecture.md` and `style-guide.md`
|
|
28
28
|
- `.aidlc/context/constitution.md`, when it exists
|
|
29
29
|
|
|
@@ -40,7 +40,7 @@ transcript. See **The context rule** in **aidlc-overview**.
|
|
|
40
40
|
> {{glossary:gate}}
|
|
41
41
|
|
|
42
42
|
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.
|
|
43
|
-
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
|
|
43
|
+
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 the always-read guidance layers from `.aidlc/guidance/index.yaml` — see **The always-read rule** in **aidlc-overview** for which layers those are and when to reach for the full `lessons.md`. Read `.aidlc/context/constitution.md` when it exists and apply the constitution rule in **aidlc-overview**.
|
|
44
44
|
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.
|
|
45
45
|
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.
|
|
46
46
|
5. **Specify interfaces.** For each component boundary, define the contract (function signatures, API shapes, data types).
|
|
@@ -26,7 +26,7 @@ Read only:
|
|
|
26
26
|
- `design.md` — the sections the next task cites, not the whole document once tasks are
|
|
27
27
|
under way
|
|
28
28
|
- `requirements.md` — the acceptance criteria the next task claims
|
|
29
|
-
- the guidance layers named in `.aidlc/guidance/index.yaml`
|
|
29
|
+
- the always-read guidance layers named in `.aidlc/guidance/index.yaml` (see **The always-read rule** in **aidlc-overview**)
|
|
30
30
|
- `.aidlc/context/style-guide.md`
|
|
31
31
|
|
|
32
32
|
Then the source files that task touches. See **The context rule** in **aidlc-overview**.
|
|
@@ -41,7 +41,7 @@ Then the source files that task touches. See **The context rule** in **aidlc-ove
|
|
|
41
41
|
> {{glossary:gate}}
|
|
42
42
|
|
|
43
43
|
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.
|
|
44
|
-
2. **Load guidance.** Read
|
|
44
|
+
2. **Load guidance.** Read the always-read guidance layers from `.aidlc/guidance/index.yaml` — see **The always-read rule** in **aidlc-overview** for which layers those are and when to reach for the full `lessons.md`. Apply their rules during implementation.
|
|
45
45
|
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.
|
|
46
46
|
4. **Write code.** Follow the design interfaces. Match existing code style (naming, formatting, error handling patterns).
|
|
47
47
|
5. **Handle sensitive operations.** Before executing any of the following, describe the action and wait for explicit user confirmation:
|
package/skills/50-testing.md
CHANGED
|
@@ -41,7 +41,7 @@ See **The context rule** in **aidlc-overview**.
|
|
|
41
41
|
> {{glossary:gate}}
|
|
42
42
|
> {{glossary:artifact}}
|
|
43
43
|
|
|
44
|
-
1. **Review acceptance criteria.** Read `requirements.md` (or task description for Micro scope). Each criterion needs at least one test. Read
|
|
44
|
+
1. **Review acceptance criteria.** Read `requirements.md` (or task description for Micro scope). Each criterion needs at least one test. Read the always-read guidance layers from `.aidlc/guidance/index.yaml` — see **The always-read rule** in **aidlc-overview** for which layers those are and when to reach for the full `lessons.md`.
|
|
45
45
|
2. **Write automated tests.** Follow the project's existing test patterns:
|
|
46
46
|
- Unit tests for pure logic and edge cases
|
|
47
47
|
- Integration tests for component interactions
|
package/skills/60-deployment.md
CHANGED
|
@@ -51,7 +51,7 @@ deployment checklist.
|
|
|
51
51
|
> {{glossary:gate}}
|
|
52
52
|
> {{glossary:artifact}}
|
|
53
53
|
|
|
54
|
-
1. **Load guidance.** Read
|
|
54
|
+
1. **Load guidance.** Read the always-read guidance layers from `.aidlc/guidance/index.yaml` — see **The always-read rule** in **aidlc-overview** for which layers those are and when to reach for the full `lessons.md`.
|
|
55
55
|
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.)
|
|
56
56
|
3. **Write release plan.** Document in the phase's required artifact (see Required Artifacts above):
|
|
57
57
|
- What is being deployed (version, changes summary)
|
package/skills/70-maintenance.md
CHANGED
|
@@ -40,7 +40,7 @@ and follow-up items.
|
|
|
40
40
|
|
|
41
41
|
## Instructions
|
|
42
42
|
|
|
43
|
-
1. **Load guidance.** Read
|
|
43
|
+
1. **Load guidance.** Read the always-read guidance layers from `.aidlc/guidance/index.yaml` — see **The always-read rule** in **aidlc-overview** for which layers those are and when to reach for the full `lessons.md`.
|
|
44
44
|
2. **Monitor.** Check that the deployed changes behave as expected in their target environment. Note any anomalies.
|
|
45
45
|
3. **Update documentation.** Ensure project docs reflect the new state:
|
|
46
46
|
- README or user-facing docs updated if behavior changed
|
package/skills/80-review.md
CHANGED
|
@@ -42,7 +42,7 @@ The split is also the better review. Reviewing `design.md` and `tasks.md` into o
|
|
|
42
42
|
|
|
43
43
|
1. **Read the target artifact completely.** Do not skim.
|
|
44
44
|
- When the phase requires a `tasks.md` as well as a `design.md`, review the breakdown **with the design in hand** — breakdown completeness (every design section covered by a task), task sizing (commit-sized units), and AC linkage (tasks reference the criteria they satisfy) are all judgements about the design/breakdown pair, not about `tasks.md` alone. Read both, then record the breakdown's findings in its own findings file.
|
|
45
|
-
2. **Load guidance.** Read
|
|
45
|
+
2. **Load guidance.** Read the always-read guidance layers from `.aidlc/guidance/index.yaml` — see **The always-read rule** in **aidlc-overview** for which layers those are and when to reach for the full `lessons.md`.
|
|
46
46
|
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.
|
|
47
47
|
4. **Examine for each dimension:**
|
|
48
48
|
- **Ambiguities** — Vague terms, undefined behavior, unclear scope
|
|
@@ -66,13 +66,21 @@ The body is **append-only between consolidations**: one `## <instance> — <YYYY
|
|
|
66
66
|
|
|
67
67
|
## Consolidation Mode
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
Three independent triggers — any one of them offers consolidation. `lessons.md` exceeds:
|
|
70
|
+
|
|
71
|
+
- **20KB (20,480 bytes)**, or
|
|
72
|
+
- **25 instance sections** (count `## ` headings), or
|
|
73
|
+
- **90 days** since `last_consolidated` in `index.yaml`.
|
|
74
|
+
|
|
75
|
+
The retro checks at step 2 and offers it; `aidlc status` surfaces the same notice. The size trigger exists because the other two are the wrong dimension: this project's file reached 88KB at 23 sections, 12 days after a consolidation — long and old were both still in the future while big had long since arrived, and bytes are what a session pays for.
|
|
70
76
|
|
|
71
77
|
Run only in the **primary checkout** (not a linked worktree — check `git rev-parse --git-common-dir` resolves to `./.git`):
|
|
72
78
|
|
|
73
79
|
1. Propose merges of duplicate/superseded sections, retirement of stale entries, and application of `[promote-to-context]` flags (drafting the context-doc edit for approval).
|
|
74
80
|
2. **Every edit is confirmed by the user individually.** Nothing is deleted silently.
|
|
75
|
-
3.
|
|
81
|
+
3. **Regenerate `lessons-digest.md`** — the always-read distillation that stands in for the full corpus (see **The always-read rule** in **aidlc-overview**). Rewrite everything under its `## Entries` heading with the lessons this project has paid for **more than once**, each ending with `— from <instance>, <date>` as in `lessons.md`. Keep the whole file **at or under 4096 bytes**; that bound is the point of the file, so a digest that needs more entries needs shorter ones, not a larger cap. Leave the text above `## Entries` alone — it states that the digest is lossy and names the full corpus, and a reader who only has the digest depends on both.
|
|
82
|
+
4. **Confirm what the digest omits**, not only what it keeps. A digest is a lossy read of a safety mechanism: show which entries did not make it and get the same individual confirmation step 2 requires. Dropping a lesson from the always-read layer is a decision the user makes, never a side effect of fitting a byte budget.
|
|
83
|
+
5. Report what changed; set `last_consolidated` in `index.yaml` to today.
|
|
76
84
|
|
|
77
85
|
## Rules
|
|
78
86
|
|