@younndai/lyt-skills 0.10.0 → 0.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/README.md +9 -14
- package/package.json +3 -3
- package/skills/lyt-adopt/SKILL.md +91 -0
- package/skills/lyt-capture/SKILL.md +3 -9
- package/skills/lyt-pattern/SKILL.md +10 -11
- package/skills/lyt-update/SKILL.md +68 -0
- package/skills/lyt-decision/SKILL.md +0 -52
- package/skills/lyt-handoff/SKILL.md +0 -52
- package/skills/lyt-insight/SKILL.md +0 -55
- package/skills/lyt-plan/SKILL.md +0 -60
- package/skills/lyt-progress/SKILL.md +0 -48
- package/skills/lyt-result/SKILL.md +0 -49
- package/skills/lyt-retro/SKILL.md +0 -54
package/README.md
CHANGED
|
@@ -24,41 +24,36 @@
|
|
|
24
24
|
|
|
25
25
|
## What is this?
|
|
26
26
|
|
|
27
|
-
`@younndai/lyt-skills` is where [Lyt™](https://github.com/YounndAI/lyt)'s **AI-first** design becomes tangible:
|
|
27
|
+
`@younndai/lyt-skills` is where [Lyt™](https://github.com/YounndAI/lyt)'s **AI-first** design becomes tangible: eleven harness skills that let AI agents — Claude Code, Codex, and generic agent runtimes — drive your markdown vaults as **first-class operators**. Install once and your agent can capture notes, search your pod, prime on context, adopt a vault, explore meshes, and sync vaults — through the same governed operation set you use, under the same permission semantics. This is the "install once, every agent runtime knows Lyt" layer.
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
The `/lyt-capture` skill wraps the `knowledge-capture` pattern verb from the `lyt pattern run` runtime, so structured note capture shows up as a first-class agent skill inside any vault; the read/orient + addressing + lifecycle skills (`/lyt-pod`, `/lyt-search`, `/lyt-recall`, `/lyt-primer-context`, `/lyt-mesh-explore`, `/lyt-sync`, `/lyt-alias`, `/lyt-adopt`, `/lyt-update`) wrap the corresponding CLI verbs directly. Pairs with [`@younndai/lyt-vault`](https://www.npmjs.com/package/@younndai/lyt-vault), which ships the bundled `knowledge-capture` pattern the capture/recall skills resolve against (workflow patterns are bring-your-own via `lyt pattern install`).
|
|
30
30
|
|
|
31
31
|
## Install
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
34
|
npm install -g @younndai/lyt@alpha # the meta package bundles lyt-skills
|
|
35
|
-
lyt skills install # links the
|
|
35
|
+
lyt skills install # links the 11 SKILL.md files into your harness(es)
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Tri-runtime: the installer detects Claude Code, Codex, and generic agent runtimes, and installs per-runtime (symlink by default, `--copy` for regular directories).
|
|
39
39
|
|
|
40
|
-
## The
|
|
40
|
+
## The 11 skills
|
|
41
41
|
|
|
42
42
|
| Skill | Wraps | Use it when |
|
|
43
43
|
| --------------------- | -------------------------------------------------- | ------------------------------------------------------------ |
|
|
44
44
|
| `/lyt-capture` | knowledge-capture + capture | Saving a Figment (markdown note) into a vault. |
|
|
45
|
-
| `/lyt-recall` |
|
|
45
|
+
| `/lyt-recall` | `lyt search --vault` (tiered cascade) | Ranked search across a single vault. |
|
|
46
46
|
| `/lyt-search` | `lyt search` (tiered cascade) | Ranked search across the whole pod, a mesh, or a vault. |
|
|
47
47
|
| `/lyt-pod` | `lyt mesh list` + `lyt vault list` | Enumerating every mesh + vault on the machine. |
|
|
48
48
|
| `/lyt-mesh-explore` | `lyt mesh info` | Drilling into one mesh's members and metadata. |
|
|
49
49
|
| `/lyt-alias` | `lyt alias` set/`--list`/`--remove` | Managing pod-local vault aliases (name → rid). |
|
|
50
50
|
| `/lyt-primer-context` | `lyt primer` + `lyt vault info` | Priming an agent with vault/mesh/pod context. |
|
|
51
51
|
| `/lyt-sync` | gated git pull/commit/push | Syncing a vault with its remote under the writable gate. |
|
|
52
|
-
| `/lyt-
|
|
53
|
-
| `/lyt-
|
|
54
|
-
| `/lyt-result` | work-management + result | Session-end result with per-clause acceptance. |
|
|
55
|
-
| `/lyt-retro` | work-management + retro | Post-implementation retrospective. |
|
|
56
|
-
| `/lyt-insight` | work-management + insight | Promoting a result into a durable insight. |
|
|
57
|
-
| `/lyt-handoff` | work-management + handoff | Writing the next session's handoff brief. |
|
|
58
|
-
| `/lyt-decision` | decision-log + decision | Recording a decision + rationale pair. |
|
|
52
|
+
| `/lyt-adopt` | `lyt vault adopt` | Bringing an existing Obsidian vault into the pod. |
|
|
53
|
+
| `/lyt-update` | `lyt outdated` + `lyt update` | Checking for and installing a newer Lyt release. |
|
|
59
54
|
| `/lyt-pattern` | meta-skill over `lyt pattern *` | Listing, installing, linking patterns from an agent context. |
|
|
60
55
|
|
|
61
|
-
Each skill autodetects the active vault
|
|
56
|
+
Each skill autodetects the active vault via `lyt vault info --by-path`, the `LYT_ACTIVE_VAULT` env var, or an explicit `--vault` flag, then calls the CLI verb (or `lyt pattern run <pattern> <verb>` for `/lyt-capture`) at the resolved path.
|
|
62
57
|
|
|
63
58
|
## The capture contract
|
|
64
59
|
|
|
@@ -81,7 +76,7 @@ On an interactive terminal, `/lyt-capture` also resolves **where** the note land
|
|
|
81
76
|
- A **pattern** is data: a `pattern.yon` descriptor + a `templates/` folder of markdown templates with frontmatter. Patterns live at `~/lyt/patterns/`.
|
|
82
77
|
- A **skill** is a thin SKILL.md adapter an agent harness loads; it calls the pattern runtime.
|
|
83
78
|
|
|
84
|
-
Fork any
|
|
79
|
+
Fork any installed pattern (`lyt pattern fork knowledge-capture --as kc-custom`) without modifying the master. See `lyt help patterns` and `lyt help skills`.
|
|
85
80
|
|
|
86
81
|
## The Lyt toolchain
|
|
87
82
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@younndai/lyt-skills",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Lyt harness skills —
|
|
3
|
+
"version": "0.11.0",
|
|
4
|
+
"description": "Lyt harness skills — 11 skills (/lyt-capture, /lyt-recall, /lyt-pattern, /lyt-pod, /lyt-mesh-explore, /lyt-primer-context, /lyt-search, /lyt-sync, /lyt-alias, /lyt-adopt, /lyt-update) symlinked tri-runtime into ~/.claude/skills/, ~/.codex/skills/, ~/.agents/skills/. Composed into the `lyt skills install` and `lyt skills list` meta-CLI verbs.",
|
|
5
5
|
"homepage": "https://linkyourthink.com",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"prepublishOnly": "node ../../scripts/check-no-vendored-deps.mjs --root ../.. && node ../../scripts/public-release/scan-tarball.mjs lyt-skills"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@younndai/lyt-vault": "^0.
|
|
52
|
+
"@younndai/lyt-vault": "^0.11.0",
|
|
53
53
|
"commander": "^12.1.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lyt-adopt
|
|
3
|
+
description: >
|
|
4
|
+
Guided adopt of an existing Obsidian vault into a Lyt pod. Trigger when the user runs /lyt-adopt, or says "adopt this vault", "bring this vault into Lyt", "upgrade this Obsidian vault", "make this folder a Lyt vault", or similar phrasing on an existing local vault directory. Additive-only: it creates `.lyt/` and NEVER touches the user's `.md` files. Gathers {name, mesh (default `personal`), backfill (offer-only), remote (deferred)} then calls `lyt vault adopt <path> [--name <name>] [--mesh <mesh>]`. Homes the vault into `personal/<leaf>` by default instead of leaving it orphan. Companion to /lyt-sync (once a remote exists) and the inverse of `lyt vault abandon`.
|
|
5
|
+
visibility: public
|
|
6
|
+
lyt-version: 0.11.0
|
|
7
|
+
capabilities: [write]
|
|
8
|
+
runtimes: [claude, codex, agents]
|
|
9
|
+
requires_writable_vault: false
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /lyt-adopt
|
|
13
|
+
|
|
14
|
+
Guided adopt of an existing Obsidian vault into the user's Lyt pod. Adopt is **additive-only**: it creates the `.lyt/` derived-state directory and registers the vault, but it **never touches the user's `.md` files**. It is the inverse of `lyt vault abandon` (the clean anti-lock-in leave, which removes only `.lyt/`).
|
|
15
|
+
|
|
16
|
+
Under the hood this wraps `lyt vault adopt <path> [--name <name>] [--mesh <mesh>]`. The verb registers the vault, homes it into a mesh, rebuilds per-machine pattern links under `.lyt/patterns/`, and rebuilds the content caches so `/lyt-search` and `/lyt-recall` hit immediately.
|
|
17
|
+
|
|
18
|
+
## When to invoke
|
|
19
|
+
|
|
20
|
+
When the user runs `/lyt-adopt`, or says something like:
|
|
21
|
+
|
|
22
|
+
- "adopt this vault"
|
|
23
|
+
- "bring this Obsidian vault into Lyt"
|
|
24
|
+
- "upgrade this folder into a Lyt vault"
|
|
25
|
+
- "make this a Lyt vault"
|
|
26
|
+
|
|
27
|
+
## When NOT to invoke
|
|
28
|
+
|
|
29
|
+
- The directory is **already a Lyt vault** (`.lyt/vault.yon` exists) — use `lyt vault join <path>` to register an already-Lyt-aware vault instead. Adopt refuses with a clear message in this case.
|
|
30
|
+
- The user wants to **create a brand-new** vault from scratch — use `lyt vault init <mesh>/<vault>` (create-if-missing).
|
|
31
|
+
- The user wants to **clone a remote** vault — use `lyt vault clone <url>`.
|
|
32
|
+
|
|
33
|
+
## Phase 1 — Resolve the target path
|
|
34
|
+
|
|
35
|
+
The adopt argument is a **filesystem path** to the existing vault directory (not a vault name). Resolve it:
|
|
36
|
+
|
|
37
|
+
1. If the user passed a path in the invocation, use it (resolve relative → absolute).
|
|
38
|
+
2. Otherwise ask which directory to adopt. Do **not** guess from cwd.
|
|
39
|
+
|
|
40
|
+
If the resolved path does not exist or is not a directory, stop and tell the user. If it already contains `.lyt/vault.yon`, stop and point them at `lyt vault join`.
|
|
41
|
+
|
|
42
|
+
## Phase 2 — Gather the adopt parameters
|
|
43
|
+
|
|
44
|
+
Gather these before calling adopt. Only **name** and **mesh** feed the command today; **backfill** and **remote** are DEFERRED and OFFER-ONLY (see Phase 4).
|
|
45
|
+
|
|
46
|
+
| Parameter | Default | How to resolve |
|
|
47
|
+
| ------------ | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
|
|
48
|
+
| **name** | owner/repo when the path is under `~/lyt/vaults`, else folder basename | Accept a user-supplied `{mesh}/{vault}` name or leaf. Pass via `--name`. Omit to accept the default. |
|
|
49
|
+
| **mesh** | `personal` | The home mesh. A bare adopt homes the vault into `personal/<leaf>` (find-or-create the `personal` mesh). Override with `--mesh <name>`. |
|
|
50
|
+
| **backfill** | OFFER-ONLY (deferred) | Do NOT run it. Only mention it as a possible future step (see Phase 4). |
|
|
51
|
+
| **remote** | OFFER-ONLY (deferred) | Do NOT wire a remote. Adopt never contacts a remote (see Phase 4). |
|
|
52
|
+
|
|
53
|
+
If the user does not signal a non-default mesh or name, use the defaults — do not over-prompt.
|
|
54
|
+
|
|
55
|
+
## Phase 3 — Run adopt
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
lyt vault adopt <path> [--name <name>] [--mesh <mesh>]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
- Omit `--name` to accept the default (owner/repo or basename).
|
|
62
|
+
- Omit `--mesh` to home the vault into `personal/<leaf>` (the guided default). Pass `--mesh <name>` to home it elsewhere; the mesh is find-or-created.
|
|
63
|
+
|
|
64
|
+
The command prints the adopted name, path, rid, registry status, and the resolved home mesh (or `orphan (unassigned)` if assignment was deferred). On success the vault is registered, homed, pattern-linked (under `.lyt/patterns/`, machine-local + gitignored), and indexed.
|
|
65
|
+
|
|
66
|
+
Confirm to the user in one line:
|
|
67
|
+
|
|
68
|
+
> Adopted `<name>` at `<path>`, homed into `<mesh>`.
|
|
69
|
+
|
|
70
|
+
## Phase 4 — Offer the deferred follow-ups (do NOT run them)
|
|
71
|
+
|
|
72
|
+
Adopt already rebuilds the content caches on the way in, so search/recall work immediately. Two further steps are **deferred** — OFFER them as future options only; this skill does NOT implement them:
|
|
73
|
+
|
|
74
|
+
- **Backfill** — a deeper re-index of historical figments beyond the on-adopt index. Offer it as a possible future step; do not run any backfill command.
|
|
75
|
+
- **Remote** — wiring a GitHub remote and first push. Adopt never contacts a remote. Once a remote exists, point the user at `/lyt-sync` for pull/commit/push (gated on the writable verdict).
|
|
76
|
+
|
|
77
|
+
Frame both as "available later," never as something this adopt performed.
|
|
78
|
+
|
|
79
|
+
## Rules
|
|
80
|
+
|
|
81
|
+
- **Additive-only.** Adopt creates `.lyt/` and registers the vault; it NEVER modifies, moves, or deletes the user's `.md` files.
|
|
82
|
+
- **Default mesh is `personal`.** A bare adopt homes the vault into `personal/<leaf>` rather than leaving it orphan. Only override on an explicit `--mesh`.
|
|
83
|
+
- **Backfill + remote are deferred.** Offer them as future steps; never claim this adopt ran them.
|
|
84
|
+
- **Pattern links live under `.lyt/patterns/`** — machine-local, gitignored, Lyt-owned. Adopt rebuilds them per-machine; the user never touches them.
|
|
85
|
+
- **Refuse an already-Lyt-aware directory** — point at `lyt vault join` instead of adopt.
|
|
86
|
+
|
|
87
|
+
## Companion skills
|
|
88
|
+
|
|
89
|
+
- `/lyt-sync` — pull/commit/push once the vault has a remote.
|
|
90
|
+
- `/lyt-pod` — see the vault in the pod overview after adopt.
|
|
91
|
+
- `/lyt-primer-context` — prime an agent on the freshly-adopted vault.
|
|
@@ -6,7 +6,7 @@ visibility: public
|
|
|
6
6
|
lyt-version: 0.2.0
|
|
7
7
|
capabilities: [write]
|
|
8
8
|
runtimes: [claude, codex, agents]
|
|
9
|
-
requires_writable_vault:
|
|
9
|
+
requires_writable_vault: false
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# /lyt-capture
|
|
@@ -27,15 +27,9 @@ When the user runs `/lyt-capture`, or says something like:
|
|
|
27
27
|
|
|
28
28
|
If the user pastes content and only says "save it," interpret as `/lyt-capture` on the pasted content.
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Scope — the single capture skill
|
|
31
31
|
|
|
32
|
-
`/lyt-capture` writes a **
|
|
33
|
-
|
|
34
|
-
- A distilled, durable **project lesson** ("this is an insight", "lesson learned about Lyt") → `/lyt-insight`.
|
|
35
|
-
- A locked **decision** ("lock this decision", "record the decision") → `/lyt-decision`.
|
|
36
|
-
- A **plan / progress / result / retro / handoff** → the matching `/lyt-plan` · `/lyt-progress` · `/lyt-result` · `/lyt-retro` · `/lyt-handoff`.
|
|
37
|
-
|
|
38
|
-
Use `/lyt-capture` only for a free-form note that doesn't fit one of those work-management types. When in doubt between a plain note and a typed artifact, prefer the typed skill — it carries the right frontmatter and lands in the right folder.
|
|
32
|
+
`/lyt-capture` writes a **Figment note** into the vault under the 8-field frontmatter ceremony. It is the one capture skill: durable notes of every kind — a free-form thought, a distilled project lesson, a locked decision, a plan, a result — all land through `/lyt-capture`. Use the `topic:` field to categorize (e.g. `insight`, `decision`, `planning`, `result`) so the note stays legible and searchable; there are no separate per-type skills.
|
|
39
33
|
|
|
40
34
|
## Phase 1 — Resolve the target vault
|
|
41
35
|
|
|
@@ -24,13 +24,12 @@ Manage Lyt patterns: install, link/unlink, fork for customization, list availabl
|
|
|
24
24
|
|
|
25
25
|
## When NOT to invoke
|
|
26
26
|
|
|
27
|
-
For the common write-a-Figment
|
|
27
|
+
For the common write-a-Figment flow, use the dedicated skill:
|
|
28
28
|
|
|
29
|
-
- `/lyt-
|
|
30
|
-
- `/lyt-
|
|
31
|
-
- `/lyt-decision` (decision-log)
|
|
29
|
+
- `/lyt-capture` (knowledge-capture) — save any Figment note (use `topic:` to categorize)
|
|
30
|
+
- `/lyt-recall`, `/lyt-search` — read/search the vault or pod
|
|
32
31
|
|
|
33
|
-
Use `/lyt-pattern` for pattern management itself OR for verbs that
|
|
32
|
+
Use `/lyt-pattern` for pattern management itself OR for verbs that have no dedicated skill wrapper — i.e. verbs from patterns you install yourself (`lyt pattern install --from <dir>`). Lyt bundles only `knowledge-capture` (wrapped by `/lyt-capture` + `/lyt-recall`); opinionated workflow patterns are not shipped. Invoke any installed pattern's verb via `/lyt-pattern run <pattern> <verb>` (e.g. `/lyt-pattern run <your-pattern> <verb>`).
|
|
34
33
|
|
|
35
34
|
## The verb surface
|
|
36
35
|
|
|
@@ -47,15 +46,15 @@ lyt pattern run <pattern> <verb> --vault <v> [--project <p>] [--slug <s>] [--var
|
|
|
47
46
|
|
|
48
47
|
## Symlink + fork mechanics
|
|
49
48
|
|
|
50
|
-
Patterns live at `~/lyt/patterns/<name>/` (per-machine, per-user, like the registry). `pattern link` creates `<vault
|
|
49
|
+
Patterns live at `~/lyt/patterns/<name>/` (per-machine, per-user, like the registry). `pattern link` creates `<vault>/.lyt/patterns/<name>` as a junction symlink to the master. Symlinks are gitignored from vault repos (via the `.lyt/patterns/` rule) — `lyt vault adopt` and `lyt vault join` auto-rebuild them per-machine.
|
|
51
50
|
|
|
52
51
|
To customize without touching the master, use `pattern fork`:
|
|
53
52
|
|
|
54
53
|
```bash
|
|
55
|
-
lyt pattern fork
|
|
56
|
-
# edit ~/lyt/patterns/
|
|
57
|
-
lyt pattern unlink
|
|
58
|
-
lyt pattern link
|
|
54
|
+
lyt pattern fork knowledge-capture --as kc-custom
|
|
55
|
+
# edit ~/lyt/patterns/kc-custom/
|
|
56
|
+
lyt pattern unlink knowledge-capture --vault <v>
|
|
57
|
+
lyt pattern link kc-custom --vault <v>
|
|
59
58
|
```
|
|
60
59
|
|
|
61
60
|
## Version migration (v1 caveat)
|
|
@@ -64,7 +63,7 @@ Newer pattern versions replace the master at `~/lyt/patterns/<name>/`. Files alr
|
|
|
64
63
|
|
|
65
64
|
## Verb-name conflicts
|
|
66
65
|
|
|
67
|
-
If two installed patterns both declare a `
|
|
66
|
+
If two installed patterns both declare the same verb (e.g. a `note` verb), address via explicit qualification: `lyt pattern run <pattern-id> note` (not just `lyt pattern run note`). The pattern id is always the disambiguator — the qualified `lyt pattern run <pattern> <verb>` form never guesses.
|
|
68
67
|
|
|
69
68
|
## Companion skills
|
|
70
69
|
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lyt-update
|
|
3
|
+
description: >
|
|
4
|
+
Keep the installed Lyt current — check whether a newer version is published on the npm alpha channel and, if so, update it. Trigger when the user runs /lyt-update, or says "is my Lyt up to date", "check for lyt updates", "update lyt", "am I on the latest lyt", "upgrade lyt", or similar phrasing. Wraps the `lyt outdated` (read-only check) and `lyt update` (install, confirmation-gated) CLI verbs. Read-only by default; the install step changes the global npm install and always confirms first. Offline / unreachable-registry is reported, never an error. Pairs with /lyt-sync.
|
|
5
|
+
visibility: public
|
|
6
|
+
lyt-version: 0.11.0
|
|
7
|
+
capabilities: [read]
|
|
8
|
+
runtimes: [claude, codex, agents]
|
|
9
|
+
requires_writable_vault: false
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /lyt-update
|
|
13
|
+
|
|
14
|
+
Keep the installed Lyt current. `lyt outdated` reports whether a newer version is published (read-only); `lyt update` installs it, after confirming — it changes the user's **global** npm install, so it is never silent. An unreachable registry (offline / rate-limited) is reported plainly, never treated as an error.
|
|
15
|
+
|
|
16
|
+
## When to invoke
|
|
17
|
+
|
|
18
|
+
When the user runs `/lyt-update`, or says something like:
|
|
19
|
+
|
|
20
|
+
- "is my Lyt up to date" / "am I on the latest lyt"
|
|
21
|
+
- "check for lyt updates"
|
|
22
|
+
- "update lyt" / "upgrade lyt"
|
|
23
|
+
|
|
24
|
+
Also invoke **proactively** (offer, don't auto-run) when the handler hits behavior that smells version-related — a verb the docs describe but the CLI doesn't have, or a bug that a newer release may have fixed.
|
|
25
|
+
|
|
26
|
+
## Phase 1 — Check currency (read-only)
|
|
27
|
+
|
|
28
|
+
Run the check verb:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
lyt outdated --json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Parse the JSON result: `{ installed, latest, stale, offline, fromCache, checkedAt }`.
|
|
35
|
+
|
|
36
|
+
- `stale: true` → a newer version (`latest`) is available. Exit code is `1` (npm-`outdated` convention).
|
|
37
|
+
- `stale: false`, `offline: false` → up to date. Exit code `0`.
|
|
38
|
+
- `offline: true` → the npm registry could not be reached. **Not an error** — tell the handler the check couldn't run (offline / rate-limited) and stop; do not proceed to update.
|
|
39
|
+
|
|
40
|
+
The check forces a fresh probe (it does not rely on the throttled doctor/init cache).
|
|
41
|
+
|
|
42
|
+
## Phase 2 — Offer the update (only when stale)
|
|
43
|
+
|
|
44
|
+
If `stale` is true, surface the finding and OFFER to update — never update without an explicit go:
|
|
45
|
+
|
|
46
|
+
> Your Lyt is `<installed>`; `<latest>` is published. Want me to update? (`lyt update` runs `npm i -g @younndai/lyt@alpha`.)
|
|
47
|
+
|
|
48
|
+
On the handler's yes, run:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
lyt update --yes
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
`lyt update` re-checks currency itself, then installs. Without `--yes` it prompts interactively; with `--yes` it proceeds (still refuses to run when *not* stale). It streams npm's own output and sets a non-zero exit code on failure.
|
|
55
|
+
|
|
56
|
+
After a successful update, confirm with `lyt --version`.
|
|
57
|
+
|
|
58
|
+
## Rules
|
|
59
|
+
|
|
60
|
+
- **MUST NOT run `lyt update` without the handler's explicit go.** It mutates the global install. `lyt outdated` (Phase 1) is always safe to run unprompted.
|
|
61
|
+
- **MUST treat `offline: true` as informational, not a failure.** Report that the check couldn't reach the registry and stop; never retry-loop.
|
|
62
|
+
- **MUST NOT claim an update happened without confirming** — re-read `lyt --version` (or `lyt outdated`) after `lyt update`, per verify-don't-trust.
|
|
63
|
+
- **SHOULD prefer the CLI verbs over a raw `npm i -g`** so the confirmation gate + currency logic stay in one place; only fall back to the raw command if the verbs are unavailable (a very old install).
|
|
64
|
+
|
|
65
|
+
## Companion skills
|
|
66
|
+
|
|
67
|
+
- **/lyt-sync** — sync a vault's content. Unrelated to version currency, but the two are the common "keep everything current" pair.
|
|
68
|
+
- **/lyt-primer-context** — prime an agent; a good moment to also check currency on a fresh session.
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: lyt-decision
|
|
3
|
-
description: >
|
|
4
|
-
Record a locked architectural or product decision as a Lyt Figment. Trigger when the user runs /lyt-decision, or says "lock this decision", "record the decision", "decide between options", "this is decided". Wraps `lyt pattern run decision-log decision`. Writes to <vault>/Projects/<project>/work/<date>-decision-<slug>.md.
|
|
5
|
-
visibility: public
|
|
6
|
-
lyt-version: 0.2.0
|
|
7
|
-
capabilities: [write]
|
|
8
|
-
runtimes: [claude, codex, agents]
|
|
9
|
-
requires_writable_vault: true
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# /lyt-decision
|
|
13
|
-
|
|
14
|
-
Record a locked decision — the choice, the alternatives, the reasoning. Use when a decision is durable enough that future-you (or a future agent) will need to read it cold.
|
|
15
|
-
|
|
16
|
-
## When to invoke
|
|
17
|
-
|
|
18
|
-
- `/lyt-decision` slash trigger
|
|
19
|
-
- "lock this decision"
|
|
20
|
-
- "we decided X — record it"
|
|
21
|
-
- after a structured assessment or review lands a locked verdict
|
|
22
|
-
- before starting work whose direction depends on a non-obvious choice
|
|
23
|
-
|
|
24
|
-
## Phase 1 — Resolve target
|
|
25
|
-
|
|
26
|
-
Same chain as `/lyt-plan`. Slug describes the decision (e.g., `transclusion-priming-files`, `gh-prefix-soft`).
|
|
27
|
-
|
|
28
|
-
## Phase 2 — Run the verb
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
lyt pattern run decision-log decision --vault <vault> --project <project> --slug <slug>
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Phase 3 — Fill the body
|
|
35
|
-
|
|
36
|
-
Sections to fill:
|
|
37
|
-
|
|
38
|
-
- **The decision** — one sentence, imperative voice
|
|
39
|
-
- **Context** — what forced this decision
|
|
40
|
-
- **Alternatives considered** — A / B / C with one-line each
|
|
41
|
-
- **Why this option won** — one paragraph; reference rationale if long-form
|
|
42
|
-
- **Reversibility** — how hard to undo, what downstream work depends on this
|
|
43
|
-
- **Cross-references** — wikilinks to rationale file (if separate), related decisions
|
|
44
|
-
|
|
45
|
-
## Long-form reasoning
|
|
46
|
-
|
|
47
|
-
If the reasoning is too long for the decision file, write a separate `<date>-rationale-<slug>.md` via `lyt pattern run decision-log rationale --vault <v> --project <p> --slug <s>` and link from the decision file's `supports-decision:` (in the rationale) and `Cross-references` (in the decision).
|
|
48
|
-
|
|
49
|
-
## Companion skills
|
|
50
|
-
|
|
51
|
-
- `/lyt-insight` — for distilled lessons LEARNED from acting on decisions
|
|
52
|
-
- `/lyt-handoff` — handoffs often reference locked decisions
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: lyt-handoff
|
|
3
|
-
description: >
|
|
4
|
-
Write an inter-session handoff brief — what a fresh agent or human needs to pick up the work. Trigger when the user runs /lyt-handoff, or says "write a handoff", "brief the next session", "hand this off", "what does the next agent need". Wraps `lyt pattern run work-management handoff`. Writes to <vault>/Handoffs/<project>/<date>-<slug>.md.
|
|
5
|
-
visibility: public
|
|
6
|
-
lyt-version: 0.2.0
|
|
7
|
-
capabilities: [write]
|
|
8
|
-
runtimes: [claude, codex, agents]
|
|
9
|
-
requires_writable_vault: true
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# /lyt-handoff
|
|
13
|
-
|
|
14
|
-
Write a handoff brief — a self-contained document a fresh agent (or person) can pick up cold to continue work. Distinct from `/lyt-result` (which is about THIS session); a handoff is forward-looking for the NEXT session.
|
|
15
|
-
|
|
16
|
-
## When to invoke
|
|
17
|
-
|
|
18
|
-
- `/lyt-handoff` slash trigger
|
|
19
|
-
- "write a handoff brief for the next agent"
|
|
20
|
-
- "I need to leave a brief"
|
|
21
|
-
- end of a multi-session arc when a fresh session needs to pick up
|
|
22
|
-
|
|
23
|
-
## Phase 1 — Resolve target
|
|
24
|
-
|
|
25
|
-
Same chain as `/lyt-plan`. Slug describes the work being handed off (e.g., `phase-7-session-3-npm-precheck-readmes`).
|
|
26
|
-
|
|
27
|
-
## Phase 2 — Run the verb
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
lyt pattern run work-management handoff --vault <vault> --project <project> --slug <slug>
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
The verb writes to `<vault>/Handoffs/<project>/<date>-<slug>.md` (not under `work/` — handoffs live at vault root in their own folder per Work-Management convention).
|
|
34
|
-
|
|
35
|
-
## Phase 3 — Fill the body
|
|
36
|
-
|
|
37
|
-
A good handoff has:
|
|
38
|
-
|
|
39
|
-
- **Acceptance sentence** — one paragraph that captures what "done" looks like
|
|
40
|
-
- **State snapshot (@CONTINUATION)** — current branch, last commit, modified files, in-flight artifacts, pushed/unpushed state, test count
|
|
41
|
-
- **Sources (@SOURCES.required + .optional)** — every file the next agent MUST read before drafting any plan
|
|
42
|
-
- **Resume command** — numbered steps the next agent should follow
|
|
43
|
-
- **Sign-off** — canonical retro path; structured @SESSION_REPORT format if applicable
|
|
44
|
-
- **Activation phrase** — the prompt to paste into the fresh session to resume the work
|
|
45
|
-
|
|
46
|
-
The frontmatter `acceptance` field is load-bearing: the executing agent walks its clauses to verify the work matches the brief.
|
|
47
|
-
|
|
48
|
-
## Companion skills
|
|
49
|
-
|
|
50
|
-
- a fresh agent session — consumes the brief written by this skill
|
|
51
|
-
- `/lyt-result` — what the prior session shipped (context for the handoff)
|
|
52
|
-
- `/lyt-retro` — usually written alongside or after the next-session retro
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: lyt-insight
|
|
3
|
-
description: >
|
|
4
|
-
Capture a distilled project-specific learning as a Lyt Figment. Trigger when the user runs /lyt-insight, or says "this is a project insight", "promote this lesson", "make this durable", "extract the lesson". Wraps `lyt pattern run work-management insight`. Writes to <vault>/Projects/<project>/work/<date>-insight-<slug>.md. For project-agnostic lessons use Nuggets instead.
|
|
5
|
-
visibility: public
|
|
6
|
-
lyt-version: 0.2.0
|
|
7
|
-
capabilities: [write]
|
|
8
|
-
runtimes: [claude, codex, agents]
|
|
9
|
-
requires_writable_vault: true
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# /lyt-insight
|
|
13
|
-
|
|
14
|
-
Distilled learning specific to THIS project. Promotion target from a `result-` or `retro-` when the lesson earns durable value.
|
|
15
|
-
|
|
16
|
-
## When to invoke
|
|
17
|
-
|
|
18
|
-
- `/lyt-insight` slash trigger
|
|
19
|
-
- "this is a project insight"
|
|
20
|
-
- "promote this"
|
|
21
|
-
- "we keep learning this — write it down"
|
|
22
|
-
|
|
23
|
-
If the lesson is project-AGNOSTIC (applies to any future project), use `/lyt-capture` with a `Nuggets/<subject>/` target instead.
|
|
24
|
-
|
|
25
|
-
## Phase 1 — Resolve target
|
|
26
|
-
|
|
27
|
-
Same chain as `/lyt-plan`. If promoting from a result, prefer renaming the existing result file in place: `<date>-result-<slug>.md` → `<date>-insight-<slug>.md`, update `type:` in frontmatter, set `derived_from_session:`. No folder move; no wikilink rot.
|
|
28
|
-
|
|
29
|
-
If writing a fresh insight that doesn't promote from a specific result, run the verb to create a new file.
|
|
30
|
-
|
|
31
|
-
## Phase 2 — Run the verb (when creating fresh)
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
lyt pattern run work-management insight --vault <vault> --project <project> --slug <slug>
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Phase 3 — Fill the body
|
|
38
|
-
|
|
39
|
-
Sections to fill:
|
|
40
|
-
|
|
41
|
-
- **The insight** — state the lesson sharply, one paragraph
|
|
42
|
-
- **Why it matters** — where this changes future decisions
|
|
43
|
-
- **Evidence** — sessions, commits, decisions that support it
|
|
44
|
-
- **Edge cases / qualifiers** — when this does NOT apply
|
|
45
|
-
- **Related** — wikilinks to source results, decisions, plans
|
|
46
|
-
|
|
47
|
-
## Promotion to Nuggets
|
|
48
|
-
|
|
49
|
-
If after writing the insight you realize the lesson is project-agnostic, ALSO write a `Nuggets/<subject>/<date>-nugget-<slug>.md` at vault root. (Or: rename in place to the Nuggets folder if it's exclusively agnostic.) Two files are fine when the lesson is project-specific in flavor but applies elsewhere too.
|
|
50
|
-
|
|
51
|
-
## Companion skills
|
|
52
|
-
|
|
53
|
-
- `/lyt-result` — source of most insight promotions
|
|
54
|
-
- `/lyt-retro` — source of retro-derived insights
|
|
55
|
-
- `/lyt-decision` — for choices that warrant a separate decision artifact
|
package/skills/lyt-plan/SKILL.md
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: lyt-plan
|
|
3
|
-
description: >
|
|
4
|
-
Write a pre-action plan as a Lyt Figment. Trigger when the user runs /lyt-plan, or says "plan this", "write a plan", "design before coding", "let's plan first". Wraps `lyt pattern run work-management plan` under the hood. Writes to <vault>/Projects/<project>/work/<date>-plan-<slug>.md with frontmatter (date, slug, project, owner).
|
|
5
|
-
visibility: public
|
|
6
|
-
lyt-version: 0.2.0
|
|
7
|
-
capabilities: [write]
|
|
8
|
-
runtimes: [claude, codex, agents]
|
|
9
|
-
requires_writable_vault: true
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# /lyt-plan
|
|
13
|
-
|
|
14
|
-
Capture a pre-action plan as a structured Work-Management artifact in a Lyt vault. Plans answer: what are you about to do, why, how, and what does success look like.
|
|
15
|
-
|
|
16
|
-
## When to invoke
|
|
17
|
-
|
|
18
|
-
When the user runs `/lyt-plan`, or says something like:
|
|
19
|
-
|
|
20
|
-
- "let's plan this out"
|
|
21
|
-
- "design before coding"
|
|
22
|
-
- "what's the plan"
|
|
23
|
-
- "write a plan for X"
|
|
24
|
-
|
|
25
|
-
## Phase 1 — Resolve vault + project + slug
|
|
26
|
-
|
|
27
|
-
1. **Vault resolution:** `--vault <name>` arg → `$LYT_ACTIVE_VAULT` env → cwd-based detection via `lyt vault info --by-path <cwd>` → default `<handle>/main`.
|
|
28
|
-
2. **Project:** `--project <name>` arg → infer from current directory name → ask the user.
|
|
29
|
-
3. **Slug:** ask the user, or generate from the plan's title (lowercase kebab-case, ≤7 words).
|
|
30
|
-
|
|
31
|
-
## Phase 2 — Run the verb
|
|
32
|
-
|
|
33
|
-
Invoke the CLI:
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
lyt pattern run work-management plan --vault <vault> --project <project> --slug <slug>
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
The CLI fills frontmatter (`date`, `slug`, `project`, `owner`) and writes to the resolved path: `<vault>/Projects/<project>/work/<date>-plan-<slug>.md`.
|
|
40
|
-
|
|
41
|
-
If the file already exists, the CLI returns `ALREADY-EXISTS` and the path; do not overwrite. Append a `-2` slug or pick a different slug.
|
|
42
|
-
|
|
43
|
-
## Phase 3 — Fill in the body
|
|
44
|
-
|
|
45
|
-
After the file is created, edit it to fill in:
|
|
46
|
-
|
|
47
|
-
- **Goal** — one-paragraph statement of intent
|
|
48
|
-
- **Background** — context, references, prior decisions
|
|
49
|
-
- **Approach** — steps, sequence, who/what does each
|
|
50
|
-
- **Risks + open questions**
|
|
51
|
-
- **Success criteria**
|
|
52
|
-
- **Estimate**
|
|
53
|
-
|
|
54
|
-
Use Obsidian-flavored markdown. Use `[[wikilinks]]` to cross-reference prior plans, results, or thoughts.
|
|
55
|
-
|
|
56
|
-
## Companion skills
|
|
57
|
-
|
|
58
|
-
- `/lyt-progress` — mid-session status update on this plan
|
|
59
|
-
- `/lyt-result` — post-action outcome closing this plan
|
|
60
|
-
- `/lyt-retro` — deliberate retrospective after the plan executes
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: lyt-progress
|
|
3
|
-
description: >
|
|
4
|
-
Write a mid-session progress update as a Lyt Figment. Trigger when the user runs /lyt-progress, or says "write a progress update", "log where we are", "status update", "I'm blocked". Wraps `lyt pattern run work-management progress`. Writes to <vault>/Projects/<project>/work/<date>-progress-<slug>.md.
|
|
5
|
-
visibility: public
|
|
6
|
-
lyt-version: 0.2.0
|
|
7
|
-
capabilities: [write]
|
|
8
|
-
runtimes: [claude, codex, agents]
|
|
9
|
-
requires_writable_vault: true
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# /lyt-progress
|
|
13
|
-
|
|
14
|
-
Capture mid-session status — where we are, what's done, what's in flight, blockers, next steps. Superseded by `/lyt-result` at session end.
|
|
15
|
-
|
|
16
|
-
## When to invoke
|
|
17
|
-
|
|
18
|
-
- `/lyt-progress` slash trigger
|
|
19
|
-
- "where are we"
|
|
20
|
-
- "log progress" / "checkpoint" / "status update"
|
|
21
|
-
- when a session has been running >2hr OR has hit a blocker
|
|
22
|
-
|
|
23
|
-
## Phase 1 — Resolve target
|
|
24
|
-
|
|
25
|
-
Same chain as `/lyt-plan`: `--vault` arg → `$LYT_ACTIVE_VAULT` → cwd detect → `<handle>/main` default. Project + slug similarly resolved.
|
|
26
|
-
|
|
27
|
-
## Phase 2 — Run the verb
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
lyt pattern run work-management progress --vault <vault> --project <project> --slug <slug>
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Phase 3 — Fill the body
|
|
34
|
-
|
|
35
|
-
Sections to fill:
|
|
36
|
-
|
|
37
|
-
- **Where we are** — one-paragraph state of play
|
|
38
|
-
- **What's done** — bullets
|
|
39
|
-
- **What's in flight** — bullets
|
|
40
|
-
- **Blockers** — bullets
|
|
41
|
-
- **Next steps** — bullets
|
|
42
|
-
|
|
43
|
-
If this progress closes a plan, set `parent_plan:` frontmatter to the wikilink of the plan.
|
|
44
|
-
|
|
45
|
-
## Companion skills
|
|
46
|
-
|
|
47
|
-
- `/lyt-plan` — pre-action design (parent)
|
|
48
|
-
- `/lyt-result` — post-action outcome (closes this progress)
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: lyt-result
|
|
3
|
-
description: >
|
|
4
|
-
Write a post-action result as a Lyt Figment — the default catch-all at session end. Trigger when the user runs /lyt-result, or says "write a result", "what shipped", "wrap up the session", "log the outcome". Wraps `lyt pattern run work-management result`. Writes to <vault>/Projects/<project>/work/<date>-result-<slug>.md.
|
|
5
|
-
visibility: public
|
|
6
|
-
lyt-version: 0.2.0
|
|
7
|
-
capabilities: [write]
|
|
8
|
-
runtimes: [claude, codex, agents]
|
|
9
|
-
requires_writable_vault: true
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# /lyt-result
|
|
13
|
-
|
|
14
|
-
Capture the post-action outcome — what was delivered, what changed, what didn't get done. The default catch-all artifact at the end of every meaningful session.
|
|
15
|
-
|
|
16
|
-
## When to invoke
|
|
17
|
-
|
|
18
|
-
- `/lyt-result` slash trigger
|
|
19
|
-
- session end: "wrap this up", "log the outcome"
|
|
20
|
-
- after a commit / push / deploy
|
|
21
|
-
|
|
22
|
-
## Phase 1 — Resolve target
|
|
23
|
-
|
|
24
|
-
Same chain as `/lyt-plan`. Slug usually matches the parent plan's slug (set `parent_plan` frontmatter wikilink).
|
|
25
|
-
|
|
26
|
-
## Phase 2 — Run the verb
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
lyt pattern run work-management result --vault <vault> --project <project> --slug <slug>
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Phase 3 — Fill the body
|
|
33
|
-
|
|
34
|
-
Sections to fill:
|
|
35
|
-
|
|
36
|
-
- **Outcome** — what got delivered. Reference commits if applicable (set `commits:` frontmatter array).
|
|
37
|
-
- **What changed** — files, behaviors, decisions
|
|
38
|
-
- **What didn't get done** — deferred / blocked / cut
|
|
39
|
-
- **Cross-references** — plan link, commits, follow-ups
|
|
40
|
-
|
|
41
|
-
## Promotion
|
|
42
|
-
|
|
43
|
-
If the result teaches something durable about THIS project, **rename in place** to `<date>-insight-<slug>.md` and update `type: insight` in frontmatter — no folder move, no link rot. If the lesson is project-agnostic, write a `Nuggets/<subject>/<date>-nugget-<slug>.md` instead.
|
|
44
|
-
|
|
45
|
-
## Companion skills
|
|
46
|
-
|
|
47
|
-
- `/lyt-plan` — pre-action design (parent of this result)
|
|
48
|
-
- `/lyt-insight` — promoted result with durable project lesson
|
|
49
|
-
- `/lyt-retro` — deliberate retrospective after a meaningful arc
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: lyt-retro
|
|
3
|
-
description: >
|
|
4
|
-
Write a deliberate retrospective on a session, sprint, or completed plan. Trigger when the user runs /lyt-retro, or says "retro this", "what did we learn", "lessons from this sprint", "post-mortem". Wraps `lyt pattern run work-management retro`. Writes to <vault>/Projects/<project>/work/<date>-retro-<slug>.md.
|
|
5
|
-
visibility: public
|
|
6
|
-
lyt-version: 0.2.0
|
|
7
|
-
capabilities: [write]
|
|
8
|
-
runtimes: [claude, codex, agents]
|
|
9
|
-
requires_writable_vault: true
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# /lyt-retro
|
|
13
|
-
|
|
14
|
-
Capture a deliberate retrospective. What worked. What didn't. What we'd change next time. Distinct from `/lyt-result` (which records WHAT shipped); a retro records WHY it went the way it did.
|
|
15
|
-
|
|
16
|
-
## When to invoke
|
|
17
|
-
|
|
18
|
-
- `/lyt-retro` slash trigger
|
|
19
|
-
- "let's retro this"
|
|
20
|
-
- end of a sprint, arc, project, or contentious decision
|
|
21
|
-
- after a meaningful handoff (often required by the handoff-execute protocol)
|
|
22
|
-
|
|
23
|
-
## Phase 1 — Resolve target
|
|
24
|
-
|
|
25
|
-
Same chain as `/lyt-plan`. Slug usually matches the artifact being retro'd (e.g., `phase-7-session-2-bulk-init-patterns-skills-retro`).
|
|
26
|
-
|
|
27
|
-
If retro'ing a specific session/sprint/handoff, set `retro-of:` frontmatter to its wikilink.
|
|
28
|
-
|
|
29
|
-
## Phase 2 — Run the verb
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
lyt pattern run work-management retro --vault <vault> --project <project> --slug <slug>
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## Phase 3 — Fill the body
|
|
36
|
-
|
|
37
|
-
Sections to fill:
|
|
38
|
-
|
|
39
|
-
- **What worked** — bullets, specific
|
|
40
|
-
- **What didn't** — bullets, specific (no euphemisms)
|
|
41
|
-
- **What we'd change next time** — bullets, actionable
|
|
42
|
-
- **Lessons (durable enough to keep)** — if any rise to insight-level, promote
|
|
43
|
-
|
|
44
|
-
## Promotion
|
|
45
|
-
|
|
46
|
-
A retro's durable lessons promote either to:
|
|
47
|
-
|
|
48
|
-
- `<date>-insight-<slug>.md` in the same `work/` folder (project-specific)
|
|
49
|
-
- `Nuggets/<subject>/<date>-nugget-<slug>.md` at vault root (project-agnostic)
|
|
50
|
-
|
|
51
|
-
## Companion skills
|
|
52
|
-
|
|
53
|
-
- `/lyt-result` — what shipped (this retro reflects on)
|
|
54
|
-
- `/lyt-insight` — durable lessons promoted from this retro
|