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.
Files changed (210) hide show
  1. package/README.md +4 -0
  2. package/dist/cli.js +24 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/features/agent/commands/init.d.ts +90 -1
  5. package/dist/features/agent/commands/init.d.ts.map +1 -1
  6. package/dist/features/agent/commands/init.js +328 -32
  7. package/dist/features/agent/commands/init.js.map +1 -1
  8. package/dist/features/agent/commands/prime.d.ts +11 -0
  9. package/dist/features/agent/commands/prime.d.ts.map +1 -1
  10. package/dist/features/agent/commands/prime.js +105 -8
  11. package/dist/features/agent/commands/prime.js.map +1 -1
  12. package/dist/features/agent/commands/update.d.ts +27 -0
  13. package/dist/features/agent/commands/update.d.ts.map +1 -0
  14. package/dist/features/agent/commands/update.js +316 -0
  15. package/dist/features/agent/commands/update.js.map +1 -0
  16. package/dist/features/agent/dkk-artifacts.d.ts +76 -0
  17. package/dist/features/agent/dkk-artifacts.d.ts.map +1 -0
  18. package/dist/features/agent/dkk-artifacts.js +328 -0
  19. package/dist/features/agent/dkk-artifacts.js.map +1 -0
  20. package/dist/features/agent/install-mode.d.ts +34 -0
  21. package/dist/features/agent/install-mode.d.ts.map +1 -0
  22. package/dist/features/agent/install-mode.js +78 -0
  23. package/dist/features/agent/install-mode.js.map +1 -0
  24. package/dist/features/agent/mcp-register.d.ts +20 -0
  25. package/dist/features/agent/mcp-register.d.ts.map +1 -0
  26. package/dist/features/agent/mcp-register.js +116 -0
  27. package/dist/features/agent/mcp-register.js.map +1 -0
  28. package/dist/features/agent/settings-prune.d.ts +29 -0
  29. package/dist/features/agent/settings-prune.d.ts.map +1 -0
  30. package/dist/features/agent/settings-prune.js +70 -0
  31. package/dist/features/agent/settings-prune.js.map +1 -0
  32. package/dist/features/agent/tests/settings-prune.test.d.ts +2 -0
  33. package/dist/features/agent/tests/settings-prune.test.d.ts.map +1 -0
  34. package/dist/features/agent/tests/settings-prune.test.js +118 -0
  35. package/dist/features/agent/tests/settings-prune.test.js.map +1 -0
  36. package/dist/features/federation/commands/consumers.d.ts +40 -0
  37. package/dist/features/federation/commands/consumers.d.ts.map +1 -0
  38. package/dist/features/federation/commands/consumers.js +126 -0
  39. package/dist/features/federation/commands/consumers.js.map +1 -0
  40. package/dist/features/federation/commands/peers-add.d.ts +14 -0
  41. package/dist/features/federation/commands/peers-add.d.ts.map +1 -0
  42. package/dist/features/federation/commands/peers-add.js +79 -0
  43. package/dist/features/federation/commands/peers-add.js.map +1 -0
  44. package/dist/features/federation/commands/peers-list.d.ts +8 -0
  45. package/dist/features/federation/commands/peers-list.d.ts.map +1 -0
  46. package/dist/features/federation/commands/peers-list.js +51 -0
  47. package/dist/features/federation/commands/peers-list.js.map +1 -0
  48. package/dist/features/federation/commands/peers-status.d.ts +8 -0
  49. package/dist/features/federation/commands/peers-status.d.ts.map +1 -0
  50. package/dist/features/federation/commands/peers-status.js +78 -0
  51. package/dist/features/federation/commands/peers-status.js.map +1 -0
  52. package/dist/features/federation/commands/pull.d.ts +18 -0
  53. package/dist/features/federation/commands/pull.d.ts.map +1 -0
  54. package/dist/features/federation/commands/pull.js +153 -0
  55. package/dist/features/federation/commands/pull.js.map +1 -0
  56. package/dist/features/federation/git-fetcher.d.ts +45 -0
  57. package/dist/features/federation/git-fetcher.d.ts.map +1 -0
  58. package/dist/features/federation/git-fetcher.js +70 -0
  59. package/dist/features/federation/git-fetcher.js.map +1 -0
  60. package/dist/features/federation/loader.d.ts +60 -0
  61. package/dist/features/federation/loader.d.ts.map +1 -0
  62. package/dist/features/federation/loader.js +193 -0
  63. package/dist/features/federation/loader.js.map +1 -0
  64. package/dist/features/federation/lock.d.ts +12 -0
  65. package/dist/features/federation/lock.d.ts.map +1 -0
  66. package/dist/features/federation/lock.js +48 -0
  67. package/dist/features/federation/lock.js.map +1 -0
  68. package/dist/features/federation/tests/git-fetcher.test.d.ts +2 -0
  69. package/dist/features/federation/tests/git-fetcher.test.d.ts.map +1 -0
  70. package/dist/features/federation/tests/git-fetcher.test.js +167 -0
  71. package/dist/features/federation/tests/git-fetcher.test.js.map +1 -0
  72. package/dist/features/federation/tests/loader.test.d.ts +2 -0
  73. package/dist/features/federation/tests/loader.test.d.ts.map +1 -0
  74. package/dist/features/federation/tests/loader.test.js +144 -0
  75. package/dist/features/federation/tests/loader.test.js.map +1 -0
  76. package/dist/features/federation/tests/phase5.test.d.ts +2 -0
  77. package/dist/features/federation/tests/phase5.test.d.ts.map +1 -0
  78. package/dist/features/federation/tests/phase5.test.js +137 -0
  79. package/dist/features/federation/tests/phase5.test.js.map +1 -0
  80. package/dist/features/federation/tests/schema-load.test.d.ts +2 -0
  81. package/dist/features/federation/tests/schema-load.test.d.ts.map +1 -0
  82. package/dist/features/federation/tests/schema-load.test.js +97 -0
  83. package/dist/features/federation/tests/schema-load.test.js.map +1 -0
  84. package/dist/features/federation/tests/validator.test.d.ts +2 -0
  85. package/dist/features/federation/tests/validator.test.d.ts.map +1 -0
  86. package/dist/features/federation/tests/validator.test.js +319 -0
  87. package/dist/features/federation/tests/validator.test.js.map +1 -0
  88. package/dist/features/mcp/commands/serve.d.ts +10 -0
  89. package/dist/features/mcp/commands/serve.d.ts.map +1 -0
  90. package/dist/features/mcp/commands/serve.js +12 -0
  91. package/dist/features/mcp/commands/serve.js.map +1 -0
  92. package/dist/features/mcp/server.d.ts +15 -0
  93. package/dist/features/mcp/server.d.ts.map +1 -0
  94. package/dist/features/mcp/server.js +438 -0
  95. package/dist/features/mcp/server.js.map +1 -0
  96. package/dist/features/pipeline/commands/validate.d.ts.map +1 -1
  97. package/dist/features/pipeline/commands/validate.js +7 -0
  98. package/dist/features/pipeline/commands/validate.js.map +1 -1
  99. package/dist/features/pipeline/indexer.d.ts +28 -2
  100. package/dist/features/pipeline/indexer.d.ts.map +1 -1
  101. package/dist/features/pipeline/indexer.js +82 -27
  102. package/dist/features/pipeline/indexer.js.map +1 -1
  103. package/dist/features/pipeline/validator.d.ts +10 -0
  104. package/dist/features/pipeline/validator.d.ts.map +1 -1
  105. package/dist/features/pipeline/validator.js +274 -27
  106. package/dist/features/pipeline/validator.js.map +1 -1
  107. package/dist/features/query/commands/list.d.ts +10 -0
  108. package/dist/features/query/commands/list.d.ts.map +1 -1
  109. package/dist/features/query/commands/list.js +1 -1
  110. package/dist/features/query/commands/list.js.map +1 -1
  111. package/dist/features/query/commands/locate.d.ts +1 -0
  112. package/dist/features/query/commands/locate.d.ts.map +1 -1
  113. package/dist/features/query/commands/locate.js +1 -1
  114. package/dist/features/query/commands/locate.js.map +1 -1
  115. package/dist/features/query/commands/search.d.ts.map +1 -1
  116. package/dist/features/query/commands/search.js +2 -0
  117. package/dist/features/query/commands/search.js.map +1 -1
  118. package/dist/features/query/commands/show.d.ts +15 -0
  119. package/dist/features/query/commands/show.d.ts.map +1 -1
  120. package/dist/features/query/commands/show.js +116 -58
  121. package/dist/features/query/commands/show.js.map +1 -1
  122. package/dist/features/query/commands/story.d.ts +70 -0
  123. package/dist/features/query/commands/story.d.ts.map +1 -1
  124. package/dist/features/query/commands/story.js +2 -2
  125. package/dist/features/query/commands/story.js.map +1 -1
  126. package/dist/features/query/commands/summary.d.ts +3 -0
  127. package/dist/features/query/commands/summary.d.ts.map +1 -1
  128. package/dist/features/query/commands/summary.js +1 -1
  129. package/dist/features/query/commands/summary.js.map +1 -1
  130. package/dist/features/query/searcher.d.ts +18 -1
  131. package/dist/features/query/searcher.d.ts.map +1 -1
  132. package/dist/features/query/searcher.js +11 -2
  133. package/dist/features/query/searcher.js.map +1 -1
  134. package/dist/features/scaffold/commands/new-domain.d.ts +22 -0
  135. package/dist/features/scaffold/commands/new-domain.d.ts.map +1 -1
  136. package/dist/features/scaffold/commands/new-domain.js +44 -28
  137. package/dist/features/scaffold/commands/new-domain.js.map +1 -1
  138. package/dist/features/scaffold/commands/service-init.d.ts +12 -0
  139. package/dist/features/scaffold/commands/service-init.d.ts.map +1 -0
  140. package/dist/features/scaffold/commands/service-init.js +69 -0
  141. package/dist/features/scaffold/commands/service-init.js.map +1 -0
  142. package/dist/shared/graph.d.ts +8 -0
  143. package/dist/shared/graph.d.ts.map +1 -1
  144. package/dist/shared/graph.js +180 -112
  145. package/dist/shared/graph.js.map +1 -1
  146. package/dist/shared/index.d.ts +4 -1
  147. package/dist/shared/index.d.ts.map +1 -1
  148. package/dist/shared/index.js +6 -1
  149. package/dist/shared/index.js.map +1 -1
  150. package/dist/shared/loader.d.ts +22 -0
  151. package/dist/shared/loader.d.ts.map +1 -1
  152. package/dist/shared/loader.js +31 -1
  153. package/dist/shared/loader.js.map +1 -1
  154. package/dist/shared/paths.d.ts +59 -7
  155. package/dist/shared/paths.d.ts.map +1 -1
  156. package/dist/shared/paths.js +93 -11
  157. package/dist/shared/paths.js.map +1 -1
  158. package/dist/shared/refs.d.ts +96 -0
  159. package/dist/shared/refs.d.ts.map +1 -0
  160. package/dist/shared/refs.js +182 -0
  161. package/dist/shared/refs.js.map +1 -0
  162. package/dist/shared/service-id.d.ts +11 -0
  163. package/dist/shared/service-id.d.ts.map +1 -0
  164. package/dist/shared/service-id.js +64 -0
  165. package/dist/shared/service-id.js.map +1 -0
  166. package/dist/shared/tests/paths.test.d.ts +2 -0
  167. package/dist/shared/tests/paths.test.d.ts.map +1 -0
  168. package/dist/shared/tests/paths.test.js +111 -0
  169. package/dist/shared/tests/paths.test.js.map +1 -0
  170. package/dist/shared/tests/refs.test.d.ts +2 -0
  171. package/dist/shared/tests/refs.test.d.ts.map +1 -0
  172. package/dist/shared/tests/refs.test.js +104 -0
  173. package/dist/shared/tests/refs.test.js.map +1 -0
  174. package/dist/shared/types/domain.d.ts +14 -0
  175. package/dist/shared/types/domain.d.ts.map +1 -1
  176. package/dist/shared/types/federation.d.ts +60 -0
  177. package/dist/shared/types/federation.d.ts.map +1 -0
  178. package/dist/shared/types/federation.js +12 -0
  179. package/dist/shared/types/federation.js.map +1 -0
  180. package/dist/version.d.ts +4 -0
  181. package/dist/version.d.ts.map +1 -0
  182. package/dist/version.js +15 -0
  183. package/dist/version.js.map +1 -0
  184. package/package.json +8 -5
  185. package/tools/dkk/claude/agents/dkk-domain-reviewer.md +69 -0
  186. package/tools/dkk/claude/commands/dkk-adr.md +11 -0
  187. package/tools/dkk/claude/commands/dkk-impact.md +34 -0
  188. package/tools/dkk/claude/commands/dkk-implement.md +12 -0
  189. package/tools/dkk/claude/commands/dkk-prime.md +6 -0
  190. package/tools/dkk/claude/commands/dkk-review.md +12 -0
  191. package/tools/dkk/claude/commands/dkk-story.md +12 -0
  192. package/tools/dkk/claude/hooks/post-edit-validate.mjs +68 -0
  193. package/tools/dkk/claude/hooks/pre-edit-block-generated.mjs +39 -0
  194. package/tools/dkk/claude/hooks/session-start-prime.mjs +20 -0
  195. package/tools/dkk/claude/hooks/stop-validate.mjs +67 -0
  196. package/tools/dkk/claude/settings.json +62 -0
  197. package/tools/dkk/claude/skills/dkk-adr-author/SKILL.md +54 -0
  198. package/tools/dkk/claude/skills/dkk-flow-implementer/SKILL.md +51 -0
  199. package/tools/dkk/claude/skills/dkk-story-analyst/SKILL.md +108 -0
  200. package/tools/dkk/schema/actors.schema.json +1 -1
  201. package/tools/dkk/schema/adr-frontmatter.schema.json +4 -4
  202. package/tools/dkk/schema/aggregate.schema.json +1 -1
  203. package/tools/dkk/schema/command.schema.json +1 -1
  204. package/tools/dkk/schema/event.schema.json +1 -1
  205. package/tools/dkk/schema/federation.schema.json +71 -0
  206. package/tools/dkk/schema/glossary.schema.json +1 -1
  207. package/tools/dkk/schema/index.schema.json +2 -2
  208. package/tools/dkk/schema/policy.schema.json +1 -1
  209. package/tools/dkk/schema/read-model.schema.json +1 -1
  210. 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("0.1.0")
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":"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"}
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;AAmIhD,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAwC/C"}
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("--force", "Overwrite existing skill files (only applies with --skills)")
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
- const agentsPath = join(root, "AGENTS.md");
132
- const section = delimitedSection();
133
- if (!existsSync(agentsPath)) {
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
- else {
139
- const existing = readFileSync(agentsPath, "utf-8");
140
- const startIdx = existing.indexOf(START_MARKER);
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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"}