@rasensio/aidlc-content 1.12.0 → 1.13.1
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.
|
|
3
|
+
"version": "1.13.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"capabilities/",
|
|
20
20
|
"phases/",
|
|
21
21
|
"tutorials/",
|
|
22
|
+
"resources/",
|
|
22
23
|
"glossary.yaml"
|
|
23
24
|
],
|
|
24
25
|
"engines": {
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: roadmap-item
|
|
3
|
+
description: Turns a rough idea into one correctly-formatted roadmap item file for an AIDLC project, ready to commit to the project's roadmap inbox
|
|
4
|
+
version: {{version}}
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Write a Roadmap Item
|
|
8
|
+
|
|
9
|
+
Your job is to turn what someone tells you into **exactly one markdown file**, formatted so
|
|
10
|
+
an AIDLC project can pick it up without anyone editing it by hand.
|
|
11
|
+
|
|
12
|
+
The person you are helping may not be technical. Do not ask them about YAML, filenames, git,
|
|
13
|
+
or metadata. Ask about their idea. You produce the formatting.
|
|
14
|
+
|
|
15
|
+
## What to ask
|
|
16
|
+
|
|
17
|
+
Ask for whatever is missing, a couple of questions at a time, and stop as soon as you can
|
|
18
|
+
fill the body sections. Three or four exchanges is plenty. A rough item is worth more
|
|
19
|
+
than a polished one that never got written.
|
|
20
|
+
|
|
21
|
+
You need:
|
|
22
|
+
|
|
23
|
+
1. What problem this solves, and who has the problem.
|
|
24
|
+
2. What would be true if it worked.
|
|
25
|
+
3. Whether it is meant to earn money, save money, or neither. Ask this plainly —
|
|
26
|
+
"would this make money, save money, or is it just something that needs doing?" —
|
|
27
|
+
and accept "neither" as a perfectly good answer.
|
|
28
|
+
4. Their name, for the record.
|
|
29
|
+
5. Today's date, if you cannot determine it reliably.
|
|
30
|
+
|
|
31
|
+
Anything they do not know is allowed to stay unknown. Write `Not yet decided.` under a
|
|
32
|
+
heading rather than inventing a plausible answer — a fabricated success metric is worse than
|
|
33
|
+
an admitted gap, because the next reader cannot tell it was a guess.
|
|
34
|
+
|
|
35
|
+
## What to produce
|
|
36
|
+
|
|
37
|
+
One file. Name it `YYYYMMDD-short-slug.md`, using today's date and two to four words from
|
|
38
|
+
the title, lowercase, hyphen-separated. Example: `20260315-invite-teammates.md`.
|
|
39
|
+
|
|
40
|
+
The file must start with this frontmatter, at the very first line, with no blank line before
|
|
41
|
+
it:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
---
|
|
45
|
+
id: item-YYYYMMDD-short-slug
|
|
46
|
+
title: <one line, sentence case>
|
|
47
|
+
created_at: YYYY-MM-DD
|
|
48
|
+
author: <their name, as they gave it>
|
|
49
|
+
source: agent
|
|
50
|
+
promoted_to: null
|
|
51
|
+
depends_on: []
|
|
52
|
+
history:
|
|
53
|
+
- { status: inbox, at: YYYY-MM-DD }
|
|
54
|
+
---
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Rules for those fields:
|
|
58
|
+
|
|
59
|
+
- `id` is the filename without `.md`, prefixed with `item-`. It never changes afterwards,
|
|
60
|
+
even if the file is renamed or moved.
|
|
61
|
+
- `created_at` and the `history` date are both today, and both match the filename's date.
|
|
62
|
+
- `source` is always `agent` here, because you drafted it. It records how the item was
|
|
63
|
+
written, not who asked for it.
|
|
64
|
+
- `promoted_to` stays `null`. Leave `depends_on` empty — you cannot know the identifiers of
|
|
65
|
+
other items in the project.
|
|
66
|
+
- Do not add any other field, and do not add a `status` field. Status is recorded by which
|
|
67
|
+
folder the file sits in, not inside the file.
|
|
68
|
+
|
|
69
|
+
Then the body, with these five headings and nothing else at this level:
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
# <the title again>
|
|
73
|
+
|
|
74
|
+
## Executive Summary
|
|
75
|
+
|
|
76
|
+
## Problem
|
|
77
|
+
|
|
78
|
+
## Who it's for
|
|
79
|
+
|
|
80
|
+
## What success looks like
|
|
81
|
+
|
|
82
|
+
## Out of scope
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Write plain prose under each. Short paragraphs or bullets, no tables. Two or three sentences
|
|
86
|
+
per section is normal. `Out of scope` is where you record what they explicitly said they do
|
|
87
|
+
*not* want — leave it as `Nothing stated yet.` if they said nothing.
|
|
88
|
+
|
|
89
|
+
## The Executive Summary
|
|
90
|
+
|
|
91
|
+
This is the section a busy decision-maker reads instead of the item. It comes first in the
|
|
92
|
+
file and you write it **last**, once the other four sections exist — a summary written first
|
|
93
|
+
is a guess.
|
|
94
|
+
|
|
95
|
+
Use exactly these six labels, in this order, one or two sentences each:
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
- **What it is** — the change itself, in one sentence, in words a non-engineer would use.
|
|
99
|
+
- **Who benefits** — the person who feels the pain today, named by role.
|
|
100
|
+
- **Customer value** — what they can do afterwards that they cannot do now.
|
|
101
|
+
- **Revenue** — Direct, Indirect, or None, then one sentence saying why.
|
|
102
|
+
- **Cost and risk** — rough size (hours, days, weeks) and the main way it goes wrong.
|
|
103
|
+
- **Recommendation** — Do now, Do later, or Don't do, plus the reason in one line.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Four rules make the difference between a summary worth reading and decoration:
|
|
107
|
+
|
|
108
|
+
- **`None` is a real answer for revenue, and often the right one.** Plenty of necessary work
|
|
109
|
+
earns nothing directly. Writing `Indirect` for everything makes the field useless, which is
|
|
110
|
+
worse than leaving it blank, because it looks answered.
|
|
111
|
+
- **Do not sell the idea.** You are summarising what someone told you, not pitching it. If
|
|
112
|
+
they described a small convenience, say so. An honest `Do later` is more useful to them
|
|
113
|
+
than an enthusiastic `Do now` that turns out wrong.
|
|
114
|
+
- **Say `Not yet decided.` for any label you cannot fill.** Same rule as the rest of the
|
|
115
|
+
file: an admitted gap beats an invented number, because the next reader can tell the
|
|
116
|
+
difference.
|
|
117
|
+
- **Keep it to six lines.** If the reasoning needs more room, that room is the `Problem`
|
|
118
|
+
section. A summary that runs to a page is not a summary.
|
|
119
|
+
|
|
120
|
+
## Where it goes
|
|
121
|
+
|
|
122
|
+
Tell them to add the file to their project's roadmap inbox:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
.aidlc/roadmap/inbox/YYYYMMDD-short-slug.md
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
If they do not use git or a terminal, the project's web interface will let them add a file
|
|
129
|
+
to that folder directly — they navigate to it, choose to add a file, paste the contents, and
|
|
130
|
+
save. That is the whole handoff. Somebody on the project reviews the inbox and decides what
|
|
131
|
+
happens next.
|
|
132
|
+
|
|
133
|
+
## Before you finish
|
|
134
|
+
|
|
135
|
+
- Never include passwords, API keys, tokens, or access credentials. If they paste one, leave
|
|
136
|
+
it out and tell them you did.
|
|
137
|
+
- Never include a person's contact details or any customer's personal data.
|
|
138
|
+
- Produce the file as text they can copy in one piece, and give them the filename separately
|
|
139
|
+
so they do not have to guess it.
|
|
140
|
+
- One idea, one file. If they described three unrelated things, say so and offer to write
|
|
141
|
+
three files.
|
package/skills/00-overview.md
CHANGED
|
@@ -66,7 +66,7 @@ phase artifacts to publish a post, rotate a log, or regenerate a report.
|
|
|
66
66
|
|
|
67
67
|
An operation sometimes reveals a missing capability — you go to publish a post and discover the system
|
|
68
68
|
has no way to mark it as a draft. When that happens, the *operation* stops being the work and the
|
|
69
|
-
missing capability re-enters the lifecycle as a normal instance. Capture it with **aidlc-
|
|
69
|
+
missing capability re-enters the lifecycle as a normal instance. Capture it with **aidlc-roadmap** or start
|
|
70
70
|
an instance; do not quietly extend the skill into building the feature.
|
|
71
71
|
|
|
72
72
|
### Quality mechanisms live inside the skill
|
|
@@ -163,9 +163,9 @@ When a phase needs substantial input from the user — open decisions, structure
|
|
|
163
163
|
3. Tell the user the file path and wait for their edits — do not proceed on unanswered questions.
|
|
164
164
|
4. When the user has answered, fold the outcomes into the phase artifact and state records. The inbox file is scratch input, not an artifact — offer to delete it once its content has landed.
|
|
165
165
|
|
|
166
|
-
##
|
|
166
|
+
## Roadmap Capture
|
|
167
167
|
|
|
168
|
-
When the user shares an idea tangential to the current work, offer to record it in `.aidlc/
|
|
168
|
+
When the user shares an idea tangential to the current work, offer to record it in `.aidlc/roadmap/inbox/` (see **aidlc-roadmap**) and continue the current phase — do not derail into ideation. Capture touches no instance state, so it is safe at any point in any phase.
|
|
169
169
|
|
|
170
170
|
## Instance Completion and Retrospective
|
|
171
171
|
|
package/skills/03-entry-point.md
CHANGED
|
@@ -27,7 +27,7 @@ If `.aidlc/context/` does not exist or contains no `.md` files, defer to the **a
|
|
|
27
27
|
1. List the directories under `.aidlc/state/`. Each directory is a lifecycle instance.
|
|
28
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).
|
|
29
29
|
3. Read `.aidlc/config.yaml` for project defaults (scope, template) if present.
|
|
30
|
-
4. Count
|
|
30
|
+
4. Count roadmap items per status directory under `.aidlc/roadmap/` (`inbox`, `backlog`, `in-progress`, `done`, `hold`) — count files, and read frontmatter only if a title is needed. Never read item bodies. Status is the directory; there is no status field to read.
|
|
31
31
|
5. Check `<git-common-dir>/aidlc/retro-pending/` (resolve via `git rev-parse --git-common-dir`) for pending-retrospective markers. Each marker adds a menu entry: **Run retrospective for `<instance>`** (routes to the **aidlc-retrospective** skill). A marker whose instance has no state dir and no registry entry is stale — remove it and note the cleanup in one line.
|
|
32
32
|
|
|
33
33
|
Do not read artifact bodies or transition history to build the menu — the compact state files are enough.
|
|
@@ -38,15 +38,16 @@ Compose a short menu from the state. Include only the options that make sense:
|
|
|
38
38
|
|
|
39
39
|
- **Continue `<instance>`** — one entry per incomplete instance, showing current phase and completion percentage. Most recently updated first.
|
|
40
40
|
- **Start something new** — always.
|
|
41
|
-
- **Capture
|
|
42
|
-
- **
|
|
41
|
+
- **Capture a roadmap item** — always.
|
|
42
|
+
- **Triage the inbox** — when `inbox/` is non-empty; show the count (e.g. "3 items awaiting triage"). List this above **Browse** — an untriaged submission is somebody waiting on a decision.
|
|
43
|
+
- **Browse / promote the roadmap** — when any status directory outside `hold/` is non-empty; show counts per status (e.g. "3 inbox, 5 backlog, 1 in progress, 12 done").
|
|
43
44
|
- **Show status** — when at least one instance exists.
|
|
44
45
|
- **Review an artifact** — when at least one instance has a completed artifact.
|
|
45
46
|
- **Help / getting started** — always.
|
|
46
47
|
|
|
47
48
|
Present the options as a numbered list (or the platform's native selection prompt) and wait for a choice. If the user's message already states what they want (e.g. "continue my-feature"), skip the menu and route directly.
|
|
48
49
|
|
|
49
|
-
If `.aidlc/state/` is empty or missing, offer just three options: start something new, capture
|
|
50
|
+
If `.aidlc/state/` is empty or missing, offer just three options: start something new, capture a roadmap item, or help.
|
|
50
51
|
|
|
51
52
|
## Step 3 — Route
|
|
52
53
|
|
|
@@ -54,9 +55,10 @@ If `.aidlc/state/` is empty or missing, offer just three options: start somethin
|
|
|
54
55
|
|--------|--------|
|
|
55
56
|
| Continue an instance | Follow the **aidlc-continue** skill |
|
|
56
57
|
| Start something new | Run the **concurrency gate** (below), then ask what they are building, pick a template (see **aidlc-getting-started**), and create the instance per "Creating an Instance" in **aidlc-overview** |
|
|
57
|
-
| Capture
|
|
58
|
-
|
|
|
59
|
-
|
|
|
58
|
+
| Capture a roadmap item | Follow the **aidlc-roadmap** skill (capture flow) |
|
|
59
|
+
| Triage the inbox | Follow the **aidlc-roadmap** skill (triage flow) |
|
|
60
|
+
| Browse / promote the roadmap | Follow the **aidlc-roadmap** skill (browse/promote flow) |
|
|
61
|
+
| Show status | Summarize each instance from its state files — name, template, current phase, completion %, and whether it looks stalled. When the roadmap is non-empty, append the per-status counts (e.g. "roadmap: 3 inbox, 5 backlog, 12 done") |
|
|
60
62
|
| Review an artifact | Follow the **aidlc-review** skill |
|
|
61
63
|
| Help / getting started | Follow the **aidlc-getting-started** skill |
|
|
62
64
|
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aidlc-roadmap
|
|
3
|
+
description: Captures roadmap items into .aidlc/roadmap/inbox/ at any moment — no instance, claim, or phase required — and browses, triages, promotes, or drops them
|
|
4
|
+
phase: ideation
|
|
5
|
+
priority: 90
|
|
6
|
+
trigger: When the user says "idea:", asks to capture/record an idea or roadmap item, wants to browse the roadmap, or wants to triage, promote, or drop an item
|
|
7
|
+
native_mode_hint:
|
|
8
|
+
claude-code: >-
|
|
9
|
+
This skill is an interactive inbox, not a phase artifact. Do not enter
|
|
10
|
+
plan mode. Capture is a single write-and-confirm; never touch instance
|
|
11
|
+
state while capturing.
|
|
12
|
+
---
|
|
13
|
+
# Roadmap
|
|
14
|
+
|
|
15
|
+
> {{glossary:instance}}
|
|
16
|
+
|
|
17
|
+
`.aidlc/roadmap/` is a first-class inbox, independent of every lifecycle phase. Items 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.
|
|
18
|
+
|
|
19
|
+
Projects have more than one person proposing work, with mixed technical depth, so the roadmap distinguishes *submitted* from *agreed*. A contributor with no checkout can author an item with the portable skill at `.aidlc/resources/skills/roadmap-item/SKILL.md` — loadable into any AI agent — and commit the result to `inbox/`.
|
|
20
|
+
|
|
21
|
+
## Statuses Are Directories
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
.aidlc/roadmap/
|
|
25
|
+
inbox/ submitted, nobody has triaged it
|
|
26
|
+
backlog/ accepted, will do, not started
|
|
27
|
+
in-progress/ an instance exists
|
|
28
|
+
done/ shipped
|
|
29
|
+
hold/ parked or declined
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**The directory an item sits in is its status.** There is no `status` field, and you must never add one — two representations of one fact drift apart, and a wrong status is indistinguishable from a right one. Changing status means moving the file.
|
|
33
|
+
|
|
34
|
+
`hold/` holds both parked and declined items. That conflation is deliberate; `history` and the git log distinguish them when anyone asks.
|
|
35
|
+
|
|
36
|
+
## Item Format
|
|
37
|
+
|
|
38
|
+
One file per item: `.aidlc/roadmap/<status>/YYYYMMDD-<slug>.md`, beginning with exactly these keys in this order:
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
---
|
|
42
|
+
id: item-20260814-cost-tracking
|
|
43
|
+
title: Cost tracking
|
|
44
|
+
created_at: 2026-08-14
|
|
45
|
+
author: Rodrigo Asensio - rasensio@ # optional; omit rather than guess
|
|
46
|
+
source: human # human | agent | import
|
|
47
|
+
promoted_to: null # instance name once promoted, else null
|
|
48
|
+
depends_on: [] # other items, by id
|
|
49
|
+
history:
|
|
50
|
+
- { status: inbox, at: 2026-08-14 }
|
|
51
|
+
---
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
- **`id`** is assigned once and never recomputed. Renaming the file or moving it between statuses leaves it unchanged. The `item-` prefix keeps it textually distinct from the filename so nothing derives one from the other.
|
|
55
|
+
- **`source`** records how the item was written: `human` directly, `agent` drafted by an AI agent from someone's description, `import` migrated from an older format.
|
|
56
|
+
- **`depends_on`** names other items by `id`, so a dependency survives its target moving. Build order is derived from this graph when needed — there is no global `order` field, because concurrent capture from independent sessions cannot coordinate a sequence.
|
|
57
|
+
- **`history`** is append-only and advisory. Append `{ status, at }` when you move an item. An absent or incomplete history is never an error, and current status always comes from the directory — never from the last history entry.
|
|
58
|
+
|
|
59
|
+
Bodies are otherwise free-form. Items authored through the portable skill carry four further headings — Problem, Who it's for, What success looks like, Out of scope — which is a useful shape, not a validated one.
|
|
60
|
+
|
|
61
|
+
### Every Item Opens With an Executive Summary
|
|
62
|
+
|
|
63
|
+
The first section of the body, before anything else, is `## Executive Summary` — six labelled lines, nothing more:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
## Executive Summary
|
|
67
|
+
|
|
68
|
+
- **What it is** — the change itself, in one sentence, in words a non-engineer would use.
|
|
69
|
+
- **Who benefits** — the person who feels the pain today, named by role.
|
|
70
|
+
- **Customer value** — what they can do afterwards that they cannot do now.
|
|
71
|
+
- **Revenue** — Direct, Indirect, or None, then one sentence saying why.
|
|
72
|
+
- **Cost and risk** — rough size (hours, days, weeks) and the main way it goes wrong.
|
|
73
|
+
- **Recommendation** — Do now, Do later, or Don't do, plus the reason in one line.
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
This exists so a triage decision can be made from the top of the file. An item whose value cannot be stated in six lines is an item nobody can decide about, and it will sit in `inbox/` until somebody re-derives the case from scratch.
|
|
77
|
+
|
|
78
|
+
Four rules keep it honest:
|
|
79
|
+
|
|
80
|
+
- **`None` is a real answer for revenue, and often the correct one.** Lifecycle plumbing earns nothing directly. Writing `Indirect` for everything makes the field useless, which is worse than leaving it blank because it reads as answered. This is also the cheapest available check against the self-repair trap: a meta-feature that has to write `Revenue — None` and `Customer value — none, it observes the lifecycle` has declared itself.
|
|
81
|
+
- **Write it last, from the rest of the body.** A summary drafted before the detail is a guess wearing a summary's clothes.
|
|
82
|
+
- **`Not yet decided.` for any label you cannot fill.** An admitted gap beats an invented figure; the next reader can tell the difference.
|
|
83
|
+
- **Six lines, no more.** Longer reasoning belongs in the sections below it.
|
|
84
|
+
|
|
85
|
+
Older items may predate this section. Add it when you next touch such an item — derived from what the item already says, never from fresh speculation — rather than sweeping the whole directory.
|
|
86
|
+
|
|
87
|
+
## Capture
|
|
88
|
+
|
|
89
|
+
1. **Resolve the roadmap root.** Always write to the **primary checkout's** `.aidlc/roadmap/`, never a worktree's copy: resolve via `git rev-parse --git-common-dir` (the directory containing that path is the primary checkout). Outside a git repo, use the current project root. Create `inbox/` if missing.
|
|
90
|
+
2. **Name the file.** `YYYYMMDD-<slug>.md` — today's date plus a short (2–4 word) slug.
|
|
91
|
+
3. **Handle collisions.** If the filename already exists in *any* status directory, ask one question — extend the existing item or new item? On extend, append a dated `## Update (YYYY-MM-DD)` section to it where it is; on new, suffix the slug (`-2`). Never silently overwrite.
|
|
92
|
+
4. **Write the file** into `inbox/`, with `source: human`, `promoted_to: null`, and one `history` entry dated today. Record `depends_on` only if the braindump itself names other items; never ask for dependencies. Do not interrogate the user for structure — capture friction kills inboxes; one braindump in, one file out.
|
|
93
|
+
5. **Draft the executive summary from the braindump, do not extract it by interview.** You write those six lines; the user does not. Ask at most one question, and only when the braindump says nothing about who wants this or why — a good one is "would this make money, save money, or is it just something that needs doing?". Anything still unknown is `Not yet decided.`, which is the point of having the label.
|
|
94
|
+
6. **Confirm and return.** Report the file path and the `Recommendation` line, then return to whatever was happening. Showing the recommendation lets the user correct a wrong read immediately, while the context is still in front of them.
|
|
95
|
+
|
|
96
|
+
**Hard rule:** capture never reads or writes anything under `.aidlc/state/` — no claims, no phase files, no transitions log. Two sessions capturing simultaneously just produce two files; no locking exists or is needed. Do not auto-commit; staging is the user's.
|
|
97
|
+
|
|
98
|
+
If the user includes credentials, tokens, or secrets in a braindump, flag it and omit them from the file.
|
|
99
|
+
|
|
100
|
+
## Browse
|
|
101
|
+
|
|
102
|
+
List each status directory, reading **only frontmatter and the containing directory** — never item bodies. Show each item's date, title, status, and dependencies. Group by status in lifecycle order and give a count per status. Flag `inbox/` items first: they are waiting on a decision only a human can make. Then flag `backlog/` items whose dependencies are all `done` — those are the natural next candidates. Offer to open, triage, promote, or drop.
|
|
103
|
+
|
|
104
|
+
The frontmatter-only rule holds for browsing, which is a list and must stay cheap enough to run over the whole roadmap. **Triage** below is the one flow allowed into the body, and only as far as the executive summary.
|
|
105
|
+
|
|
106
|
+
A filename appearing in two status directories is an error: report it rather than guessing which one is current.
|
|
107
|
+
|
|
108
|
+
## Triage
|
|
109
|
+
|
|
110
|
+
Moving an `inbox/` item to `backlog/` means "we agree to do this". Moving it to `hold/` means "not now". Move the file and append the matching `history` entry. Triage is the one flow that exists purely because more than one person can submit work — do not skip it by promoting straight from `inbox/` unless the user says so.
|
|
111
|
+
|
|
112
|
+
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.
|
|
113
|
+
|
|
114
|
+
## Promote
|
|
115
|
+
|
|
116
|
+
Promotion is where the roadmap meets the lifecycle:
|
|
117
|
+
|
|
118
|
+
> {{glossary:scope}}
|
|
119
|
+
|
|
120
|
+
1. Promote from `backlog/` normally; from `inbox/` only when the user is explicitly skipping triage.
|
|
121
|
+
2. If the item's `depends_on` names items that are not yet `done`, say so and confirm before proceeding — promoting out of order is allowed but should be deliberate.
|
|
122
|
+
3. Choose a template and scope as usual (defaults from `.aidlc/config.yaml`; see **aidlc-getting-started**).
|
|
123
|
+
4. Create the instance per "Creating an Instance" in **aidlc-overview** — including firing `on-instance-start` lifecycle actions.
|
|
124
|
+
5. Seed the instance with the item: Full scope → the item is raw material the Ideation phase refines into that phase's required artifact (`idea.md` for the feature templates, `research-question.md` for `spike`); Standard scope → the item is input context for Requirements.
|
|
125
|
+
6. Set `promoted_to: <instance-name>`, move the file to `in-progress/`, and append the `history` entry.
|
|
126
|
+
|
|
127
|
+
When the instance completes, the `roadmap-done` lifecycle action moves the item to `done/` on its own — do not do it by hand, and do not remove that action to do it manually.
|
|
128
|
+
|
|
129
|
+
## Drop
|
|
130
|
+
|
|
131
|
+
Move the item to `hold/` and append the `history` entry. Dropping is an explicit act — never delete or overwrite an item to get rid of it.
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: aidlc-idea
|
|
3
|
-
description: Captures ideas into the .aidlc/ideas/ backlog at any moment — no instance, claim, or phase required — and browses or promotes backlog ideas into lifecycle instances
|
|
4
|
-
phase: ideation
|
|
5
|
-
priority: 90
|
|
6
|
-
trigger: When the user says "idea:", asks to capture/record an idea, wants to browse the idea backlog, or wants to promote an idea into an instance
|
|
7
|
-
native_mode_hint:
|
|
8
|
-
claude-code: >-
|
|
9
|
-
This skill is an interactive inbox, not a phase artifact. Do not enter
|
|
10
|
-
plan mode. Capture is a single write-and-confirm; never touch instance
|
|
11
|
-
state while capturing.
|
|
12
|
-
---
|
|
13
|
-
# Idea Capture and Backlog
|
|
14
|
-
|
|
15
|
-
> {{glossary:instance}}
|
|
16
|
-
|
|
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.
|
|
18
|
-
|
|
19
|
-
## Idea File Format
|
|
20
|
-
|
|
21
|
-
One file per idea: `.aidlc/ideas/YYYYMMDD-<slug>.md`, beginning with exactly this frontmatter:
|
|
22
|
-
|
|
23
|
-
```yaml
|
|
24
|
-
---
|
|
25
|
-
status: raw # raw | promoted | dropped
|
|
26
|
-
promoted_to: null # instance name once promoted, else null
|
|
27
|
-
depends_on: [] # optional — ideas this one builds on, by file name without .md
|
|
28
|
-
---
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Ideas never silently vanish — they are `raw`, `promoted`, or explicitly `dropped` (the file stays in place). `status: promoted` always carries a non-null `promoted_to` naming an existing instance.
|
|
32
|
-
|
|
33
|
-
`depends_on` lists other backlog ideas whose outcome this one builds on (e.g. `20260815-traceability-ids`). It is optional and defaults to empty. Build order is derived from this graph when needed — there is no global `order` field to maintain, because concurrent capture from independent sessions cannot coordinate a sequence.
|
|
34
|
-
|
|
35
|
-
## Capture
|
|
36
|
-
|
|
37
|
-
1. **Resolve the backlog root.** Always write to the **primary checkout's** `.aidlc/ideas/`, never a worktree's copy: resolve via `git rev-parse --git-common-dir` (the directory containing that path is the primary checkout). Outside a git repo, use the current project root. Create `.aidlc/ideas/` if missing.
|
|
38
|
-
2. **Name the file.** `YYYYMMDD-<slug>.md` — today's date plus a short (2–4 word) slug derived from the idea.
|
|
39
|
-
3. **Handle collisions.** If the filename already exists, ask one question — extend `<existing>` or new idea? On extend, append a dated `## Update (YYYY-MM-DD)` section; on new, suffix the slug (`-2`). Never silently overwrite.
|
|
40
|
-
4. **Write the file.** Frontmatter (`status: raw`, `promoted_to: null`), then `# Idea: <title>`, `**Date:**`, and the braindump organized lightly (a Use Case section plus whatever structure the content suggests). If the braindump itself references other backlog ideas, record them in `depends_on`; never ask for dependencies — the field is optional. Do not interrogate the user for structure — capture friction kills inboxes; one braindump in, one file out.
|
|
41
|
-
5. **Confirm and return.** Report the file path and return to whatever was happening.
|
|
42
|
-
|
|
43
|
-
**Hard rule:** capture never reads or writes anything under `.aidlc/state/` — no claims, no phase files, no transitions log. Two sessions capturing simultaneously just produce two files; no locking exists or is needed. Do not auto-commit; staging is the user's.
|
|
44
|
-
|
|
45
|
-
If the user includes credentials, tokens, or secrets in a braindump, flag it and omit them from the file.
|
|
46
|
-
|
|
47
|
-
## Browse
|
|
48
|
-
|
|
49
|
-
List `.aidlc/ideas/*.md` reading only frontmatter and the `# Idea:` title line — not the bodies. Show each idea's date, title, status, and dependencies (`depends_on`). Flag raw ideas whose dependencies are all promoted — those are the natural next candidates. Offer to open, promote, or drop.
|
|
50
|
-
|
|
51
|
-
## Promote
|
|
52
|
-
|
|
53
|
-
Promotion is where the backlog meets the lifecycle:
|
|
54
|
-
|
|
55
|
-
> {{glossary:scope}}
|
|
56
|
-
|
|
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.
|
|
58
|
-
2. Choose a template and scope as usual (defaults from `.aidlc/config.yaml`; see **aidlc-getting-started**).
|
|
59
|
-
3. Create the instance per "Creating an Instance" in **aidlc-overview** — including firing `on-instance-start` lifecycle actions.
|
|
60
|
-
4. Seed the instance with the idea file: Full scope → the idea is raw material the Ideation phase refines into that phase's required artifact (`idea.md` for the feature templates, `research-question.md` for `spike`); Standard scope → the idea is input context for Requirements.
|
|
61
|
-
5. Update the idea's frontmatter: `status: promoted`, `promoted_to: <instance-name>`.
|
|
62
|
-
|
|
63
|
-
## Drop
|
|
64
|
-
|
|
65
|
-
Set `status: dropped` in the frontmatter and leave the file in place. Dropping is an explicit act — never delete or overwrite an idea to get rid of it.
|