@rasensio/aidlc-content 1.10.6 → 1.11.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/dist/glossary.d.ts +20 -0
- package/dist/glossary.d.ts.map +1 -0
- package/dist/glossary.js +32 -0
- package/dist/glossary.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/glossary.yaml +96 -0
- package/package.json +3 -2
- package/skills/00-overview.md +16 -3
- package/skills/01-getting-started.md +6 -0
- package/skills/03-entry-point.md +4 -0
- package/skills/04-idea-capture.md +4 -0
- package/skills/10-ideation.md +5 -1
- package/skills/20-requirements.md +6 -2
- package/skills/30-design.md +5 -1
- package/skills/40-implementation.md +5 -1
- package/skills/50-testing.md +4 -1
- package/skills/60-deployment.md +4 -1
- package/skills/70-maintenance.md +4 -0
- package/skills/80-review.md +5 -1
- package/skills/81-continue.md +5 -1
- package/skills/82-add-action.md +2 -2
- package/skills/83-add-skill.md +2 -0
- package/skills/90-retrospective.md +4 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { GlossaryTerm } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Load every canonical vocabulary definition.
|
|
4
|
+
*
|
|
5
|
+
* Read from the content package, never from a project — see `GlossaryTerm` and
|
|
6
|
+
* plain-language-vocabulary DD-2 for why the glossary is deliberately not
|
|
7
|
+
* installable. Both consumers call this: the CLI resolves `{{glossary:<term>}}`
|
|
8
|
+
* placeholders in skill bodies with it, and the website renders `/docs/glossary`
|
|
9
|
+
* from it at build. One source, two consumers, no copy.
|
|
10
|
+
*/
|
|
11
|
+
export declare function loadGlossary(): GlossaryTerm[];
|
|
12
|
+
/**
|
|
13
|
+
* Look one term up by its canonical key.
|
|
14
|
+
*
|
|
15
|
+
* Matching is case-insensitive on the key so that a placeholder written
|
|
16
|
+
* `{{glossary:Instance}}` resolves; the returned definition is always the
|
|
17
|
+
* canonical text.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getGlossaryTerm(term: string): GlossaryTerm | undefined;
|
|
20
|
+
//# sourceMappingURL=glossary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glossary.d.ts","sourceRoot":"","sources":["../src/glossary.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS/C;;;;;;;;GAQG;AACH,wBAAgB,YAAY,IAAI,YAAY,EAAE,CAI7C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAGtE"}
|
package/dist/glossary.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { fileURLToPath } from 'node:url';
|
|
2
|
+
import { resolve, dirname } from 'node:path';
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
import { parse as parseYaml } from 'yaml';
|
|
5
|
+
const CONTENT_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
6
|
+
const GLOSSARY_PATH = resolve(CONTENT_ROOT, 'glossary.yaml');
|
|
7
|
+
/**
|
|
8
|
+
* Load every canonical vocabulary definition.
|
|
9
|
+
*
|
|
10
|
+
* Read from the content package, never from a project — see `GlossaryTerm` and
|
|
11
|
+
* plain-language-vocabulary DD-2 for why the glossary is deliberately not
|
|
12
|
+
* installable. Both consumers call this: the CLI resolves `{{glossary:<term>}}`
|
|
13
|
+
* placeholders in skill bodies with it, and the website renders `/docs/glossary`
|
|
14
|
+
* from it at build. One source, two consumers, no copy.
|
|
15
|
+
*/
|
|
16
|
+
export function loadGlossary() {
|
|
17
|
+
const raw = readFileSync(GLOSSARY_PATH, 'utf8');
|
|
18
|
+
const parsed = parseYaml(raw);
|
|
19
|
+
return parsed?.terms ?? [];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Look one term up by its canonical key.
|
|
23
|
+
*
|
|
24
|
+
* Matching is case-insensitive on the key so that a placeholder written
|
|
25
|
+
* `{{glossary:Instance}}` resolves; the returned definition is always the
|
|
26
|
+
* canonical text.
|
|
27
|
+
*/
|
|
28
|
+
export function getGlossaryTerm(term) {
|
|
29
|
+
const wanted = term.trim().toLowerCase();
|
|
30
|
+
return loadGlossary().find((t) => t.term.toLowerCase() === wanted);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=glossary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glossary.js","sourceRoot":"","sources":["../src/glossary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAG1C,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5E,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AAM7D;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAwB,CAAC;IACrD,OAAO,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzC,OAAO,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;AACrE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export { loadSkills, getSkill } from './skills.js';
|
|
2
2
|
export { loadTemplates, getTemplate } from './templates.js';
|
|
3
3
|
export { loadGuidance } from './guidance.js';
|
|
4
|
+
export { loadGlossary, getGlossaryTerm } from './glossary.js';
|
|
4
5
|
export { loadCapabilities, getCapabilityMap } from './capabilities.js';
|
|
5
6
|
export { loadPhases, getPhase } from './phases.js';
|
|
6
7
|
export { loadTutorials, getTutorial, parseTutorialSource } from './tutorials.js';
|
|
7
|
-
export type { Skill, WorkflowTemplate, GuidanceLayer, CapabilityMap, PhaseDefinition, CodeSample, ContentReference, TutorialStep, Tutorial } from './types.js';
|
|
8
|
+
export type { Skill, WorkflowTemplate, GuidanceLayer, GlossaryTerm, CapabilityMap, PhaseDefinition, CodeSample, ContentReference, TutorialStep, Tutorial } from './types.js';
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACjF,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACjF,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { loadSkills, getSkill } from './skills.js';
|
|
2
2
|
export { loadTemplates, getTemplate } from './templates.js';
|
|
3
3
|
export { loadGuidance } from './guidance.js';
|
|
4
|
+
export { loadGlossary, getGlossaryTerm } from './glossary.js';
|
|
4
5
|
export { loadCapabilities, getCapabilityMap } from './capabilities.js';
|
|
5
6
|
export { loadPhases, getPhase } from './phases.js';
|
|
6
7
|
export { loadTutorials, getTutorial, parseTutorialSource } from './tutorials.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -19,6 +19,32 @@ export interface GuidanceLayer {
|
|
|
19
19
|
filename: string;
|
|
20
20
|
body: string;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* One canonical vocabulary definition.
|
|
24
|
+
*
|
|
25
|
+
* The glossary is the single source of every term's definition text
|
|
26
|
+
* (plain-language-vocabulary/AC-7). It is read from the content package and is
|
|
27
|
+
* deliberately never copied into a project's `.aidlc/` the way guidance layers
|
|
28
|
+
* are: guidance is project guidance users edit, framework vocabulary is not
|
|
29
|
+
* theirs to fork, and a copy is a thing that can drift
|
|
30
|
+
* (plain-language-vocabulary DD-2).
|
|
31
|
+
*/
|
|
32
|
+
export interface GlossaryTerm {
|
|
33
|
+
/** Canonical lowercase key, e.g. `instance`. Unique across the glossary. */
|
|
34
|
+
term: string;
|
|
35
|
+
/** One plain sentence. The only definition text that exists for this term. */
|
|
36
|
+
definition: string;
|
|
37
|
+
/**
|
|
38
|
+
* What a reader wrongly expects the word to mean.
|
|
39
|
+
*
|
|
40
|
+
* Presence of this field *is* the collision flag — there is no separate
|
|
41
|
+
* boolean, because two fields that must agree eventually disagree
|
|
42
|
+
* (plain-language-vocabulary DD-5). A term that already means something else
|
|
43
|
+
* in software needs its prior meaning contradicted, not merely supplemented:
|
|
44
|
+
* the reader does not experience confusion, they experience false confidence.
|
|
45
|
+
*/
|
|
46
|
+
not?: string;
|
|
47
|
+
}
|
|
22
48
|
export interface CapabilityMap {
|
|
23
49
|
platform: string;
|
|
24
50
|
capabilities: Record<string, unknown>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB"}
|
package/glossary.yaml
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# AIDLC canonical vocabulary.
|
|
2
|
+
#
|
|
3
|
+
# The single source of every term's definition text. Read from this package by
|
|
4
|
+
# both consumers — the CLI resolves `{{glossary:<term>}}` placeholders in skill
|
|
5
|
+
# bodies with it, and the website renders /docs/glossary from it at build. It is
|
|
6
|
+
# deliberately NOT installed into a project's .aidlc/ the way guidance layers
|
|
7
|
+
# are: guidance is project guidance users edit, framework vocabulary is not
|
|
8
|
+
# theirs to fork, and a second copy is a thing that can drift.
|
|
9
|
+
#
|
|
10
|
+
# Schema (packages/content/src/types.ts, GlossaryTerm):
|
|
11
|
+
# term canonical lowercase key, unique
|
|
12
|
+
# definition ONE plain sentence — this is the only definition text that exists
|
|
13
|
+
# not optional; what a reader wrongly expects the word to mean
|
|
14
|
+
#
|
|
15
|
+
# `not` is present if and only if the term collides with an existing software
|
|
16
|
+
# meaning. There is no separate boolean flag, because two fields that must agree
|
|
17
|
+
# eventually disagree. A colliding term needs its prior meaning CONTRADICTED,
|
|
18
|
+
# not merely supplemented — the reader does not experience confusion, they
|
|
19
|
+
# experience false confidence, and discover the mismatch much later.
|
|
20
|
+
#
|
|
21
|
+
# Audience is a working developer comfortable with a terminal and git. Terms that
|
|
22
|
+
# a developer picks up without help do not need an entry; terms that mislead one
|
|
23
|
+
# do.
|
|
24
|
+
|
|
25
|
+
terms:
|
|
26
|
+
# --- Colliding terms. These are why this glossary exists. ---
|
|
27
|
+
|
|
28
|
+
# Definitions avoid internal em-dashes on purpose: the rendered gloss already
|
|
29
|
+
# opens with `**term** — `, so a second dash inside the sentence reads as a
|
|
30
|
+
# stutter. Colons and commas carry the same structure without it.
|
|
31
|
+
|
|
32
|
+
- term: instance
|
|
33
|
+
definition: >-
|
|
34
|
+
one unit of work, such as a single feature or fix, with its own folder of
|
|
35
|
+
files under `.aidlc/state/` tracking how far it has got
|
|
36
|
+
not: >-
|
|
37
|
+
an instantiated object, a running server, or a copy of the application
|
|
38
|
+
|
|
39
|
+
- term: scope
|
|
40
|
+
definition: >-
|
|
41
|
+
which phases of the lifecycle apply to a piece of work: micro runs
|
|
42
|
+
implementation and testing only, standard starts at requirements, full
|
|
43
|
+
starts at ideation
|
|
44
|
+
not: >-
|
|
45
|
+
how large or how ambitious the change is
|
|
46
|
+
|
|
47
|
+
- term: claim
|
|
48
|
+
definition: >-
|
|
49
|
+
a lock saying which session is currently working on an instance, so two
|
|
50
|
+
sessions in one repository cannot tread on each other
|
|
51
|
+
not: >-
|
|
52
|
+
an assertion, a support ticket, or an expense claim
|
|
53
|
+
|
|
54
|
+
# --- Non-colliding terms. One sentence is enough; no correction needed. ---
|
|
55
|
+
#
|
|
56
|
+
# Ordered by measured traffic across the shipped skills (2026-08-27):
|
|
57
|
+
# template 46, artifact 44, retrospective 20, gate 19, entry criteria 8.
|
|
58
|
+
#
|
|
59
|
+
# `retrospective` is the borderline case. Outside this framework it usually
|
|
60
|
+
# names a meeting, which is arguably a collision — but the source idea
|
|
61
|
+
# classifies it as needing only a definition, on the grounds that a developer
|
|
62
|
+
# meets no *wrong* mental model, just an unfamiliar one. Followed deliberately;
|
|
63
|
+
# revisit if the term turns out to mislead.
|
|
64
|
+
|
|
65
|
+
- term: template
|
|
66
|
+
definition: >-
|
|
67
|
+
a named workflow that fixes which phases a piece of work runs through:
|
|
68
|
+
micro-task, bugfix, quick-feature, full-feature, or spike
|
|
69
|
+
|
|
70
|
+
- term: artifact
|
|
71
|
+
definition: >-
|
|
72
|
+
a document a phase is required to produce, such as requirements.md or
|
|
73
|
+
test-results.md, committed alongside the code it describes
|
|
74
|
+
|
|
75
|
+
- term: retrospective
|
|
76
|
+
definition: >-
|
|
77
|
+
a short written review captured when an instance finishes, which appends
|
|
78
|
+
durable lessons to the guidance layer for the next instance to read
|
|
79
|
+
|
|
80
|
+
- term: gate
|
|
81
|
+
definition: >-
|
|
82
|
+
a check that must pass before work moves to the next phase, run by
|
|
83
|
+
`aidlc gate` in CI or by `aidlc transition` locally
|
|
84
|
+
|
|
85
|
+
- term: phase
|
|
86
|
+
definition: >-
|
|
87
|
+
one named step of the lifecycle, such as requirements or implementation,
|
|
88
|
+
each with its own conditions for starting and for being finished
|
|
89
|
+
|
|
90
|
+
- term: entry criteria
|
|
91
|
+
definition: >-
|
|
92
|
+
what must already be true before a phase is allowed to start
|
|
93
|
+
|
|
94
|
+
- term: exit criteria
|
|
95
|
+
definition: >-
|
|
96
|
+
what must be true before a phase can be called finished
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rasensio/aidlc-content",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"guidance/",
|
|
19
19
|
"capabilities/",
|
|
20
20
|
"phases/",
|
|
21
|
-
"tutorials/"
|
|
21
|
+
"tutorials/",
|
|
22
|
+
"glossary.yaml"
|
|
22
23
|
],
|
|
23
24
|
"engines": {
|
|
24
25
|
"node": ">=18.0.0"
|
package/skills/00-overview.md
CHANGED
|
@@ -8,6 +8,19 @@ priority: 100
|
|
|
8
8
|
|
|
9
9
|
You are operating within the AI Development Lifecycle (AIDLC) framework. This skill defines how you interact with lifecycle state and follow phase-driven development.
|
|
10
10
|
|
|
11
|
+
## The words this framework uses
|
|
12
|
+
|
|
13
|
+
Three of these already mean something else in software, so read those definitions even if the word looks familiar — that is where the expensive misunderstandings come from.
|
|
14
|
+
|
|
15
|
+
- {{glossary:instance}}
|
|
16
|
+
- {{glossary:scope}}
|
|
17
|
+
- {{glossary:claim}}
|
|
18
|
+
- {{glossary:phase}}
|
|
19
|
+
- {{glossary:artifact}}
|
|
20
|
+
- {{glossary:gate}}
|
|
21
|
+
- {{glossary:template}}
|
|
22
|
+
- {{glossary:retrospective}}
|
|
23
|
+
|
|
11
24
|
## Lifecycle Phases
|
|
12
25
|
|
|
13
26
|
The AIDLC defines seven ordered phases. Not all apply to every task:
|
|
@@ -78,7 +91,7 @@ All state lives in `.aidlc/state/<instance-name>/`. Read and write state as foll
|
|
|
78
91
|
|
|
79
92
|
### Writing State
|
|
80
93
|
|
|
81
|
-
1. **Before mutating state**, check
|
|
94
|
+
1. **Before mutating state**, check whether another session already holds a claim on the instance. Claims live in `<git-common-dir>/aidlc/claims/<instance>.yaml` (resolve via `git rev-parse --git-common-dir`) so every worktree of the repo sees the same claims; outside a git repo (or on instances not yet migrated) the claim is the `claim:` field in `instance.yaml`. If another session holds a non-stale claim, warn and request override confirmation.
|
|
82
95
|
2. Claim with `aidlc claim <instance>` (release with `aidlc release <instance>`) — it writes the claim file and appends the claim event to `sessions.ndjson` in one step. Without the CLI, do both writes yourself: write the claim file (fields: `session`, `claimed_at`, `id_source`, optional `renewed_at`/`worktree_path`), then append `{"event":"claim|release","session_id":"...","id_source":"agent","agent":"<platform>","timestamp":"<ISO 8601 UTC>"}` to `.aidlc/state/<instance>/sessions.ndjson`. Never rewrite that file — append only. If the CLI warns your claim is near timeout, run `aidlc claim --renew <instance>`. Renew at every phase transition and before long-running operations — a claim older than `claim_timeout_minutes` counts as stale.
|
|
83
96
|
3. Update phase state files as you produce artifacts.
|
|
84
97
|
4. Append a transition record to `transitions.log` only on successful phase transitions. When completing a phase, set `metrics.elapsed_seconds` in its `phase-<name>.yaml` from `entered_at` → `completed_at` — cost and time reports read it.
|
|
@@ -143,7 +156,7 @@ On each lifecycle event — `on-instance-start`, `on-phase-enter`, `on-phase-exi
|
|
|
143
156
|
|
|
144
157
|
## User Input Protocol (Inbox)
|
|
145
158
|
|
|
146
|
-
When a phase needs substantial input from the user — open decisions, structured requirements, extensive details — write an
|
|
159
|
+
When a phase needs substantial input from the user — open decisions, structured requirements, extensive details — write an input file to `.aidlc/inbox/` instead of asking many sequential chat questions or scattering files in ad-hoc locations (`temp/`, project root):
|
|
147
160
|
|
|
148
161
|
1. Name the file `<instance>-<topic>.md` (e.g. `local-knowledge-graph-open-decisions.md`).
|
|
149
162
|
2. Give each question its own section: plain-language background first (assume the user has not read the underlying spec), then the options as `- [ ]` checkboxes with trade-offs spelled out. Mark your recommendation.
|
|
@@ -177,5 +190,5 @@ Never store credentials, tokens, or secrets in state files or artifacts.
|
|
|
177
190
|
## Token Efficiency
|
|
178
191
|
|
|
179
192
|
- Read compact state files, not full artifacts, to determine progress
|
|
180
|
-
- Use
|
|
193
|
+
- Use artifact summaries (`<artifact>.summary.md`) when available
|
|
181
194
|
- Load only the skill for the current phase, not all skills at once
|
|
@@ -13,6 +13,8 @@ Before responding with this skill, check whether `.aidlc/context/` exists and co
|
|
|
13
13
|
|
|
14
14
|
## When to Activate
|
|
15
15
|
|
|
16
|
+
> {{glossary:template}}
|
|
17
|
+
|
|
16
18
|
Respond using this skill when the user asks any of the following:
|
|
17
19
|
- "How do I get started?"
|
|
18
20
|
- "How do I fix a bug?"
|
|
@@ -30,6 +32,8 @@ All lifecycle work runs on instances — YAML state under `.aidlc/state/<name>/`
|
|
|
30
32
|
|
|
31
33
|
### "How do I fix a bug?"
|
|
32
34
|
|
|
35
|
+
> {{glossary:instance}}
|
|
36
|
+
|
|
33
37
|
1. Create a lifecycle instance from the `bugfix` template (see "Creating an Instance" in **aidlc-overview**).
|
|
34
38
|
2. This gives a focused workflow: reproduce the bug → fix it → test it → deploy. The bugfix template skips the design phase and requires a `reproduction.md` artifact first.
|
|
35
39
|
3. Follow **aidlc-continue** at any point to pick up the next step.
|
|
@@ -95,6 +99,8 @@ If not installed yet, run `npx @rasensio/aidlc init` in a terminal. Installation
|
|
|
95
99
|
|
|
96
100
|
## Choosing the Right Template
|
|
97
101
|
|
|
102
|
+
> {{glossary:scope}}
|
|
103
|
+
|
|
98
104
|
| You want to... | Use this template | Scope |
|
|
99
105
|
|---------------|-------------------|-------|
|
|
100
106
|
| Fix a bug | `bugfix` | Standard (no design) |
|
package/skills/03-entry-point.md
CHANGED
|
@@ -20,6 +20,10 @@ If `.aidlc/context/` does not exist or contains no `.md` files, defer to the **a
|
|
|
20
20
|
|
|
21
21
|
## Step 1 — Read State
|
|
22
22
|
|
|
23
|
+
> {{glossary:instance}}
|
|
24
|
+
> {{glossary:claim}}
|
|
25
|
+
> {{glossary:template}}
|
|
26
|
+
|
|
23
27
|
1. List the directories under `.aidlc/state/`. Each directory is a lifecycle instance.
|
|
24
28
|
2. For each instance, read `instance.yaml` (current phase, template, scope, claim) and the `phase-<name>.yaml` files to compute completion (complete artifacts ÷ total required artifacts).
|
|
25
29
|
3. Read `.aidlc/config.yaml` for project defaults (scope, template) if present.
|
|
@@ -12,6 +12,8 @@ native_mode_hint:
|
|
|
12
12
|
---
|
|
13
13
|
# Idea Capture and Backlog
|
|
14
14
|
|
|
15
|
+
> {{glossary:instance}}
|
|
16
|
+
|
|
15
17
|
`.aidlc/ideas/` is a first-class inbox, independent of every lifecycle phase. Ideas are captured cheaply now and converted into instances later. Capture is legal at any moment: mid-implementation on another instance, from a second session, or with no instance at all.
|
|
16
18
|
|
|
17
19
|
## Idea File Format
|
|
@@ -50,6 +52,8 @@ List `.aidlc/ideas/*.md` reading only frontmatter and the `# Idea:` title line
|
|
|
50
52
|
|
|
51
53
|
Promotion is where the backlog meets the lifecycle:
|
|
52
54
|
|
|
55
|
+
> {{glossary:scope}}
|
|
56
|
+
|
|
53
57
|
1. If the idea's `depends_on` names ideas that are still `raw`, say so and confirm before proceeding — promoting out of order is allowed but should be deliberate.
|
|
54
58
|
2. Choose a template and scope as usual (defaults from `.aidlc/config.yaml`; see **aidlc-getting-started**).
|
|
55
59
|
3. Create the instance per "Creating an Instance" in **aidlc-overview** — including firing `on-instance-start` lifecycle actions.
|
package/skills/10-ideation.md
CHANGED
|
@@ -12,6 +12,8 @@ Explore the problem space before committing to a solution. Define what we are bu
|
|
|
12
12
|
|
|
13
13
|
## Entry Criteria
|
|
14
14
|
|
|
15
|
+
> {{glossary:scope}}
|
|
16
|
+
|
|
15
17
|
- A lifecycle instance has been created with a Full scope
|
|
16
18
|
- The instance is claimed by this session
|
|
17
19
|
|
|
@@ -26,7 +28,9 @@ and open questions.
|
|
|
26
28
|
|
|
27
29
|
## Instructions
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
> {{glossary:artifact}}
|
|
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.
|
|
30
34
|
2. **Clarify the problem.** Ask the user what they want to build and why. Identify the core need vs. nice-to-haves.
|
|
31
35
|
3. **Explore constraints.** Document: timeline, technical constraints, platform limitations, team size, budget considerations.
|
|
32
36
|
4. **Generate options.** Propose 2-3 approaches. For each, note trade-offs (complexity, time, risk).
|
|
@@ -12,6 +12,8 @@ Translate the ideation output (or the user's direct request) into precise, testa
|
|
|
12
12
|
|
|
13
13
|
## Entry Criteria
|
|
14
14
|
|
|
15
|
+
> {{glossary:scope}}
|
|
16
|
+
|
|
15
17
|
- Ideation phase complete (Full scope) OR instance created with Standard scope
|
|
16
18
|
- The instance is claimed by this session
|
|
17
19
|
|
|
@@ -21,7 +23,9 @@ Translate the ideation output (or the user's direct request) into precise, testa
|
|
|
21
23
|
|
|
22
24
|
## Instructions
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
> {{glossary:artifact}}
|
|
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.
|
|
25
29
|
2. **Write user stories.** Use the format: "As a [role], I want [capability], so that [benefit]."
|
|
26
30
|
3. **Define acceptance criteria.** Each criterion must be:
|
|
27
31
|
- Specific and unambiguous
|
|
@@ -30,7 +34,7 @@ Translate the ideation output (or the user's direct request) into precise, testa
|
|
|
30
34
|
- **Identified**: write every criterion as a list item `- AC-<n>: <text>` (bold variants `- **AC-<n>**: ...` and `- **AC-<n>:** ...` are also valid). Assign `AC-1`, `AC-2`, ... sequentially. IDs are never renumbered or reused — an amended criterion keeps its meaning or is retired: mark it `- AC-<n> (retired YYYY-MM-DD, superseded by AC-<m>): <text>` and issue a new ID. The testing-phase gate parses these IDs and fails on any active criterion without a referencing test.
|
|
31
35
|
4. **Set scope boundaries.** Explicitly state what is NOT included.
|
|
32
36
|
5. **Non-functional requirements.** Address performance, security, accessibility, and compatibility where relevant.
|
|
33
|
-
6. **For complex input or open decisions**: If requirements are extensive, or unresolved decisions block the draft, create an
|
|
37
|
+
6. **For complex input or open decisions**: If requirements are extensive, or unresolved decisions block the draft, create an input file in `.aidlc/inbox/` following the User Input Protocol in **aidlc-overview**, rather than asking many sequential questions. Prefer drafting `requirements.md` early with unresolved points marked as explicit decision blocks — users decide better reacting to a concrete draft than answering abstract questions.
|
|
34
38
|
|
|
35
39
|
## Bugfix Reproduction (bugfix template)
|
|
36
40
|
|
package/skills/30-design.md
CHANGED
|
@@ -12,6 +12,8 @@ Produce a technical design that satisfies the requirements. Define architecture,
|
|
|
12
12
|
|
|
13
13
|
## Entry Criteria
|
|
14
14
|
|
|
15
|
+
> {{glossary:instance}}
|
|
16
|
+
|
|
15
17
|
- Requirements phase complete
|
|
16
18
|
- The instance is claimed by this session
|
|
17
19
|
|
|
@@ -21,8 +23,10 @@ Produce a technical design that satisfies the requirements. Define architecture,
|
|
|
21
23
|
|
|
22
24
|
## Instructions
|
|
23
25
|
|
|
26
|
+
> {{glossary:gate}}
|
|
27
|
+
|
|
24
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.
|
|
25
|
-
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
|
|
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.
|
|
26
30
|
3. **Define architecture.** Describe the high-level structure: components, their responsibilities, and how they communicate.
|
|
27
31
|
4. **Specify interfaces.** For each component boundary, define the contract (function signatures, API shapes, data types).
|
|
28
32
|
5. **Data flow.** Document how data moves through the system — inputs, transformations, storage, outputs.
|
|
@@ -12,6 +12,8 @@ Produce working code that satisfies the design and requirements. Follow project
|
|
|
12
12
|
|
|
13
13
|
## Entry Criteria
|
|
14
14
|
|
|
15
|
+
> {{glossary:scope}}
|
|
16
|
+
|
|
15
17
|
- Design phase complete (Full/Standard scope) OR instance created with Micro scope (task description + criteria exist)
|
|
16
18
|
- The instance is claimed by this session
|
|
17
19
|
|
|
@@ -22,8 +24,10 @@ Produce working code that satisfies the design and requirements. Follow project
|
|
|
22
24
|
|
|
23
25
|
## Instructions
|
|
24
26
|
|
|
27
|
+
> {{glossary:gate}}
|
|
28
|
+
|
|
25
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.
|
|
26
|
-
2. **Load guidance.** Read all active
|
|
30
|
+
2. **Load guidance.** Read all active guidance layers from `.aidlc/guidance/index.yaml`. Apply their rules during implementation.
|
|
27
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.
|
|
28
32
|
4. **Write code.** Follow the design interfaces. Match existing code style (naming, formatting, error handling patterns).
|
|
29
33
|
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
|
@@ -24,7 +24,10 @@ Verify that the implementation satisfies all acceptance criteria. Produce eviden
|
|
|
24
24
|
|
|
25
25
|
## Instructions
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
> {{glossary:gate}}
|
|
28
|
+
> {{glossary:artifact}}
|
|
29
|
+
|
|
30
|
+
1. **Review acceptance criteria.** Read `requirements.md` (or task description for Micro scope). Each criterion needs at least one test. 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
31
|
2. **Write automated tests.** Follow the project's existing test patterns:
|
|
29
32
|
- Unit tests for pure logic and edge cases
|
|
30
33
|
- Integration tests for component interactions
|
package/skills/60-deployment.md
CHANGED
|
@@ -12,7 +12,7 @@ Prepare and execute the release. Ensure all preceding phases are complete, all g
|
|
|
12
12
|
|
|
13
13
|
## Entry Criteria
|
|
14
14
|
|
|
15
|
-
- All preceding required phases have status `complete` in
|
|
15
|
+
- All preceding required phases have status `complete` in `.aidlc/state/<instance>/`
|
|
16
16
|
- Testing phase complete with all tests passing
|
|
17
17
|
- Security sign-off recorded (if a security review phase is configured)
|
|
18
18
|
- The instance is claimed by this session
|
|
@@ -26,6 +26,9 @@ deployment checklist.
|
|
|
26
26
|
|
|
27
27
|
## Instructions
|
|
28
28
|
|
|
29
|
+
> {{glossary:gate}}
|
|
30
|
+
> {{glossary:artifact}}
|
|
31
|
+
|
|
29
32
|
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.)
|
|
30
33
|
2. **Write release plan.** Document in the phase's required artifact (see Required Artifacts above):
|
|
31
34
|
- What is being deployed (version, changes summary)
|
package/skills/70-maintenance.md
CHANGED
|
@@ -12,6 +12,8 @@ Ensure the deployed feature remains healthy. Update documentation, address feedb
|
|
|
12
12
|
|
|
13
13
|
## Entry Criteria
|
|
14
14
|
|
|
15
|
+
> {{glossary:instance}}
|
|
16
|
+
|
|
15
17
|
- Deployment phase complete
|
|
16
18
|
- The instance is claimed by this session
|
|
17
19
|
|
|
@@ -56,6 +58,8 @@ You MUST describe the change, confirm the target environment, and wait for expli
|
|
|
56
58
|
|
|
57
59
|
## Completion
|
|
58
60
|
|
|
61
|
+
> {{glossary:retrospective}}
|
|
62
|
+
|
|
59
63
|
For maintenance-terminal instances the completion moment already fired on maintenance *entry* (see **aidlc-deployment**) — entering this phase means the instance is complete and its retrospective has run or is pending. Do not fire `on-instance-complete` again when closing the phase.
|
|
60
64
|
|
|
61
65
|
When exit criteria are met, update `phase-maintenance.yaml` status to `complete` and append a transition record to `transitions.log`. If no retrospective exists for the instance (legacy completion paths), offer to run the **aidlc-retrospective** skill.
|
package/skills/80-review.md
CHANGED
|
@@ -11,6 +11,8 @@ priority: 60
|
|
|
11
11
|
|
|
12
12
|
Provide a structured, critical review of a lifecycle artifact from fresh context. Surface ambiguities, contradictions, missing edge cases, and risks before the artifact drives downstream work.
|
|
13
13
|
|
|
14
|
+
> {{glossary:artifact}}
|
|
15
|
+
|
|
14
16
|
## Important
|
|
15
17
|
|
|
16
18
|
You MUST perform this review with fresh eyes. If you authored the artifact being reviewed, delegate to a separate session or subagent. Self-review defeats the purpose.
|
|
@@ -70,7 +72,9 @@ reviewer: <session-id>
|
|
|
70
72
|
|
|
71
73
|
## Review Gate
|
|
72
74
|
|
|
73
|
-
|
|
75
|
+
> {{glossary:gate}}
|
|
76
|
+
|
|
77
|
+
When a workflow template configures an adversarial review gate for a phase, the phase transition is blocked until:
|
|
74
78
|
- A findings file exists for the phase's required artifacts
|
|
75
79
|
- No finding with severity `critical` has status `open`
|
|
76
80
|
|
package/skills/81-continue.md
CHANGED
|
@@ -10,8 +10,12 @@ priority: 70
|
|
|
10
10
|
|
|
11
11
|
Resume an in-progress lifecycle instance efficiently. Determine where work left off and continue from that exact point without re-reading full artifacts or re-explaining context.
|
|
12
12
|
|
|
13
|
+
> {{glossary:instance}}
|
|
14
|
+
|
|
13
15
|
## Instructions
|
|
14
16
|
|
|
17
|
+
> {{glossary:claim}}
|
|
18
|
+
|
|
15
19
|
1. **Load state.** Read `.aidlc/state/<instance>/instance.yaml` to get:
|
|
16
20
|
- Current phase
|
|
17
21
|
- Template name
|
|
@@ -57,4 +61,4 @@ If continuation leads to a phase that involves sensitive operations (Deployment,
|
|
|
57
61
|
|
|
58
62
|
- Do NOT re-read unchanged files from prior sessions
|
|
59
63
|
- Use state fields to determine progress, not artifact content
|
|
60
|
-
- Load
|
|
64
|
+
- Load artifact summaries in place of full documents when summaries exist
|
package/skills/82-add-action.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: aidlc-add-action
|
|
3
|
-
description: Translates natural language automation descriptions into
|
|
3
|
+
description: Translates natural language automation descriptions into lifecycle action declarations
|
|
4
4
|
phase: implementation
|
|
5
5
|
priority: 55
|
|
6
6
|
---
|
|
@@ -8,7 +8,7 @@ priority: 55
|
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
10
10
|
|
|
11
|
-
Help the user create
|
|
11
|
+
Help the user create lifecycle actions from natural language descriptions. Translate intent into a concrete, validated `.aidlc/actions.yaml` entry.
|
|
12
12
|
|
|
13
13
|
## Instructions
|
|
14
14
|
|
package/skills/83-add-skill.md
CHANGED
|
@@ -31,6 +31,8 @@ system; skills for repeatable operations of the system.*
|
|
|
31
31
|
If the description is really a new capability — the system cannot do this yet, and doing it once requires
|
|
32
32
|
building something — say so plainly and offer the alternative:
|
|
33
33
|
|
|
34
|
+
> {{glossary:instance}}
|
|
35
|
+
|
|
34
36
|
> "This sounds like a change to the system rather than a repeatable operation of it: <reason>. That
|
|
35
37
|
> usually belongs in the lifecycle. I can capture it as an idea (`aidlc-idea`) or start an instance
|
|
36
38
|
> instead. Or if you would rather have the skill anyway, say so and I will generate it."
|
|
@@ -11,6 +11,8 @@ trigger: When an instance reaches its completion moment, a retro-pending marker
|
|
|
11
11
|
|
|
12
12
|
Close the feedback loop: when an instance completes, capture what the work taught us while it is fresh, and write durable lessons where the next instance will read them. This is the system-level quality mechanism — gates and reviews protect one instance; retrospectives make the next one start smarter.
|
|
13
13
|
|
|
14
|
+
> {{glossary:instance}}
|
|
15
|
+
|
|
14
16
|
## When to Run
|
|
15
17
|
|
|
16
18
|
- **At every instance's completion moment**, regardless of scope or template. The completion moment is the last applicable phase (template × scope) reaching complete — except when that phase is maintenance, where **entering** maintenance is the moment (maintenance is open-ended).
|
|
@@ -21,6 +23,8 @@ Run the retro **before** any completion cleanup (worktree removal, claim release
|
|
|
21
23
|
|
|
22
24
|
## Retro Flow
|
|
23
25
|
|
|
26
|
+
> {{glossary:retrospective}}
|
|
27
|
+
|
|
24
28
|
1. **Idempotency check.** If `retrospective.md` already exists in the instance state dir, offer to update or skip — never duplicate. A skip still removes the retro-pending marker.
|
|
25
29
|
2. **Gather state.** Read `instance.yaml`, `phase-*.yaml`, and `transitions.log`. For the cost summary, prefer `aidlc cost <instance>` (it applies fidelity precedence); only read `costs.ndjson` raw when the CLI is unavailable, and mark that summary approximate. No cost data → omit the cost section entirely, never write zeros.
|
|
26
30
|
3. **Ask — one round-trip.** Three questions in a single message: what surprised us? what would we do differently? what took longer than expected? For **Micro scope**, compress to one question: "anything surprising, worth doing differently, or slower than expected?" Declining the retro is fine: remove the marker, write nothing.
|