domain-knowledge-kit 0.2.15 → 0.2.19
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 +4 -0
- package/dist/cli.js +24 -1
- package/dist/cli.js.map +1 -1
- package/dist/features/agent/commands/init.d.ts +90 -1
- package/dist/features/agent/commands/init.d.ts.map +1 -1
- package/dist/features/agent/commands/init.js +328 -32
- package/dist/features/agent/commands/init.js.map +1 -1
- package/dist/features/agent/commands/prime.d.ts +11 -0
- package/dist/features/agent/commands/prime.d.ts.map +1 -1
- package/dist/features/agent/commands/prime.js +105 -8
- package/dist/features/agent/commands/prime.js.map +1 -1
- package/dist/features/agent/commands/update.d.ts +27 -0
- package/dist/features/agent/commands/update.d.ts.map +1 -0
- package/dist/features/agent/commands/update.js +316 -0
- package/dist/features/agent/commands/update.js.map +1 -0
- package/dist/features/agent/dkk-artifacts.d.ts +76 -0
- package/dist/features/agent/dkk-artifacts.d.ts.map +1 -0
- package/dist/features/agent/dkk-artifacts.js +328 -0
- package/dist/features/agent/dkk-artifacts.js.map +1 -0
- package/dist/features/agent/install-mode.d.ts +34 -0
- package/dist/features/agent/install-mode.d.ts.map +1 -0
- package/dist/features/agent/install-mode.js +78 -0
- package/dist/features/agent/install-mode.js.map +1 -0
- package/dist/features/agent/mcp-register.d.ts +20 -0
- package/dist/features/agent/mcp-register.d.ts.map +1 -0
- package/dist/features/agent/mcp-register.js +116 -0
- package/dist/features/agent/mcp-register.js.map +1 -0
- package/dist/features/agent/settings-prune.d.ts +29 -0
- package/dist/features/agent/settings-prune.d.ts.map +1 -0
- package/dist/features/agent/settings-prune.js +70 -0
- package/dist/features/agent/settings-prune.js.map +1 -0
- package/dist/features/agent/tests/settings-prune.test.d.ts +2 -0
- package/dist/features/agent/tests/settings-prune.test.d.ts.map +1 -0
- package/dist/features/agent/tests/settings-prune.test.js +118 -0
- package/dist/features/agent/tests/settings-prune.test.js.map +1 -0
- package/dist/features/federation/commands/consumers.d.ts +40 -0
- package/dist/features/federation/commands/consumers.d.ts.map +1 -0
- package/dist/features/federation/commands/consumers.js +126 -0
- package/dist/features/federation/commands/consumers.js.map +1 -0
- package/dist/features/federation/commands/peers-add.d.ts +14 -0
- package/dist/features/federation/commands/peers-add.d.ts.map +1 -0
- package/dist/features/federation/commands/peers-add.js +79 -0
- package/dist/features/federation/commands/peers-add.js.map +1 -0
- package/dist/features/federation/commands/peers-list.d.ts +8 -0
- package/dist/features/federation/commands/peers-list.d.ts.map +1 -0
- package/dist/features/federation/commands/peers-list.js +51 -0
- package/dist/features/federation/commands/peers-list.js.map +1 -0
- package/dist/features/federation/commands/peers-status.d.ts +8 -0
- package/dist/features/federation/commands/peers-status.d.ts.map +1 -0
- package/dist/features/federation/commands/peers-status.js +78 -0
- package/dist/features/federation/commands/peers-status.js.map +1 -0
- package/dist/features/federation/commands/pull.d.ts +18 -0
- package/dist/features/federation/commands/pull.d.ts.map +1 -0
- package/dist/features/federation/commands/pull.js +153 -0
- package/dist/features/federation/commands/pull.js.map +1 -0
- package/dist/features/federation/git-fetcher.d.ts +45 -0
- package/dist/features/federation/git-fetcher.d.ts.map +1 -0
- package/dist/features/federation/git-fetcher.js +70 -0
- package/dist/features/federation/git-fetcher.js.map +1 -0
- package/dist/features/federation/loader.d.ts +60 -0
- package/dist/features/federation/loader.d.ts.map +1 -0
- package/dist/features/federation/loader.js +193 -0
- package/dist/features/federation/loader.js.map +1 -0
- package/dist/features/federation/lock.d.ts +12 -0
- package/dist/features/federation/lock.d.ts.map +1 -0
- package/dist/features/federation/lock.js +48 -0
- package/dist/features/federation/lock.js.map +1 -0
- package/dist/features/federation/tests/git-fetcher.test.d.ts +2 -0
- package/dist/features/federation/tests/git-fetcher.test.d.ts.map +1 -0
- package/dist/features/federation/tests/git-fetcher.test.js +167 -0
- package/dist/features/federation/tests/git-fetcher.test.js.map +1 -0
- package/dist/features/federation/tests/loader.test.d.ts +2 -0
- package/dist/features/federation/tests/loader.test.d.ts.map +1 -0
- package/dist/features/federation/tests/loader.test.js +144 -0
- package/dist/features/federation/tests/loader.test.js.map +1 -0
- package/dist/features/federation/tests/phase5.test.d.ts +2 -0
- package/dist/features/federation/tests/phase5.test.d.ts.map +1 -0
- package/dist/features/federation/tests/phase5.test.js +137 -0
- package/dist/features/federation/tests/phase5.test.js.map +1 -0
- package/dist/features/federation/tests/schema-load.test.d.ts +2 -0
- package/dist/features/federation/tests/schema-load.test.d.ts.map +1 -0
- package/dist/features/federation/tests/schema-load.test.js +97 -0
- package/dist/features/federation/tests/schema-load.test.js.map +1 -0
- package/dist/features/federation/tests/validator.test.d.ts +2 -0
- package/dist/features/federation/tests/validator.test.d.ts.map +1 -0
- package/dist/features/federation/tests/validator.test.js +319 -0
- package/dist/features/federation/tests/validator.test.js.map +1 -0
- package/dist/features/mcp/commands/serve.d.ts +10 -0
- package/dist/features/mcp/commands/serve.d.ts.map +1 -0
- package/dist/features/mcp/commands/serve.js +12 -0
- package/dist/features/mcp/commands/serve.js.map +1 -0
- package/dist/features/mcp/server.d.ts +15 -0
- package/dist/features/mcp/server.d.ts.map +1 -0
- package/dist/features/mcp/server.js +438 -0
- package/dist/features/mcp/server.js.map +1 -0
- package/dist/features/pipeline/commands/validate.d.ts.map +1 -1
- package/dist/features/pipeline/commands/validate.js +7 -0
- package/dist/features/pipeline/commands/validate.js.map +1 -1
- package/dist/features/pipeline/indexer.d.ts +28 -2
- package/dist/features/pipeline/indexer.d.ts.map +1 -1
- package/dist/features/pipeline/indexer.js +82 -27
- package/dist/features/pipeline/indexer.js.map +1 -1
- package/dist/features/pipeline/validator.d.ts +10 -0
- package/dist/features/pipeline/validator.d.ts.map +1 -1
- package/dist/features/pipeline/validator.js +274 -27
- package/dist/features/pipeline/validator.js.map +1 -1
- package/dist/features/query/commands/list.d.ts +10 -0
- package/dist/features/query/commands/list.d.ts.map +1 -1
- package/dist/features/query/commands/list.js +1 -1
- package/dist/features/query/commands/list.js.map +1 -1
- package/dist/features/query/commands/locate.d.ts +1 -0
- package/dist/features/query/commands/locate.d.ts.map +1 -1
- package/dist/features/query/commands/locate.js +1 -1
- package/dist/features/query/commands/locate.js.map +1 -1
- package/dist/features/query/commands/search.d.ts.map +1 -1
- package/dist/features/query/commands/search.js +2 -0
- package/dist/features/query/commands/search.js.map +1 -1
- package/dist/features/query/commands/show.d.ts +15 -0
- package/dist/features/query/commands/show.d.ts.map +1 -1
- package/dist/features/query/commands/show.js +116 -58
- package/dist/features/query/commands/show.js.map +1 -1
- package/dist/features/query/commands/story.d.ts +70 -0
- package/dist/features/query/commands/story.d.ts.map +1 -1
- package/dist/features/query/commands/story.js +2 -2
- package/dist/features/query/commands/story.js.map +1 -1
- package/dist/features/query/commands/summary.d.ts +3 -0
- package/dist/features/query/commands/summary.d.ts.map +1 -1
- package/dist/features/query/commands/summary.js +1 -1
- package/dist/features/query/commands/summary.js.map +1 -1
- package/dist/features/query/searcher.d.ts +18 -1
- package/dist/features/query/searcher.d.ts.map +1 -1
- package/dist/features/query/searcher.js +11 -2
- package/dist/features/query/searcher.js.map +1 -1
- package/dist/features/scaffold/commands/new-domain.d.ts +22 -0
- package/dist/features/scaffold/commands/new-domain.d.ts.map +1 -1
- package/dist/features/scaffold/commands/new-domain.js +44 -28
- package/dist/features/scaffold/commands/new-domain.js.map +1 -1
- package/dist/features/scaffold/commands/service-init.d.ts +12 -0
- package/dist/features/scaffold/commands/service-init.d.ts.map +1 -0
- package/dist/features/scaffold/commands/service-init.js +69 -0
- package/dist/features/scaffold/commands/service-init.js.map +1 -0
- package/dist/shared/graph.d.ts +8 -0
- package/dist/shared/graph.d.ts.map +1 -1
- package/dist/shared/graph.js +180 -112
- package/dist/shared/graph.js.map +1 -1
- package/dist/shared/index.d.ts +4 -1
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +6 -1
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/loader.d.ts +22 -0
- package/dist/shared/loader.d.ts.map +1 -1
- package/dist/shared/loader.js +31 -1
- package/dist/shared/loader.js.map +1 -1
- package/dist/shared/paths.d.ts +59 -7
- package/dist/shared/paths.d.ts.map +1 -1
- package/dist/shared/paths.js +93 -11
- package/dist/shared/paths.js.map +1 -1
- package/dist/shared/refs.d.ts +96 -0
- package/dist/shared/refs.d.ts.map +1 -0
- package/dist/shared/refs.js +182 -0
- package/dist/shared/refs.js.map +1 -0
- package/dist/shared/service-id.d.ts +11 -0
- package/dist/shared/service-id.d.ts.map +1 -0
- package/dist/shared/service-id.js +64 -0
- package/dist/shared/service-id.js.map +1 -0
- package/dist/shared/tests/paths.test.d.ts +2 -0
- package/dist/shared/tests/paths.test.d.ts.map +1 -0
- package/dist/shared/tests/paths.test.js +111 -0
- package/dist/shared/tests/paths.test.js.map +1 -0
- package/dist/shared/tests/refs.test.d.ts +2 -0
- package/dist/shared/tests/refs.test.d.ts.map +1 -0
- package/dist/shared/tests/refs.test.js +104 -0
- package/dist/shared/tests/refs.test.js.map +1 -0
- package/dist/shared/types/domain.d.ts +14 -0
- package/dist/shared/types/domain.d.ts.map +1 -1
- package/dist/shared/types/federation.d.ts +60 -0
- package/dist/shared/types/federation.d.ts.map +1 -0
- package/dist/shared/types/federation.js +12 -0
- package/dist/shared/types/federation.js.map +1 -0
- package/dist/version.d.ts +4 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +15 -0
- package/dist/version.js.map +1 -0
- package/package.json +8 -5
- package/tools/dkk/claude/agents/dkk-domain-reviewer.md +69 -0
- package/tools/dkk/claude/commands/dkk-adr.md +11 -0
- package/tools/dkk/claude/commands/dkk-impact.md +34 -0
- package/tools/dkk/claude/commands/dkk-implement.md +12 -0
- package/tools/dkk/claude/commands/dkk-prime.md +6 -0
- package/tools/dkk/claude/commands/dkk-review.md +12 -0
- package/tools/dkk/claude/commands/dkk-story.md +12 -0
- package/tools/dkk/claude/hooks/post-edit-validate.mjs +68 -0
- package/tools/dkk/claude/hooks/pre-edit-block-generated.mjs +39 -0
- package/tools/dkk/claude/hooks/session-start-prime.mjs +20 -0
- package/tools/dkk/claude/hooks/stop-validate.mjs +67 -0
- package/tools/dkk/claude/settings.json +62 -0
- package/tools/dkk/claude/skills/dkk-adr-author/SKILL.md +54 -0
- package/tools/dkk/claude/skills/dkk-flow-implementer/SKILL.md +51 -0
- package/tools/dkk/claude/skills/dkk-story-analyst/SKILL.md +108 -0
- package/tools/dkk/schema/actors.schema.json +1 -1
- package/tools/dkk/schema/adr-frontmatter.schema.json +4 -4
- package/tools/dkk/schema/aggregate.schema.json +1 -1
- package/tools/dkk/schema/command.schema.json +1 -1
- package/tools/dkk/schema/event.schema.json +1 -1
- package/tools/dkk/schema/federation.schema.json +71 -0
- package/tools/dkk/schema/glossary.schema.json +1 -1
- package/tools/dkk/schema/index.schema.json +2 -2
- package/tools/dkk/schema/policy.schema.json +1 -1
- package/tools/dkk/schema/read-model.schema.json +1 -1
- package/tools/dkk/schema/service.schema.json +30 -0
package/README.md
CHANGED
|
@@ -24,6 +24,10 @@ Architectural decisions aren't born in a vacuum. Understanding *why* a choice wa
|
|
|
24
24
|
|
|
25
25
|
Knowledge that lives next to the code is knowledge that gets used. DKK colocates your domain model, ADRs, and generated docs inside the repository itself. AI agents can discover, query, and traverse this knowledge without leaving the codebase — making every interaction domain-aware.
|
|
26
26
|
|
|
27
|
+
### One domain model can span many repositories
|
|
28
|
+
|
|
29
|
+
In enterprise architectures each service lives in its own repo, but the domain it participates in does not. DKK supports **multi-repo federation**: a repo declares itself a service with `.dkk/service.yml`, lists peer services in `.dkk/federation.yml` (by filesystem path or git URL + branch), and the loader transparently merges peer domain models into the local one. Cross-service references use the additive grammar `<service>:<context>.<Item>` — bare refs stay local-only. No CI required, no publish step, no orphan branches: a peer's raw `.dkk/` directory is the artifact. The AI assistant in any repo can answer "what does `ordering:OrderPlaced` contain, and who else consumes it?" without leaving the current working directory.
|
|
30
|
+
|
|
27
31
|
---
|
|
28
32
|
|
|
29
33
|
## Documentation
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from "commander";
|
|
3
|
+
import { pkgVersion } from "./version.js";
|
|
3
4
|
import { registerList } from "./features/query/commands/list.js";
|
|
4
5
|
import { registerShow } from "./features/query/commands/show.js";
|
|
5
6
|
import { registerSummary } from "./features/query/commands/summary.js";
|
|
@@ -11,15 +12,23 @@ import { registerStory } from "./features/query/commands/story.js";
|
|
|
11
12
|
import { registerValidate } from "./features/pipeline/commands/validate.js";
|
|
12
13
|
import { registerRender } from "./features/pipeline/commands/render.js";
|
|
13
14
|
import { registerInit } from "./features/agent/commands/init.js";
|
|
15
|
+
import { registerUpdate } from "./features/agent/commands/update.js";
|
|
14
16
|
import { registerPrime } from "./features/agent/commands/prime.js";
|
|
15
17
|
import { registerNewDomain } from "./features/scaffold/commands/new-domain.js";
|
|
16
18
|
import { registerNewContext } from "./features/scaffold/commands/new-context.js";
|
|
17
19
|
import { registerNewAdr } from "./features/scaffold/commands/new-adr.js";
|
|
18
20
|
import { registerAddItem } from "./features/scaffold/commands/add-item.js";
|
|
21
|
+
import { registerServiceInit } from "./features/scaffold/commands/service-init.js";
|
|
22
|
+
import { registerPeersAdd } from "./features/federation/commands/peers-add.js";
|
|
23
|
+
import { registerPeersList } from "./features/federation/commands/peers-list.js";
|
|
24
|
+
import { registerPeersStatus } from "./features/federation/commands/peers-status.js";
|
|
25
|
+
import { registerPull } from "./features/federation/commands/pull.js";
|
|
26
|
+
import { registerConsumers } from "./features/federation/commands/consumers.js";
|
|
19
27
|
import { registerRename } from "./features/refactor/commands/rename.js";
|
|
20
28
|
import { registerRm } from "./features/refactor/commands/rm.js";
|
|
21
29
|
import { registerMove } from "./features/refactor/commands/move.js";
|
|
22
30
|
import { registerStats } from "./features/audit/commands/stats.js";
|
|
31
|
+
import { registerMcp } from "./features/mcp/commands/serve.js";
|
|
23
32
|
import { formatCliError } from "./shared/errors.js";
|
|
24
33
|
/** Whether to show full stack traces (set DEBUG=1 in env). */
|
|
25
34
|
const DEBUG = Boolean(process.env.DEBUG);
|
|
@@ -28,7 +37,7 @@ const program = new Command();
|
|
|
28
37
|
program
|
|
29
38
|
.name("dkk")
|
|
30
39
|
.description("Domain Knowledge Kit CLI")
|
|
31
|
-
.version(
|
|
40
|
+
.version(pkgVersion)
|
|
32
41
|
.configureHelp({ helpWidth: 100 })
|
|
33
42
|
.addHelpText("after", `
|
|
34
43
|
Domain Types:
|
|
@@ -50,11 +59,13 @@ registerStory(program);
|
|
|
50
59
|
registerValidate(program);
|
|
51
60
|
registerRender(program);
|
|
52
61
|
registerInit(program);
|
|
62
|
+
registerUpdate(program);
|
|
53
63
|
registerPrime(program);
|
|
54
64
|
registerRename(program);
|
|
55
65
|
registerRm(program);
|
|
56
66
|
registerMove(program);
|
|
57
67
|
registerStats(program);
|
|
68
|
+
registerMcp(program);
|
|
58
69
|
// "new" sub-command group
|
|
59
70
|
const newCmd = program
|
|
60
71
|
.command("new")
|
|
@@ -64,6 +75,18 @@ registerNewContext(newCmd);
|
|
|
64
75
|
registerNewAdr(newCmd);
|
|
65
76
|
// Top-level "add" command for individual domain items
|
|
66
77
|
registerAddItem(program);
|
|
78
|
+
// Federation: service identity
|
|
79
|
+
registerServiceInit(program);
|
|
80
|
+
// Federation: peer management
|
|
81
|
+
const peersCmd = program
|
|
82
|
+
.command("peers")
|
|
83
|
+
.description("Federation peer management");
|
|
84
|
+
registerPeersAdd(peersCmd);
|
|
85
|
+
registerPeersList(peersCmd);
|
|
86
|
+
registerPeersStatus(peersCmd);
|
|
87
|
+
// Federation: dkk pull + dkk consumers
|
|
88
|
+
registerPull(program);
|
|
89
|
+
registerConsumers(program);
|
|
67
90
|
// ── Agent mode injection ─────────────────────────────────────────────
|
|
68
91
|
program.option("--agent", "Enable agent mode (JSON + minify by default)");
|
|
69
92
|
// Add --no-json to commands that have --json
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,8DAA8D;AAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAEzC,yEAAyE;AAEzE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,0BAA0B,CAAC;KACvC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,100 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `dkk init` command — create or update AGENTS.md with a DKK section
|
|
2
|
+
* `dkk init` command — create or update AGENTS.md with a DKK section, and
|
|
3
|
+
* print conditional next-step guidance based on the current repo state.
|
|
3
4
|
*
|
|
4
5
|
* Inserts a Domain Knowledge Kit section delimited by HTML comment markers.
|
|
5
6
|
* Idempotent: replaces the section between markers on re-run, appends if
|
|
6
7
|
* markers are absent, creates the file if it does not exist.
|
|
8
|
+
*
|
|
9
|
+
* Does NOT scaffold `.dkk/domain/` — that is a separate, deliberate step
|
|
10
|
+
* (`dkk new domain`). The intuition is that a domain model is intrinsic to
|
|
11
|
+
* the project's business, not something to be templated. After writing
|
|
12
|
+
* AGENTS.md, init prints next-step guidance tuned to whether the repo has
|
|
13
|
+
* no domain, only the sample scaffold, or a real model.
|
|
14
|
+
*
|
|
15
|
+
* Optional flags layer in `.claude/` and `.github/skills/` for AI-agent
|
|
16
|
+
* integrations.
|
|
7
17
|
*/
|
|
8
18
|
import type { Command as Cmd } from "commander";
|
|
19
|
+
/**
|
|
20
|
+
* Copy all skill files from the DKK package's `.github/skills/` directory
|
|
21
|
+
* into the target project's `.github/skills/` directory.
|
|
22
|
+
*
|
|
23
|
+
* Each skill lives in a subdirectory (e.g. `story-analyst/skill.md`).
|
|
24
|
+
* Files are skipped if they already exist, unless `force` is true.
|
|
25
|
+
*/
|
|
26
|
+
export declare function installSkills(root: string, force: boolean): void;
|
|
27
|
+
/** Pull `<filename>.mjs` out of a hook command string (e.g.
|
|
28
|
+
* `node "$CLAUDE_PROJECT_DIR/.claude/hooks/foo.mjs"` → `foo.mjs`).
|
|
29
|
+
* Used to dedupe DKK hooks across re-runs and merges. */
|
|
30
|
+
export declare function extractHookBasename(cmd: unknown): string | null;
|
|
31
|
+
export interface ClaudeSettings {
|
|
32
|
+
$schema?: string;
|
|
33
|
+
permissions?: {
|
|
34
|
+
allow?: string[];
|
|
35
|
+
[k: string]: unknown;
|
|
36
|
+
};
|
|
37
|
+
hooks?: Record<string, Array<{
|
|
38
|
+
matcher?: string;
|
|
39
|
+
hooks?: Array<{
|
|
40
|
+
type?: string;
|
|
41
|
+
command?: string;
|
|
42
|
+
}>;
|
|
43
|
+
}>>;
|
|
44
|
+
[k: string]: unknown;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Additive merge of the DKK template into an existing Claude settings file.
|
|
48
|
+
*
|
|
49
|
+
* - `$schema` is set only when absent.
|
|
50
|
+
* - `permissions.allow` gains any DKK entries not already present (string-equal dedup).
|
|
51
|
+
* - For each hook event, a template entry is appended only when no existing
|
|
52
|
+
* entry under that event already references the same hook script basename
|
|
53
|
+
* (so users can rename `matcher` or wrap the command and we still recognise
|
|
54
|
+
* it as the same DKK hook on subsequent runs).
|
|
55
|
+
*
|
|
56
|
+
* Never removes or rewrites existing entries — user customisations survive.
|
|
57
|
+
*/
|
|
58
|
+
export declare function mergeClaudeSettings(existing: ClaudeSettings, template: ClaudeSettings): {
|
|
59
|
+
merged: ClaudeSettings;
|
|
60
|
+
changes: string[];
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Copy the bundled Claude Code config (`settings.json`, hooks, skills,
|
|
64
|
+
* subagents, slash commands) from the DKK package into the consumer
|
|
65
|
+
* project's `.claude/` directory.
|
|
66
|
+
*
|
|
67
|
+
* `settings.json` is merged additively when it already exists (user
|
|
68
|
+
* customisations preserved); all other files skip-if-present unless
|
|
69
|
+
* `--force` overwrites them.
|
|
70
|
+
*
|
|
71
|
+
* Layout produced:
|
|
72
|
+
* .claude/
|
|
73
|
+
* settings.json
|
|
74
|
+
* hooks/<hook>.mjs (executable bit set)
|
|
75
|
+
* skills/<skill>/SKILL.md
|
|
76
|
+
* agents/<agent>.md
|
|
77
|
+
* commands/<command>.md
|
|
78
|
+
*/
|
|
79
|
+
export interface InstallClaudeOpts {
|
|
80
|
+
/** Skip writing/merging `.claude/settings.json`. Used by `dkk update` so its
|
|
81
|
+
* prune + re-merge phase can handle settings independently from artifact
|
|
82
|
+
* refresh. Defaults to false. */
|
|
83
|
+
skipSettings?: boolean;
|
|
84
|
+
}
|
|
85
|
+
export declare function installClaudeConfig(root: string, force: boolean, opts?: InstallClaudeOpts): void;
|
|
86
|
+
/**
|
|
87
|
+
* Create or refresh the DKK section in `AGENTS.md` at the repo root.
|
|
88
|
+
*
|
|
89
|
+
* Three outcomes, mirrored in the returned status:
|
|
90
|
+
* - `created`: no `AGENTS.md` existed; one was written with a default header.
|
|
91
|
+
* - `updated`: file existed and contained the delimited DKK section; the
|
|
92
|
+
* section was replaced in place.
|
|
93
|
+
* - `appended`: file existed without DKK markers; the section was appended.
|
|
94
|
+
*
|
|
95
|
+
* Used by both `dkk init` and `dkk update`.
|
|
96
|
+
*/
|
|
97
|
+
export declare function refreshAgentsMd(root: string): "created" | "updated" | "appended";
|
|
9
98
|
/** Register the `init` subcommand. */
|
|
10
99
|
export declare function registerInit(program: Cmd): void;
|
|
11
100
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/features/agent/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/features/agent/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AA4FhD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAmChE;AAoFD;;0DAE0D;AAC1D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI/D;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC,CAAC;IACxG,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,GACvB;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CA8C/C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,iBAAiB;IAChC;;sCAEkC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAE,iBAAsB,GAAG,IAAI,CAgFpG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAwBhF;AAqED,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CA2B/C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, statSync } from "node:fs";
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, statSync, chmodSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { repoRoot, packageSkillsDir } from "../../../shared/paths.js";
|
|
3
|
+
import { repoRoot, packageSkillsDir, packageClaudeDir, domainDir } from "../../../shared/paths.js";
|
|
4
|
+
import { loadDomainModel } from "../../../shared/loader.js";
|
|
4
5
|
const START_MARKER = "<!-- dkk:start -->";
|
|
5
6
|
const END_MARKER = "<!-- dkk:end -->";
|
|
6
7
|
/**
|
|
@@ -48,7 +49,7 @@ dkk render # Validate, render docs, rebuild search in
|
|
|
48
49
|
# ADR
|
|
49
50
|
|
|
50
51
|
# Scaffold
|
|
51
|
-
dkk new domain # Scaffold .dkk/domain/ structure
|
|
52
|
+
dkk new domain # Scaffold .dkk/domain/ structure (one-time, per project)
|
|
52
53
|
dkk new context <name> # Scaffold a new bounded context
|
|
53
54
|
dkk new adr "<title>" # Scaffold a new ADR file
|
|
54
55
|
dkk add <type> <name> --context <ctx> # Scaffold an individual domain item
|
|
@@ -61,8 +62,12 @@ dkk rm <id> # Remove item safely
|
|
|
61
62
|
dkk stats # Domain statistics + orphaned items
|
|
62
63
|
|
|
63
64
|
# Agent
|
|
64
|
-
dkk init # Create/update AGENTS.md with DKK section
|
|
65
|
+
dkk init # Create/update AGENTS.md with DKK section + print next steps
|
|
66
|
+
dkk init --claude # Also scaffold .claude/ (settings, hooks, skills, agents, commands)
|
|
67
|
+
dkk init --skills # Also install agent skills into .github/skills/
|
|
68
|
+
dkk update # Upgrade dkk via npm + refresh .claude/.github/skills artifacts + MCP
|
|
65
69
|
dkk prime # Output full agent context
|
|
70
|
+
dkk mcp # Run the DKK MCP server (stdio) for Claude Code etc.
|
|
66
71
|
\`\`\`
|
|
67
72
|
|
|
68
73
|
### Quality Gates
|
|
@@ -87,7 +92,7 @@ function delimitedSection() {
|
|
|
87
92
|
* Each skill lives in a subdirectory (e.g. `story-analyst/skill.md`).
|
|
88
93
|
* Files are skipped if they already exist, unless `force` is true.
|
|
89
94
|
*/
|
|
90
|
-
function installSkills(root, force) {
|
|
95
|
+
export function installSkills(root, force) {
|
|
91
96
|
const srcDir = packageSkillsDir();
|
|
92
97
|
const destDir = join(root, ".github", "skills");
|
|
93
98
|
if (!existsSync(srcDir)) {
|
|
@@ -118,45 +123,336 @@ function installSkills(root, force) {
|
|
|
118
123
|
}
|
|
119
124
|
}
|
|
120
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Copy every file in `srcDir` (one level deep) into `destDir`. Skips files
|
|
128
|
+
* that already exist unless `force` is true. Reports each file with a
|
|
129
|
+
* `.claude/<relSubpath>/<filename>` label.
|
|
130
|
+
*
|
|
131
|
+
* If `executable` is true, sets 0o755 on each copied file (used for hook
|
|
132
|
+
* scripts).
|
|
133
|
+
*/
|
|
134
|
+
function copyFlatDir(opts) {
|
|
135
|
+
const { srcDir, destDir, relSubpath, force, executable } = opts;
|
|
136
|
+
if (!existsSync(srcDir))
|
|
137
|
+
return;
|
|
138
|
+
mkdirSync(destDir, { recursive: true });
|
|
139
|
+
for (const fileName of readdirSync(srcDir)) {
|
|
140
|
+
const srcFile = join(srcDir, fileName);
|
|
141
|
+
if (!statSync(srcFile).isFile())
|
|
142
|
+
continue;
|
|
143
|
+
const destFile = join(destDir, fileName);
|
|
144
|
+
const relPath = `${relSubpath}/${fileName}`;
|
|
145
|
+
if (existsSync(destFile) && !force) {
|
|
146
|
+
console.log(`Skipped ${relPath} (already exists — use --force to overwrite)`);
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
const alreadyExisted = existsSync(destFile);
|
|
150
|
+
writeFileSync(destFile, readFileSync(srcFile, "utf-8"), "utf-8");
|
|
151
|
+
if (executable) {
|
|
152
|
+
try {
|
|
153
|
+
chmodSync(destFile, 0o755);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// Non-POSIX filesystems may reject chmod — safe to ignore.
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
console.log(`${alreadyExisted ? "Updated" : "Created"} ${relPath}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Copy a directory of skill subdirectories. Layout is `<srcDir>/<skill>/<file>`,
|
|
164
|
+
* mirrored under `<destDir>/<skill>/<file>`. Skips files that already exist
|
|
165
|
+
* unless `force` is true.
|
|
166
|
+
*/
|
|
167
|
+
function copyNestedDir(opts) {
|
|
168
|
+
const { srcDir, destDir, relSubpath, force } = opts;
|
|
169
|
+
if (!existsSync(srcDir))
|
|
170
|
+
return;
|
|
171
|
+
for (const subName of readdirSync(srcDir)) {
|
|
172
|
+
const subSrc = join(srcDir, subName);
|
|
173
|
+
if (!statSync(subSrc).isDirectory())
|
|
174
|
+
continue;
|
|
175
|
+
const subDest = join(destDir, subName);
|
|
176
|
+
mkdirSync(subDest, { recursive: true });
|
|
177
|
+
for (const fileName of readdirSync(subSrc)) {
|
|
178
|
+
const srcFile = join(subSrc, fileName);
|
|
179
|
+
if (!statSync(srcFile).isFile())
|
|
180
|
+
continue;
|
|
181
|
+
const destFile = join(subDest, fileName);
|
|
182
|
+
const relPath = `${relSubpath}/${subName}/${fileName}`;
|
|
183
|
+
if (existsSync(destFile) && !force) {
|
|
184
|
+
console.log(`Skipped ${relPath} (already exists — use --force to overwrite)`);
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
const alreadyExisted = existsSync(destFile);
|
|
188
|
+
writeFileSync(destFile, readFileSync(srcFile, "utf-8"), "utf-8");
|
|
189
|
+
console.log(`${alreadyExisted ? "Updated" : "Created"} ${relPath}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/** Pull `<filename>.mjs` out of a hook command string (e.g.
|
|
194
|
+
* `node "$CLAUDE_PROJECT_DIR/.claude/hooks/foo.mjs"` → `foo.mjs`).
|
|
195
|
+
* Used to dedupe DKK hooks across re-runs and merges. */
|
|
196
|
+
export function extractHookBasename(cmd) {
|
|
197
|
+
if (typeof cmd !== "string")
|
|
198
|
+
return null;
|
|
199
|
+
const match = cmd.match(/\.claude\/hooks\/([\w.-]+\.mjs)/);
|
|
200
|
+
return match ? match[1] : null;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Additive merge of the DKK template into an existing Claude settings file.
|
|
204
|
+
*
|
|
205
|
+
* - `$schema` is set only when absent.
|
|
206
|
+
* - `permissions.allow` gains any DKK entries not already present (string-equal dedup).
|
|
207
|
+
* - For each hook event, a template entry is appended only when no existing
|
|
208
|
+
* entry under that event already references the same hook script basename
|
|
209
|
+
* (so users can rename `matcher` or wrap the command and we still recognise
|
|
210
|
+
* it as the same DKK hook on subsequent runs).
|
|
211
|
+
*
|
|
212
|
+
* Never removes or rewrites existing entries — user customisations survive.
|
|
213
|
+
*/
|
|
214
|
+
export function mergeClaudeSettings(existing, template) {
|
|
215
|
+
const changes = [];
|
|
216
|
+
const merged = JSON.parse(JSON.stringify(existing));
|
|
217
|
+
if (!merged.$schema && template.$schema) {
|
|
218
|
+
merged.$schema = template.$schema;
|
|
219
|
+
changes.push("$schema");
|
|
220
|
+
}
|
|
221
|
+
const templateAllow = template.permissions?.allow ?? [];
|
|
222
|
+
if (templateAllow.length > 0) {
|
|
223
|
+
if (!merged.permissions)
|
|
224
|
+
merged.permissions = {};
|
|
225
|
+
if (!Array.isArray(merged.permissions.allow))
|
|
226
|
+
merged.permissions.allow = [];
|
|
227
|
+
for (const entry of templateAllow) {
|
|
228
|
+
if (!merged.permissions.allow.includes(entry)) {
|
|
229
|
+
merged.permissions.allow.push(entry);
|
|
230
|
+
changes.push(`permissions.allow: ${entry}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (template.hooks) {
|
|
235
|
+
if (!merged.hooks)
|
|
236
|
+
merged.hooks = {};
|
|
237
|
+
for (const [event, templateEntries] of Object.entries(template.hooks)) {
|
|
238
|
+
if (!Array.isArray(merged.hooks[event]))
|
|
239
|
+
merged.hooks[event] = [];
|
|
240
|
+
const existingBasenames = new Set();
|
|
241
|
+
for (const entry of merged.hooks[event]) {
|
|
242
|
+
for (const h of entry.hooks ?? []) {
|
|
243
|
+
const b = extractHookBasename(h.command);
|
|
244
|
+
if (b)
|
|
245
|
+
existingBasenames.add(b);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
for (const templateEntry of templateEntries) {
|
|
249
|
+
const templateBasenames = (templateEntry.hooks ?? [])
|
|
250
|
+
.map((h) => extractHookBasename(h.command))
|
|
251
|
+
.filter((b) => b !== null);
|
|
252
|
+
if (templateBasenames.length === 0)
|
|
253
|
+
continue;
|
|
254
|
+
if (templateBasenames.every((b) => existingBasenames.has(b)))
|
|
255
|
+
continue;
|
|
256
|
+
merged.hooks[event].push(templateEntry);
|
|
257
|
+
for (const b of templateBasenames)
|
|
258
|
+
existingBasenames.add(b);
|
|
259
|
+
changes.push(`hooks.${event}: ${templateBasenames.join(", ")}`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return { merged, changes };
|
|
264
|
+
}
|
|
265
|
+
export function installClaudeConfig(root, force, opts = {}) {
|
|
266
|
+
const srcDir = packageClaudeDir();
|
|
267
|
+
const destDir = join(root, ".claude");
|
|
268
|
+
if (!existsSync(srcDir)) {
|
|
269
|
+
console.warn(`Warning: DKK package Claude template not found at ${srcDir}`);
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
mkdirSync(destDir, { recursive: true });
|
|
273
|
+
// 1. settings.json — additive merge by default, full overwrite with --force.
|
|
274
|
+
// `skipSettings` lets callers (notably `dkk update`) handle settings
|
|
275
|
+
// via the dedicated prune+merge path instead.
|
|
276
|
+
const settingsSrc = join(srcDir, "settings.json");
|
|
277
|
+
const settingsDest = join(destDir, "settings.json");
|
|
278
|
+
if (!opts.skipSettings && existsSync(settingsSrc)) {
|
|
279
|
+
const templateRaw = readFileSync(settingsSrc, "utf-8");
|
|
280
|
+
if (!existsSync(settingsDest)) {
|
|
281
|
+
writeFileSync(settingsDest, templateRaw, "utf-8");
|
|
282
|
+
console.log(`Created .claude/settings.json`);
|
|
283
|
+
}
|
|
284
|
+
else if (force) {
|
|
285
|
+
writeFileSync(settingsDest, templateRaw, "utf-8");
|
|
286
|
+
console.log(`Updated .claude/settings.json (overwritten with --force)`);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
const existingRaw = readFileSync(settingsDest, "utf-8");
|
|
290
|
+
try {
|
|
291
|
+
const existing = JSON.parse(existingRaw);
|
|
292
|
+
const template = JSON.parse(templateRaw);
|
|
293
|
+
const { merged, changes } = mergeClaudeSettings(existing, template);
|
|
294
|
+
if (changes.length === 0) {
|
|
295
|
+
console.log(`Skipped .claude/settings.json (DKK config already present)`);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
writeFileSync(settingsDest, JSON.stringify(merged, null, 2) + "\n", "utf-8");
|
|
299
|
+
const noun = changes.length === 1 ? "entry" : "entries";
|
|
300
|
+
console.log(`Merged .claude/settings.json (added ${changes.length} ${noun}):`);
|
|
301
|
+
for (const change of changes)
|
|
302
|
+
console.log(` + ${change}`);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
catch (err) {
|
|
306
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
307
|
+
console.warn(`Warning: could not merge .claude/settings.json (${msg}).`);
|
|
308
|
+
console.warn(`Merge the following into .claude/settings.json manually, or re-run with --force to overwrite:`);
|
|
309
|
+
console.warn("");
|
|
310
|
+
console.warn(templateRaw);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
// 2. hooks/ (flat, executable)
|
|
315
|
+
copyFlatDir({
|
|
316
|
+
srcDir: join(srcDir, "hooks"),
|
|
317
|
+
destDir: join(destDir, "hooks"),
|
|
318
|
+
relSubpath: ".claude/hooks",
|
|
319
|
+
force,
|
|
320
|
+
executable: true,
|
|
321
|
+
});
|
|
322
|
+
// 3. skills/<skill>/SKILL.md (nested)
|
|
323
|
+
copyNestedDir({
|
|
324
|
+
srcDir: join(srcDir, "skills"),
|
|
325
|
+
destDir: join(destDir, "skills"),
|
|
326
|
+
relSubpath: ".claude/skills",
|
|
327
|
+
force,
|
|
328
|
+
});
|
|
329
|
+
// 4. agents/<agent>.md (flat)
|
|
330
|
+
copyFlatDir({
|
|
331
|
+
srcDir: join(srcDir, "agents"),
|
|
332
|
+
destDir: join(destDir, "agents"),
|
|
333
|
+
relSubpath: ".claude/agents",
|
|
334
|
+
force,
|
|
335
|
+
});
|
|
336
|
+
// 5. commands/<command>.md (flat)
|
|
337
|
+
copyFlatDir({
|
|
338
|
+
srcDir: join(srcDir, "commands"),
|
|
339
|
+
destDir: join(destDir, "commands"),
|
|
340
|
+
relSubpath: ".claude/commands",
|
|
341
|
+
force,
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Create or refresh the DKK section in `AGENTS.md` at the repo root.
|
|
346
|
+
*
|
|
347
|
+
* Three outcomes, mirrored in the returned status:
|
|
348
|
+
* - `created`: no `AGENTS.md` existed; one was written with a default header.
|
|
349
|
+
* - `updated`: file existed and contained the delimited DKK section; the
|
|
350
|
+
* section was replaced in place.
|
|
351
|
+
* - `appended`: file existed without DKK markers; the section was appended.
|
|
352
|
+
*
|
|
353
|
+
* Used by both `dkk init` and `dkk update`.
|
|
354
|
+
*/
|
|
355
|
+
export function refreshAgentsMd(root) {
|
|
356
|
+
const agentsPath = join(root, "AGENTS.md");
|
|
357
|
+
const section = delimitedSection();
|
|
358
|
+
if (!existsSync(agentsPath)) {
|
|
359
|
+
writeFileSync(agentsPath, `# Agent Instructions\n\n${section}`, "utf-8");
|
|
360
|
+
return "created";
|
|
361
|
+
}
|
|
362
|
+
const existing = readFileSync(agentsPath, "utf-8");
|
|
363
|
+
const startIdx = existing.indexOf(START_MARKER);
|
|
364
|
+
const endIdx = existing.indexOf(END_MARKER);
|
|
365
|
+
if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {
|
|
366
|
+
const markerEnd = endIdx + END_MARKER.length;
|
|
367
|
+
const before = existing.slice(0, startIdx);
|
|
368
|
+
const after = existing.slice(existing[markerEnd] === "\n" ? markerEnd + 1 : markerEnd);
|
|
369
|
+
writeFileSync(agentsPath, `${before}${section}${after}`, "utf-8");
|
|
370
|
+
return "updated";
|
|
371
|
+
}
|
|
372
|
+
const separator = existing.endsWith("\n") ? "\n" : "\n\n";
|
|
373
|
+
writeFileSync(agentsPath, `${existing}${separator}${section}`, "utf-8");
|
|
374
|
+
return "appended";
|
|
375
|
+
}
|
|
376
|
+
function detectDomainState(root) {
|
|
377
|
+
if (!existsSync(domainDir(root)))
|
|
378
|
+
return "missing";
|
|
379
|
+
try {
|
|
380
|
+
const model = loadDomainModel({ root });
|
|
381
|
+
if (model.contexts.size === 0 && model.actors.length === 0 && model.adrs.size === 0) {
|
|
382
|
+
return "missing";
|
|
383
|
+
}
|
|
384
|
+
if (model.contexts.size === 1 && model.contexts.has("sample")) {
|
|
385
|
+
return "sample-only";
|
|
386
|
+
}
|
|
387
|
+
return "ready";
|
|
388
|
+
}
|
|
389
|
+
catch {
|
|
390
|
+
return "broken";
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Print a "Next steps" block tuned to what the repo currently looks like.
|
|
395
|
+
* Called at the end of `dkk init` so users always get an actionable nudge
|
|
396
|
+
* regardless of whether they just ran init for the first time or are
|
|
397
|
+
* refreshing AGENTS.md on a populated model.
|
|
398
|
+
*/
|
|
399
|
+
function printNextSteps(root) {
|
|
400
|
+
const state = detectDomainState(root);
|
|
401
|
+
console.log("");
|
|
402
|
+
console.log("Next steps:");
|
|
403
|
+
switch (state) {
|
|
404
|
+
case "missing":
|
|
405
|
+
console.log(" 1. Scaffold the domain: dkk new domain");
|
|
406
|
+
console.log(" 2. Create your first context: dkk new context <name>");
|
|
407
|
+
console.log(" 3. Add domain items: dkk add <type> <name> --context <ctx>");
|
|
408
|
+
console.log(" 4. Validate + render docs: dkk render");
|
|
409
|
+
break;
|
|
410
|
+
case "sample-only":
|
|
411
|
+
console.log(" Your domain only has the `sample` scaffold. Replace it with real");
|
|
412
|
+
console.log(" bounded contexts that match your business (e.g. billing, inventory):");
|
|
413
|
+
console.log(" dkk new context <name>");
|
|
414
|
+
console.log(" dkk add <type> <name> --context <ctx>");
|
|
415
|
+
console.log(" dkk rm sample.SampleCreated # (and the rest, once replacements exist)");
|
|
416
|
+
break;
|
|
417
|
+
case "ready":
|
|
418
|
+
console.log(" You're set. Common daily commands:");
|
|
419
|
+
console.log(" dkk search \"<query>\" # find items");
|
|
420
|
+
console.log(" dkk add <type> <name> --context <ctx>");
|
|
421
|
+
console.log(" dkk render # after changes");
|
|
422
|
+
console.log(" dkk prime # full AI-agent context");
|
|
423
|
+
break;
|
|
424
|
+
case "broken":
|
|
425
|
+
console.log(" `.dkk/domain/` exists but could not be loaded. Run:");
|
|
426
|
+
console.log(" dkk validate # see what's wrong");
|
|
427
|
+
break;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
121
430
|
/** Register the `init` subcommand. */
|
|
122
431
|
export function registerInit(program) {
|
|
123
432
|
program
|
|
124
433
|
.command("init")
|
|
125
|
-
.description("Create or update AGENTS.md with DKK onboarding section")
|
|
434
|
+
.description("Create or update AGENTS.md with DKK onboarding section + print next-step guidance")
|
|
126
435
|
.option("--skills", "Also install DKK skill files into .github/skills/")
|
|
127
|
-
.option("--
|
|
436
|
+
.option("--claude", "Also install Claude Code config (.claude/ settings, hooks, skills, agents, commands)")
|
|
437
|
+
.option("--force", "Overwrite existing skill or Claude files (applies with --skills or --claude)")
|
|
128
438
|
.option("-r, --root <path>", "Override repository root")
|
|
129
439
|
.action((opts) => {
|
|
130
440
|
const root = repoRoot(opts.root);
|
|
131
|
-
|
|
132
|
-
const
|
|
133
|
-
if (
|
|
134
|
-
// Create new file with the DKK section
|
|
135
|
-
writeFileSync(agentsPath, `# Agent Instructions\n\n${section}`, "utf-8");
|
|
441
|
+
// AGENTS.md — create, refresh in place, or append the DKK section.
|
|
442
|
+
const status = refreshAgentsMd(root);
|
|
443
|
+
if (status === "created")
|
|
136
444
|
console.log(`Created AGENTS.md`);
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
const endIdx = existing.indexOf(END_MARKER);
|
|
142
|
-
if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {
|
|
143
|
-
// Replace existing section between markers (include trailing newline if present)
|
|
144
|
-
const markerEnd = endIdx + END_MARKER.length;
|
|
145
|
-
const before = existing.slice(0, startIdx);
|
|
146
|
-
const after = existing.slice(existing[markerEnd] === "\n" ? markerEnd + 1 : markerEnd);
|
|
147
|
-
writeFileSync(agentsPath, `${before}${section}${after}`, "utf-8");
|
|
148
|
-
console.log(`Updated AGENTS.md (DKK section refreshed)`);
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
// Append section at the end
|
|
152
|
-
const separator = existing.endsWith("\n") ? "\n" : "\n\n";
|
|
153
|
-
writeFileSync(agentsPath, `${existing}${separator}${section}`, "utf-8");
|
|
154
|
-
console.log(`Appended DKK section to AGENTS.md`);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
445
|
+
else if (status === "updated")
|
|
446
|
+
console.log(`Updated AGENTS.md (DKK section refreshed)`);
|
|
447
|
+
else
|
|
448
|
+
console.log(`Appended DKK section to AGENTS.md`);
|
|
157
449
|
if (opts.skills) {
|
|
158
450
|
installSkills(root, opts.force ?? false);
|
|
159
451
|
}
|
|
452
|
+
if (opts.claude) {
|
|
453
|
+
installClaudeConfig(root, opts.force ?? false);
|
|
454
|
+
}
|
|
455
|
+
printNextSteps(root);
|
|
160
456
|
});
|
|
161
457
|
}
|
|
162
458
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/features/agent/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/features/agent/commands/init.ts"],"names":[],"mappings":"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"}
|