dld-kit 1.0.0-rc.1 → 1.0.0-rc.2
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 +5 -3
- package/dist/dld.mjs +36 -11
- package/package.json +1 -1
- package/skills/dld-adjust/SKILL.md +1 -1
- package/skills/dld-audit/SKILL.md +1 -1
- package/skills/dld-audit-auto/SKILL.md +1 -1
- package/skills/dld-common/SKILL.md +1 -1
- package/skills/dld-common/scripts/dld.mjs +36 -11
- package/skills/dld-decide/SKILL.md +1 -1
- package/skills/dld-implement/SKILL.md +1 -1
- package/skills/dld-init/SKILL.md +1 -1
- package/skills/dld-lookup/SKILL.md +1 -1
- package/skills/dld-plan/SKILL.md +1 -1
- package/skills/dld-reindex/SKILL.md +1 -1
- package/skills/dld-retrofit/SKILL.md +1 -1
- package/skills/dld-snapshot/SKILL.md +1 -1
- package/skills/dld-status/SKILL.md +1 -1
package/README.md
CHANGED
|
@@ -36,7 +36,7 @@ This writes:
|
|
|
36
36
|
|
|
37
37
|
- `dld.config.yaml`, `decisions/records/` and `decisions/INDEX.md`
|
|
38
38
|
- the `dld-*` skills for each selected agent: `.claude/skills/` for Claude Code, `.agents/skills/` for the others
|
|
39
|
-
- the always-on rule
|
|
39
|
+
- the always-on rule, once per agent: a block between `<!-- dld-kit:start -->` and `<!-- dld-kit:end -->` in `AGENTS.md` (or `CLAUDE.md`) for Codex, Cursor, OpenCode and Pi, `.agents/rules/dld-workflow.md` for Antigravity, and `.claude/rules/dld-workflow.md` for Claude Code unless Claude Code already reads the block (see [Agents](#agents))
|
|
40
40
|
|
|
41
41
|
`init` detects the agents from files in the project (`.claude/`, `.codex/`, `.cursor/`, `opencode.json`, `.pi/`, `AGENTS.md` and so on) and asks you to confirm the list. Options:
|
|
42
42
|
|
|
@@ -114,7 +114,7 @@ Channels can be combined. These combinations need care:
|
|
|
114
114
|
|
|
115
115
|
| Agent | Skills (`dld init`) | Always-on rule (`dld init`, `/dld-init`) | Run a skill |
|
|
116
116
|
|---|---|---|---|
|
|
117
|
-
| Claude Code | `.claude/skills/` | `.claude/rules/dld-workflow.md` | `/dld-plan` |
|
|
117
|
+
| Claude Code | `.claude/skills/` | `.claude/rules/dld-workflow.md`, or the block in `AGENTS.md` when the project has no `CLAUDE.md`, `.claude/CLAUDE.md` or `CLAUDE.local.md` | `/dld-plan` |
|
|
118
118
|
| Antigravity | `.agents/skills/` | `.agents/rules/dld-workflow.md` | Ask for the dld-plan skill |
|
|
119
119
|
| Codex | `.agents/skills/` | Block in `AGENTS.md` | Ask for the dld-plan skill |
|
|
120
120
|
| Cursor | `.agents/skills/` | Block in `AGENTS.md` | Ask for the dld-plan skill |
|
|
@@ -124,6 +124,8 @@ Channels can be combined. These combinations need care:
|
|
|
124
124
|
|
|
125
125
|
A new block goes into `AGENTS.md` if it exists, else into `CLAUDE.md` if that exists, else into a new `AGENTS.md`. Codex and Cursor read only `AGENTS.md`: when the block ends up in `CLAUDE.md`, `dld install-rule` warns and says how to move it.
|
|
126
126
|
|
|
127
|
+
Each agent gets the rule once. Claude Code reads `AGENTS.md` only when the project has no `CLAUDE.md`, `.claude/CLAUDE.md` or `CLAUDE.local.md`; in that case the block in `AGENTS.md` is its rule, and `init` prints a note. If one of those files is added later, run `npx dld-kit@latest update` (or `dld install-rule`), which then installs `.claude/rules/dld-workflow.md`.
|
|
128
|
+
|
|
127
129
|
The examples below use Claude Code's `/dld-plan` form. In other agents, name the skill instead, e.g. "use the dld-plan skill to plan the retry feature".
|
|
128
130
|
|
|
129
131
|
## Get started
|
|
@@ -411,7 +413,7 @@ DLD is under active development. Feature requests and ideas are welcome — [ope
|
|
|
411
413
|
|
|
412
414
|
## Manual rule setup
|
|
413
415
|
|
|
414
|
-
The always-on rule tells the agent to read a decision before changing code annotated with it. `/dld-init` installs it with `dld install-rule --agent <harness>`, which picks the file the harness loads: `.claude/rules/dld-workflow.md` for Claude Code, `.agents/rules/dld-workflow.md` for Antigravity, or a marked block in `AGENTS.md` (or `CLAUDE.md`) for Codex, Cursor, OpenCode and Pi.
|
|
416
|
+
The always-on rule tells the agent to read a decision before changing code annotated with it. `/dld-init` installs it with `dld install-rule --agent <harness>`, which picks the file the harness loads: `.claude/rules/dld-workflow.md` for Claude Code (unless it already reads the block in `AGENTS.md`), `.agents/rules/dld-workflow.md` for Antigravity, or a marked block in `AGENTS.md` (or `CLAUDE.md`) for Codex, Cursor, OpenCode and Pi.
|
|
415
417
|
|
|
416
418
|
To add it by hand instead, copy [`templates/rules/dld-workflow.md`](templates/rules/dld-workflow.md) into one of those files.
|
|
417
419
|
|
package/dist/dld.mjs
CHANGED
|
@@ -7372,7 +7372,7 @@ import { createInterface } from "node:readline/promises";
|
|
|
7372
7372
|
import { fileURLToPath } from "node:url";
|
|
7373
7373
|
|
|
7374
7374
|
// package.json
|
|
7375
|
-
var version = "1.0.0-rc.
|
|
7375
|
+
var version = "1.0.0-rc.2";
|
|
7376
7376
|
|
|
7377
7377
|
// src/core/errors.ts
|
|
7378
7378
|
var EXIT_ERROR = 1;
|
|
@@ -9048,7 +9048,8 @@ var HARNESSES = [
|
|
|
9048
9048
|
layout: CLAUDE_LAYOUT,
|
|
9049
9049
|
rule: "claude-file",
|
|
9050
9050
|
markers: [".claude", "CLAUDE.md"],
|
|
9051
|
-
|
|
9051
|
+
// @decision(DL-054) Any of the first three stops Claude Code from reading AGENTS.md.
|
|
9052
|
+
instructions: ["CLAUDE.md", ".claude/CLAUDE.md", "CLAUDE.local.md", "AGENTS.md"]
|
|
9052
9053
|
},
|
|
9053
9054
|
{
|
|
9054
9055
|
name: "antigravity",
|
|
@@ -9342,18 +9343,30 @@ function planRule(ctx, root, channels, version2, { harnesses = [] } = {}, text =
|
|
|
9342
9343
|
}
|
|
9343
9344
|
const withBlock = new Set(blockFiles.map(resolved));
|
|
9344
9345
|
const loads = (file) => withBlock.has(resolved(file));
|
|
9345
|
-
const
|
|
9346
|
+
const planned = new Set(blockFiles);
|
|
9347
|
+
const reads = (harness) => instructionFile(ctx, root, harness, planned);
|
|
9348
|
+
const readsBlock = (harness) => {
|
|
9349
|
+
const file = reads(harness);
|
|
9350
|
+
return file !== void 0 && loads(file);
|
|
9351
|
+
};
|
|
9346
9352
|
const ownerOf = (channel) => HARNESSES.find((h) => h.rule === channel);
|
|
9347
9353
|
const loadsBlock = (channel) => {
|
|
9348
9354
|
const owner = ownerOf(channel);
|
|
9349
9355
|
return owner !== void 0 && readsBlock(owner);
|
|
9350
9356
|
};
|
|
9351
|
-
|
|
9352
|
-
if (blockFiles.length > 0 && blind.length > 0) {
|
|
9353
|
-
const names = blind.map((h) => h.title).join(" and ");
|
|
9357
|
+
if (blockFiles.length > 0) {
|
|
9354
9358
|
plan.warnings.push(
|
|
9355
|
-
|
|
9359
|
+
...blindWarnings(
|
|
9360
|
+
blockFiles,
|
|
9361
|
+
harnesses.filter((h) => h.rule === "block" && !readsBlock(h)),
|
|
9362
|
+
reads
|
|
9363
|
+
)
|
|
9356
9364
|
);
|
|
9365
|
+
const claude = harnesses.find((h) => h.rule === "claude-file");
|
|
9366
|
+
const blockWritten = plan.writes.some((write) => write.path === AGENTS_MD);
|
|
9367
|
+
if (claude !== void 0 && reads(claude) === AGENTS_MD && readsBlock(claude) && blockWritten) {
|
|
9368
|
+
plan.warnings.push(CLAUDE_READS_AGENTS_NOTE);
|
|
9369
|
+
}
|
|
9357
9370
|
}
|
|
9358
9371
|
for (const channel of ["claude-file", "agents-file"]) {
|
|
9359
9372
|
const path = RULE_FILES[channel];
|
|
@@ -9369,10 +9382,22 @@ function planRule(ctx, root, channels, version2, { harnesses = [] } = {}, text =
|
|
|
9369
9382
|
plan.warnings.push(...legacyBlockWarnings(read(CLAUDE_MD), ruleInstalled));
|
|
9370
9383
|
return plan;
|
|
9371
9384
|
}
|
|
9372
|
-
function instructionFile(ctx, root, harness) {
|
|
9373
|
-
|
|
9374
|
-
|
|
9385
|
+
function instructionFile(ctx, root, harness, planned = /* @__PURE__ */ new Set()) {
|
|
9386
|
+
return harness.instructions.find((file) => planned.has(file) || ctx.fs.exists(join15(root, file)));
|
|
9387
|
+
}
|
|
9388
|
+
function blindWarnings(blockFiles, blind, reads) {
|
|
9389
|
+
const byFile = /* @__PURE__ */ new Map();
|
|
9390
|
+
for (const harness of blind) {
|
|
9391
|
+
const file = reads(harness) ?? harness.instructions[0] ?? AGENTS_MD;
|
|
9392
|
+
byFile.set(file, [...byFile.get(file) ?? [], harness]);
|
|
9393
|
+
}
|
|
9394
|
+
return [...byFile].map(([file, harnesses]) => {
|
|
9395
|
+
const names = harnesses.map((h) => h.title).join(" and ");
|
|
9396
|
+
const one = harnesses.length === 1;
|
|
9397
|
+
return `The dld-kit rule block is in ${blockFiles.join(" and ")}, but ${names} ${one ? "reads" : "read"} ${file}. To cover ${one ? "it" : "them"}, move the block (the dld-kit:start line through the dld-kit:end line) into ${file}, then run dld install-rule.`;
|
|
9398
|
+
});
|
|
9375
9399
|
}
|
|
9400
|
+
var CLAUDE_READS_AGENTS_NOTE = "Claude Code reads the DLD rule from the AGENTS.md block, because the project has no CLAUDE.md, .claude/CLAUDE.md or CLAUDE.local.md. Adding one of those later stops Claude Code from reading AGENTS.md; run dld update then, which installs .claude/rules/dld-workflow.md.";
|
|
9376
9401
|
function blockPlacement(ctx, root) {
|
|
9377
9402
|
for (const file of [AGENTS_MD, CLAUDE_MD]) {
|
|
9378
9403
|
if (ctx.fs.isRegularFile(join15(root, file))) return file;
|
|
@@ -9399,7 +9424,7 @@ function loadsRule(ctx, root, harness) {
|
|
|
9399
9424
|
return true;
|
|
9400
9425
|
}
|
|
9401
9426
|
const file = instructionFile(ctx, root, harness);
|
|
9402
|
-
if (
|
|
9427
|
+
if (file === void 0) return false;
|
|
9403
9428
|
return ctx.fs.readFile(join15(root, file)).split(/\r?\n/).some((line) => line === BLOCK_START || LEGACY_HEADING.test(line));
|
|
9404
9429
|
}
|
|
9405
9430
|
function sessionContext(ctx, root, harness, text = RULE_TEXT) {
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@ name: dld-adjust
|
|
|
3
3
|
description: Adjust or update existing decision records. Handles permission gating for accepted decisions and correctly interprets adjustment requests.
|
|
4
4
|
compatibility: Requires Node.js 20+ and git.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-adjust/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: dld-audit
|
|
|
3
3
|
description: Scan for drift between decisions and code. Finds orphaned annotations, stale references, and undocumented changes.
|
|
4
4
|
compatibility: Requires Node.js 20+ and git.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-audit/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: dld-audit-auto
|
|
|
3
3
|
description: Autonomous audit — detects drift, fixes issues, and opens a PR. Designed for scheduled/CI execution without human interaction.
|
|
4
4
|
compatibility: Requires Node.js 20+ and git.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-audit-auto/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: dld-common
|
|
|
3
3
|
description: The dld CLI shared by the DLD skills. Not intended for direct invocation — the other DLD skills run it.
|
|
4
4
|
compatibility: Requires Node.js 20+ and git.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-common/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|
|
@@ -7372,7 +7372,7 @@ import { createInterface } from "node:readline/promises";
|
|
|
7372
7372
|
import { fileURLToPath } from "node:url";
|
|
7373
7373
|
|
|
7374
7374
|
// package.json
|
|
7375
|
-
var version = "1.0.0-rc.
|
|
7375
|
+
var version = "1.0.0-rc.2";
|
|
7376
7376
|
|
|
7377
7377
|
// src/core/errors.ts
|
|
7378
7378
|
var EXIT_ERROR = 1;
|
|
@@ -9048,7 +9048,8 @@ var HARNESSES = [
|
|
|
9048
9048
|
layout: CLAUDE_LAYOUT,
|
|
9049
9049
|
rule: "claude-file",
|
|
9050
9050
|
markers: [".claude", "CLAUDE.md"],
|
|
9051
|
-
|
|
9051
|
+
// @decision(DL-054) Any of the first three stops Claude Code from reading AGENTS.md.
|
|
9052
|
+
instructions: ["CLAUDE.md", ".claude/CLAUDE.md", "CLAUDE.local.md", "AGENTS.md"]
|
|
9052
9053
|
},
|
|
9053
9054
|
{
|
|
9054
9055
|
name: "antigravity",
|
|
@@ -9342,18 +9343,30 @@ function planRule(ctx, root, channels, version2, { harnesses = [] } = {}, text =
|
|
|
9342
9343
|
}
|
|
9343
9344
|
const withBlock = new Set(blockFiles.map(resolved));
|
|
9344
9345
|
const loads = (file) => withBlock.has(resolved(file));
|
|
9345
|
-
const
|
|
9346
|
+
const planned = new Set(blockFiles);
|
|
9347
|
+
const reads = (harness) => instructionFile(ctx, root, harness, planned);
|
|
9348
|
+
const readsBlock = (harness) => {
|
|
9349
|
+
const file = reads(harness);
|
|
9350
|
+
return file !== void 0 && loads(file);
|
|
9351
|
+
};
|
|
9346
9352
|
const ownerOf = (channel) => HARNESSES.find((h) => h.rule === channel);
|
|
9347
9353
|
const loadsBlock = (channel) => {
|
|
9348
9354
|
const owner = ownerOf(channel);
|
|
9349
9355
|
return owner !== void 0 && readsBlock(owner);
|
|
9350
9356
|
};
|
|
9351
|
-
|
|
9352
|
-
if (blockFiles.length > 0 && blind.length > 0) {
|
|
9353
|
-
const names = blind.map((h) => h.title).join(" and ");
|
|
9357
|
+
if (blockFiles.length > 0) {
|
|
9354
9358
|
plan.warnings.push(
|
|
9355
|
-
|
|
9359
|
+
...blindWarnings(
|
|
9360
|
+
blockFiles,
|
|
9361
|
+
harnesses.filter((h) => h.rule === "block" && !readsBlock(h)),
|
|
9362
|
+
reads
|
|
9363
|
+
)
|
|
9356
9364
|
);
|
|
9365
|
+
const claude = harnesses.find((h) => h.rule === "claude-file");
|
|
9366
|
+
const blockWritten = plan.writes.some((write) => write.path === AGENTS_MD);
|
|
9367
|
+
if (claude !== void 0 && reads(claude) === AGENTS_MD && readsBlock(claude) && blockWritten) {
|
|
9368
|
+
plan.warnings.push(CLAUDE_READS_AGENTS_NOTE);
|
|
9369
|
+
}
|
|
9357
9370
|
}
|
|
9358
9371
|
for (const channel of ["claude-file", "agents-file"]) {
|
|
9359
9372
|
const path = RULE_FILES[channel];
|
|
@@ -9369,10 +9382,22 @@ function planRule(ctx, root, channels, version2, { harnesses = [] } = {}, text =
|
|
|
9369
9382
|
plan.warnings.push(...legacyBlockWarnings(read(CLAUDE_MD), ruleInstalled));
|
|
9370
9383
|
return plan;
|
|
9371
9384
|
}
|
|
9372
|
-
function instructionFile(ctx, root, harness) {
|
|
9373
|
-
|
|
9374
|
-
|
|
9385
|
+
function instructionFile(ctx, root, harness, planned = /* @__PURE__ */ new Set()) {
|
|
9386
|
+
return harness.instructions.find((file) => planned.has(file) || ctx.fs.exists(join15(root, file)));
|
|
9387
|
+
}
|
|
9388
|
+
function blindWarnings(blockFiles, blind, reads) {
|
|
9389
|
+
const byFile = /* @__PURE__ */ new Map();
|
|
9390
|
+
for (const harness of blind) {
|
|
9391
|
+
const file = reads(harness) ?? harness.instructions[0] ?? AGENTS_MD;
|
|
9392
|
+
byFile.set(file, [...byFile.get(file) ?? [], harness]);
|
|
9393
|
+
}
|
|
9394
|
+
return [...byFile].map(([file, harnesses]) => {
|
|
9395
|
+
const names = harnesses.map((h) => h.title).join(" and ");
|
|
9396
|
+
const one = harnesses.length === 1;
|
|
9397
|
+
return `The dld-kit rule block is in ${blockFiles.join(" and ")}, but ${names} ${one ? "reads" : "read"} ${file}. To cover ${one ? "it" : "them"}, move the block (the dld-kit:start line through the dld-kit:end line) into ${file}, then run dld install-rule.`;
|
|
9398
|
+
});
|
|
9375
9399
|
}
|
|
9400
|
+
var CLAUDE_READS_AGENTS_NOTE = "Claude Code reads the DLD rule from the AGENTS.md block, because the project has no CLAUDE.md, .claude/CLAUDE.md or CLAUDE.local.md. Adding one of those later stops Claude Code from reading AGENTS.md; run dld update then, which installs .claude/rules/dld-workflow.md.";
|
|
9376
9401
|
function blockPlacement(ctx, root) {
|
|
9377
9402
|
for (const file of [AGENTS_MD, CLAUDE_MD]) {
|
|
9378
9403
|
if (ctx.fs.isRegularFile(join15(root, file))) return file;
|
|
@@ -9399,7 +9424,7 @@ function loadsRule(ctx, root, harness) {
|
|
|
9399
9424
|
return true;
|
|
9400
9425
|
}
|
|
9401
9426
|
const file = instructionFile(ctx, root, harness);
|
|
9402
|
-
if (
|
|
9427
|
+
if (file === void 0) return false;
|
|
9403
9428
|
return ctx.fs.readFile(join15(root, file)).split(/\r?\n/).some((line) => line === BLOCK_START || LEGACY_HEADING.test(line));
|
|
9404
9429
|
}
|
|
9405
9430
|
function sessionContext(ctx, root, harness, text = RULE_TEXT) {
|
|
@@ -3,7 +3,7 @@ name: dld-decide
|
|
|
3
3
|
description: Record a single development decision as a markdown file with YAML frontmatter. Collects context, rationale, and code references interactively.
|
|
4
4
|
compatibility: Requires Node.js 20+ and git.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-decide/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: dld-implement
|
|
|
3
3
|
description: Implement one or more proposed decisions. Makes code changes, adds `@decision` annotations, and updates decision status.
|
|
4
4
|
compatibility: Requires Node.js 20+ and git.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-implement/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|
package/skills/dld-init/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: dld-init
|
|
|
3
3
|
description: Bootstrap DLD (Decision-Linked Development) in a repository. Creates dld.config.yaml, the decisions/ directory, and INDEX.md. Run once per project.
|
|
4
4
|
compatibility: Requires Node.js 20+ and git.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-init/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: dld-lookup
|
|
|
3
3
|
description: Look up decisions by ID, tag, code path, or keyword. IMPORTANT — use this proactively whenever you encounter `@decision` annotations in code you are about to read or modify.
|
|
4
4
|
compatibility: No external dependencies.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-lookup/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|
package/skills/dld-plan/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: dld-plan
|
|
|
3
3
|
description: Break down a feature into multiple decisions interactively. Creates a set of decision records grouped by a shared tag.
|
|
4
4
|
compatibility: Requires Node.js 20+ and git.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-plan/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: dld-reindex
|
|
|
3
3
|
description: Resolve decision ID collisions between a local branch and the base branch (and open PRs) before rebasing. Renames colliding local decisions with git mv, rewrites cross-references and annotations, then squashes branch commits into a single rebase-clean reindex commit.
|
|
4
4
|
compatibility: Requires Node.js 20+ and git. Open-PR scanning additionally needs the `gh` CLI authenticated against a GitHub remote — the skill falls back gracefully when unavailable.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-reindex/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: dld-retrofit
|
|
|
3
3
|
description: Bootstrap DLD decisions from an existing codebase. Analyzes code to infer rationale, generates decision records, and adds `@decision` annotations.
|
|
4
4
|
compatibility: Requires Node.js 20+ and git.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-retrofit/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: dld-snapshot
|
|
|
3
3
|
description: Generate SNAPSHOT.md (detailed decision reference) and OVERVIEW.md (narrative synthesis with diagrams) from the decision log.
|
|
4
4
|
compatibility: Requires Node.js 20+ and git.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-snapshot/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: dld-status
|
|
|
3
3
|
description: Quick overview of the decision log state — counts by status, recent decisions, and run tracking info.
|
|
4
4
|
compatibility: No external dependencies.
|
|
5
5
|
metadata:
|
|
6
|
-
dld-kit-version: "1.0.0-rc.
|
|
6
|
+
dld-kit-version: "1.0.0-rc.2"
|
|
7
7
|
---
|
|
8
8
|
<!-- Generated by dld-kit from templates/skills/dld-status/SKILL.md. Do not edit: updating the skills overwrites this file. -->
|
|
9
9
|
|