skill-family-engineering-kit 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/CHANGELOG.zh-CN.md +43 -0
  3. package/NOTICE +10 -0
  4. package/README.md +160 -55
  5. package/README.zh-CN.md +210 -0
  6. package/candidate/index.mjs +4 -0
  7. package/candidate/profile-bundle.mjs +1150 -0
  8. package/candidate/projection-bundle-cli.mjs +64 -0
  9. package/candidate/skill-naming-cli.mjs +59 -0
  10. package/candidate/skill-naming-policy.json +46 -0
  11. package/candidate/skill-naming.mjs +280 -0
  12. package/docs/404.html +1434 -408
  13. package/docs/agents/architecture-routing/index.html +1944 -0
  14. package/docs/agents/capability-catalog.en.json +1564 -0
  15. package/docs/agents/capability-catalog.json +935 -0
  16. package/docs/agents/capability-catalog.schema.json +179 -0
  17. package/docs/agents/capability-catalog.zh-CN.json +1564 -0
  18. package/docs/agents/index.html +1914 -0
  19. package/docs/architecture/index.html +1706 -497
  20. package/docs/assets/javascripts/lunr/tinyseg.js +2 -2
  21. package/docs/assets/javascripts/lunr/wordcut.js +37 -37
  22. package/docs/en/agents/architecture-routing/index.html +1944 -0
  23. package/docs/en/agents/index.html +1925 -0
  24. package/docs/en/architecture/index.html +2187 -0
  25. package/docs/en/examples-and-fixtures/index.html +1888 -0
  26. package/docs/en/help/index.html +2035 -0
  27. package/docs/en/index.html +1895 -0
  28. package/docs/en/licensing/index.html +1917 -0
  29. package/docs/en/migration/index.html +2335 -0
  30. package/docs/en/quickstart/index.html +1919 -0
  31. package/docs/en/recipes/adapter-text-closure/index.html +2000 -0
  32. package/docs/en/recipes/adopt-existing-repository/index.html +1987 -0
  33. package/docs/en/recipes/deterministic-human-report/index.html +1998 -0
  34. package/docs/en/recipes/domain-schema-validation/index.html +2009 -0
  35. package/docs/en/recipes/durable-local-state/index.html +2009 -0
  36. package/docs/en/recipes/host-profile-integration/index.html +2001 -0
  37. package/docs/en/recipes/index.html +1877 -0
  38. package/docs/en/recipes/safe-filesystem-and-atomic-write/index.html +1994 -0
  39. package/docs/en/reference/api/index.html +1941 -0
  40. package/docs/en/reference/compatibility/index.html +2036 -0
  41. package/docs/en/reference/failure-and-side-effect-matrix/index.html +2216 -0
  42. package/docs/examples-and-fixtures/index.html +1871 -0
  43. package/docs/git-lifecycle/index.html +1508 -482
  44. package/docs/help/index.html +1655 -554
  45. package/docs/index.html +1479 -450
  46. package/docs/integration/audit/failure-evidence/index.html +1488 -462
  47. package/docs/integration/audit/independence/index.html +1513 -487
  48. package/docs/integration/audit/index.html +1514 -488
  49. package/docs/integration/audit/mutation-taxonomy/index.html +1548 -522
  50. package/docs/integration/audit/version-compatibility/index.html +1489 -463
  51. package/docs/licensing/index.html +1917 -0
  52. package/docs/migration/index.html +1679 -586
  53. package/docs/public/status/index.html +1542 -516
  54. package/docs/quickstart/index.html +1589 -539
  55. package/docs/recipes/adapter-text-closure/index.html +2000 -0
  56. package/docs/recipes/adopt-existing-repository/index.html +1987 -0
  57. package/docs/recipes/deterministic-human-report/index.html +1998 -0
  58. package/docs/recipes/domain-schema-validation/index.html +2009 -0
  59. package/docs/recipes/durable-local-state/index.html +2009 -0
  60. package/docs/recipes/host-profile-integration/index.html +2001 -0
  61. package/docs/recipes/index.html +1877 -0
  62. package/docs/recipes/safe-filesystem-and-atomic-write/index.html +1994 -0
  63. package/docs/reference/api/contracts/index.html +2558 -0
  64. package/docs/reference/api/engineering-kit/index.html +2577 -0
  65. package/docs/reference/api/harness/index.html +2634 -0
  66. package/docs/reference/api/index.html +1881 -0
  67. package/docs/reference/compatibility/index.html +2036 -0
  68. package/docs/reference/failure-and-side-effect-matrix/index.html +2216 -0
  69. package/docs/search/search_index.json +1 -1
  70. package/docs/setup/index.html +1494 -468
  71. package/docs/sitemap.xml +152 -0
  72. package/package.json +16 -5
  73. package/release-notes/0.2.1.yaml +23 -0
  74. package/release-notes/0.3.0.yaml +25 -0
@@ -0,0 +1,2577 @@
1
+
2
+ <!doctype html>
3
+ <html lang="zh" class="no-js">
4
+ <head>
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+
9
+ <meta name="description" content="Skill Family 生命周期公共工程基础设施父工作区">
10
+
11
+
12
+
13
+ <link rel="canonical" href="https://ifoohoo.github.io/skill-family-engineering-kit/reference/api/engineering-kit/">
14
+
15
+
16
+ <link rel="prev" href="../harness/">
17
+
18
+
19
+ <link rel="next" href="../../../examples-and-fixtures/">
20
+
21
+
22
+
23
+
24
+
25
+ <link rel="icon" href="../../../assets/images/favicon.png">
26
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
27
+
28
+
29
+
30
+ <title>中文 · Engineering Kit API - Skill Family Foundation</title>
31
+
32
+
33
+
34
+ <link rel="stylesheet" href="../../../assets/stylesheets/main.ec1eaa64.min.css">
35
+
36
+
37
+ <link rel="stylesheet" href="../../../assets/stylesheets/palette.ab4e12ef.min.css">
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+ <script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
51
+
52
+
53
+
54
+
55
+
56
+ </head>
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
67
+
68
+
69
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
70
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
71
+ <label class="md-overlay" for="__drawer"></label>
72
+ <div data-md-component="skip">
73
+
74
+
75
+ <a href="#skill-family-engineering-kit-公共-API-参考" class="md-skip">
76
+ 跳转至
77
+ </a>
78
+
79
+ </div>
80
+ <div data-md-component="announce">
81
+
82
+ </div>
83
+
84
+
85
+
86
+
87
+
88
+
89
+ <header class="md-header md-header--shadow" data-md-component="header">
90
+ <nav class="md-header__inner md-grid" aria-label="页眉">
91
+ <a href="../../.." title="Skill Family Foundation" class="md-header__button md-logo" aria-label="Skill Family Foundation" data-md-component="logo">
92
+
93
+
94
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
95
+
96
+ </a>
97
+ <label class="md-header__button md-icon" for="__drawer">
98
+
99
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
100
+ </label>
101
+ <div class="md-header__title" data-md-component="header-title">
102
+ <div class="md-header__ellipsis">
103
+ <div class="md-header__topic">
104
+ <span class="md-ellipsis">
105
+ Skill Family Foundation
106
+ </span>
107
+ </div>
108
+ <div class="md-header__topic" data-md-component="header-topic">
109
+ <span class="md-ellipsis">
110
+
111
+ 中文 · Engineering Kit API
112
+
113
+ </span>
114
+ </div>
115
+ </div>
116
+ </div>
117
+
118
+
119
+ <form class="md-header__option" data-md-component="palette">
120
+
121
+
122
+
123
+
124
+ <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="切换到深色模式" type="radio" name="__palette" id="__palette_0">
125
+
126
+ <label class="md-header__button md-icon" title="切换到深色模式" for="__palette_1" hidden>
127
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
128
+ </label>
129
+
130
+
131
+
132
+
133
+
134
+ <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="切换到浅色模式" type="radio" name="__palette" id="__palette_1">
135
+
136
+ <label class="md-header__button md-icon" title="切换到浅色模式" for="__palette_0" hidden>
137
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
138
+ </label>
139
+
140
+
141
+ </form>
142
+
143
+
144
+
145
+ <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
146
+
147
+
148
+
149
+
150
+
151
+ <label class="md-header__button md-icon" for="__search">
152
+
153
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
154
+ </label>
155
+ <div class="md-search" data-md-component="search" role="dialog">
156
+ <label class="md-search__overlay" for="__search"></label>
157
+ <div class="md-search__inner" role="search">
158
+ <form class="md-search__form" name="search">
159
+ <input type="text" class="md-search__input" name="query" aria-label="搜索" placeholder="搜索" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
160
+ <label class="md-search__icon md-icon" for="__search">
161
+
162
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
163
+
164
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
165
+ </label>
166
+ <nav class="md-search__options" aria-label="查找">
167
+
168
+ <button type="reset" class="md-search__icon md-icon" title="清空当前内容" aria-label="清空当前内容" tabindex="-1">
169
+
170
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
171
+ </button>
172
+ </nav>
173
+
174
+ </form>
175
+ <div class="md-search__output">
176
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
177
+ <div class="md-search-result" data-md-component="search-result">
178
+ <div class="md-search-result__meta">
179
+ 正在初始化搜索引擎
180
+ </div>
181
+ <ol class="md-search-result__list" role="presentation"></ol>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ </div>
186
+ </div>
187
+
188
+
189
+
190
+ </nav>
191
+
192
+ </header>
193
+
194
+ <div class="md-container" data-md-component="container">
195
+
196
+
197
+
198
+
199
+
200
+
201
+ <main class="md-main" data-md-component="main">
202
+ <div class="md-main__inner md-grid">
203
+
204
+
205
+
206
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
207
+ <div class="md-sidebar__scrollwrap">
208
+ <div class="md-sidebar__inner">
209
+
210
+
211
+
212
+
213
+ <nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
214
+ <label class="md-nav__title" for="__drawer">
215
+ <a href="../../.." title="Skill Family Foundation" class="md-nav__button md-logo" aria-label="Skill Family Foundation" data-md-component="logo">
216
+
217
+
218
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
219
+
220
+ </a>
221
+ Skill Family Foundation
222
+ </label>
223
+
224
+ <ul class="md-nav__list" data-md-scrollfix>
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+ <li class="md-nav__item">
233
+ <a href="../../.." class="md-nav__link">
234
+
235
+
236
+
237
+ <span class="md-ellipsis">
238
+
239
+
240
+ 中文 · 首页
241
+
242
+
243
+
244
+ </span>
245
+
246
+
247
+
248
+ </a>
249
+ </li>
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+ <li class="md-nav__item">
260
+ <a href="../../../setup/" class="md-nav__link">
261
+
262
+
263
+
264
+ <span class="md-ellipsis">
265
+
266
+
267
+ 中文 · 安装与环境
268
+
269
+
270
+
271
+ </span>
272
+
273
+
274
+
275
+ </a>
276
+ </li>
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+ <li class="md-nav__item">
287
+ <a href="../../../quickstart/" class="md-nav__link">
288
+
289
+
290
+
291
+ <span class="md-ellipsis">
292
+
293
+
294
+ 中文 · 快速开始
295
+
296
+
297
+
298
+ </span>
299
+
300
+
301
+
302
+ </a>
303
+ </li>
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+ <li class="md-nav__item">
314
+ <a href="../../../git-lifecycle/" class="md-nav__link">
315
+
316
+
317
+
318
+ <span class="md-ellipsis">
319
+
320
+
321
+ 中文 · Git 生命周期指南
322
+
323
+
324
+
325
+ </span>
326
+
327
+
328
+
329
+ </a>
330
+ </li>
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
+
340
+ <li class="md-nav__item">
341
+ <a href="../../../help/" class="md-nav__link">
342
+
343
+
344
+
345
+ <span class="md-ellipsis">
346
+
347
+
348
+ 中文 · 能力与诊断
349
+
350
+
351
+
352
+ </span>
353
+
354
+
355
+
356
+ </a>
357
+ </li>
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+ <li class="md-nav__item">
368
+ <a href="../../../architecture/" class="md-nav__link">
369
+
370
+
371
+
372
+ <span class="md-ellipsis">
373
+
374
+
375
+ 中文 · 架构边界
376
+
377
+
378
+
379
+ </span>
380
+
381
+
382
+
383
+ </a>
384
+ </li>
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+
394
+ <li class="md-nav__item">
395
+ <a href="../../../public/status/" class="md-nav__link">
396
+
397
+
398
+
399
+ <span class="md-ellipsis">
400
+
401
+
402
+ 中文 · 公开状态
403
+
404
+
405
+
406
+ </span>
407
+
408
+
409
+
410
+ </a>
411
+ </li>
412
+
413
+
414
+
415
+
416
+
417
+
418
+
419
+
420
+
421
+ <li class="md-nav__item">
422
+ <a href="../../../migration/" class="md-nav__link">
423
+
424
+
425
+
426
+ <span class="md-ellipsis">
427
+
428
+
429
+ 中文 · 存量采用与迁移
430
+
431
+
432
+
433
+ </span>
434
+
435
+
436
+
437
+ </a>
438
+ </li>
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+
448
+ <li class="md-nav__item">
449
+ <a href="../../../licensing/" class="md-nav__link">
450
+
451
+
452
+
453
+ <span class="md-ellipsis">
454
+
455
+
456
+ 中文 · 许可与署名
457
+
458
+
459
+
460
+ </span>
461
+
462
+
463
+
464
+ </a>
465
+ </li>
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+ <li class="md-nav__item">
476
+ <a href="../../../agents/" class="md-nav__link">
477
+
478
+
479
+
480
+ <span class="md-ellipsis">
481
+
482
+
483
+ 中文 · 智能体入口
484
+
485
+
486
+
487
+ </span>
488
+
489
+
490
+
491
+ </a>
492
+ </li>
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+
501
+
502
+ <li class="md-nav__item">
503
+ <a href="../../../agents/architecture-routing/" class="md-nav__link">
504
+
505
+
506
+
507
+ <span class="md-ellipsis">
508
+
509
+
510
+ 中文 · 架构路由
511
+
512
+
513
+
514
+ </span>
515
+
516
+
517
+
518
+ </a>
519
+ </li>
520
+
521
+
522
+
523
+
524
+
525
+
526
+
527
+
528
+
529
+ <li class="md-nav__item">
530
+ <a href="../../compatibility/" class="md-nav__link">
531
+
532
+
533
+
534
+ <span class="md-ellipsis">
535
+
536
+
537
+ 中文 · 兼容性
538
+
539
+
540
+
541
+ </span>
542
+
543
+
544
+
545
+ </a>
546
+ </li>
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+
555
+
556
+ <li class="md-nav__item">
557
+ <a href="../../failure-and-side-effect-matrix/" class="md-nav__link">
558
+
559
+
560
+
561
+ <span class="md-ellipsis">
562
+
563
+
564
+ 中文 · 失败与副作用
565
+
566
+
567
+
568
+ </span>
569
+
570
+
571
+
572
+ </a>
573
+ </li>
574
+
575
+
576
+
577
+
578
+
579
+
580
+
581
+
582
+
583
+ <li class="md-nav__item">
584
+ <a href="../" class="md-nav__link">
585
+
586
+
587
+
588
+ <span class="md-ellipsis">
589
+
590
+
591
+ 中文 · API 参考
592
+
593
+
594
+
595
+ </span>
596
+
597
+
598
+
599
+ </a>
600
+ </li>
601
+
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+ <li class="md-nav__item">
611
+ <a href="../contracts/" class="md-nav__link">
612
+
613
+
614
+
615
+ <span class="md-ellipsis">
616
+
617
+
618
+ 中文 · Contracts API
619
+
620
+
621
+
622
+ </span>
623
+
624
+
625
+
626
+ </a>
627
+ </li>
628
+
629
+
630
+
631
+
632
+
633
+
634
+
635
+
636
+
637
+ <li class="md-nav__item">
638
+ <a href="../harness/" class="md-nav__link">
639
+
640
+
641
+
642
+ <span class="md-ellipsis">
643
+
644
+
645
+ 中文 · Harness API
646
+
647
+
648
+
649
+ </span>
650
+
651
+
652
+
653
+ </a>
654
+ </li>
655
+
656
+
657
+
658
+
659
+
660
+
661
+
662
+
663
+
664
+
665
+
666
+ <li class="md-nav__item md-nav__item--active">
667
+
668
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
669
+
670
+
671
+
672
+
673
+
674
+ <label class="md-nav__link md-nav__link--active" for="__toc">
675
+
676
+
677
+
678
+ <span class="md-ellipsis">
679
+
680
+
681
+ 中文 · Engineering Kit API
682
+
683
+
684
+
685
+ </span>
686
+
687
+
688
+
689
+ <span class="md-nav__icon md-icon"></span>
690
+ </label>
691
+
692
+ <a href="./" class="md-nav__link md-nav__link--active">
693
+
694
+
695
+
696
+ <span class="md-ellipsis">
697
+
698
+
699
+ 中文 · Engineering Kit API
700
+
701
+
702
+
703
+ </span>
704
+
705
+
706
+
707
+ </a>
708
+
709
+
710
+
711
+ <nav class="md-nav md-nav--secondary" aria-label="目录">
712
+
713
+
714
+
715
+
716
+
717
+
718
+ <label class="md-nav__title" for="__toc">
719
+ <span class="md-nav__icon md-icon"></span>
720
+ 目录
721
+ </label>
722
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
723
+
724
+ <li class="md-nav__item">
725
+ <a href="#scaffold-foundationkitscaffold" class="md-nav__link">
726
+ <span class="md-ellipsis">
727
+
728
+ scaffold (foundation.kit.scaffold)
729
+
730
+ </span>
731
+ </a>
732
+
733
+ <nav class="md-nav" aria-label="scaffold (foundation.kit.scaffold)">
734
+ <ul class="md-nav__list">
735
+
736
+ <li class="md-nav__item">
737
+ <a href="#scaffoldTarget--describeSkeletonFiles--normalizeSkeletonInputs" class="md-nav__link">
738
+ <span class="md-ellipsis">
739
+
740
+ scaffoldTarget / describeSkeletonFiles / normalizeSkeletonInputs
741
+
742
+ </span>
743
+ </a>
744
+
745
+ </li>
746
+
747
+ </ul>
748
+ </nav>
749
+
750
+ </li>
751
+
752
+ <li class="md-nav__item">
753
+ <a href="#adopt-plan-foundationkitadopt-plan" class="md-nav__link">
754
+ <span class="md-ellipsis">
755
+
756
+ adopt-plan (foundation.kit.adopt-plan)
757
+
758
+ </span>
759
+ </a>
760
+
761
+ <nav class="md-nav" aria-label="adopt-plan (foundation.kit.adopt-plan)">
762
+ <ul class="md-nav__list">
763
+
764
+ <li class="md-nav__item">
765
+ <a href="#planAdoption--buildHandoffDraft--evaluateMigrationCompletion--validateException--assessLegacyExitList--findNestedRepositories" class="md-nav__link">
766
+ <span class="md-ellipsis">
767
+
768
+ planAdoption / buildHandoffDraft / evaluateMigrationCompletion / validateException / assessLegacyExitList / findNestedRepositories
769
+
770
+ </span>
771
+ </a>
772
+
773
+ </li>
774
+
775
+ </ul>
776
+ </nav>
777
+
778
+ </li>
779
+
780
+ <li class="md-nav__item">
781
+ <a href="#projection-foundationkitprojection" class="md-nav__link">
782
+ <span class="md-ellipsis">
783
+
784
+ projection (foundation.kit.projection)
785
+
786
+ </span>
787
+ </a>
788
+
789
+ <nav class="md-nav" aria-label="projection (foundation.kit.projection)">
790
+ <ul class="md-nav__list">
791
+
792
+ <li class="md-nav__item">
793
+ <a href="#runProjection--loadProjectionManifest" class="md-nav__link">
794
+ <span class="md-ellipsis">
795
+
796
+ runProjection / loadProjectionManifest
797
+
798
+ </span>
799
+ </a>
800
+
801
+ </li>
802
+
803
+ </ul>
804
+ </nav>
805
+
806
+ </li>
807
+
808
+ <li class="md-nav__item">
809
+ <a href="#check-foundationkitcheck" class="md-nav__link">
810
+ <span class="md-ellipsis">
811
+
812
+ check (foundation.kit.check)
813
+
814
+ </span>
815
+ </a>
816
+
817
+ <nav class="md-nav" aria-label="check (foundation.kit.check)">
818
+ <ul class="md-nav__list">
819
+
820
+ <li class="md-nav__item">
821
+ <a href="#runChecks--runCoreCheck--isContainedDeclaration" class="md-nav__link">
822
+ <span class="md-ellipsis">
823
+
824
+ runChecks / runCoreCheck / isContainedDeclaration
825
+
826
+ </span>
827
+ </a>
828
+
829
+ </li>
830
+
831
+ </ul>
832
+ </nav>
833
+
834
+ </li>
835
+
836
+ <li class="md-nav__item">
837
+ <a href="#report-foundationkitreport" class="md-nav__link">
838
+ <span class="md-ellipsis">
839
+
840
+ report (foundation.kit.report)
841
+
842
+ </span>
843
+ </a>
844
+
845
+ <nav class="md-nav" aria-label="report (foundation.kit.report)">
846
+ <ul class="md-nav__list">
847
+
848
+ <li class="md-nav__item">
849
+ <a href="#renderReportAction--checkReportAction" class="md-nav__link">
850
+ <span class="md-ellipsis">
851
+
852
+ renderReportAction / checkReportAction
853
+
854
+ </span>
855
+ </a>
856
+
857
+ </li>
858
+
859
+ </ul>
860
+ </nav>
861
+
862
+ </li>
863
+
864
+ <li class="md-nav__item">
865
+ <a href="#git-probe-foundationkitgit-probe" class="md-nav__link">
866
+ <span class="md-ellipsis">
867
+
868
+ git-probe (foundation.kit.git-probe)
869
+
870
+ </span>
871
+ </a>
872
+
873
+ <nav class="md-nav" aria-label="git-probe (foundation.kit.git-probe)">
874
+ <ul class="md-nav__list">
875
+
876
+ <li class="md-nav__item">
877
+ <a href="#probeGitState--probeGitFacts" class="md-nav__link">
878
+ <span class="md-ellipsis">
879
+
880
+ probeGitState / probeGitFacts
881
+
882
+ </span>
883
+ </a>
884
+
885
+ </li>
886
+
887
+ </ul>
888
+ </nav>
889
+
890
+ </li>
891
+
892
+ <li class="md-nav__item">
893
+ <a href="#host-foundationkithost" class="md-nav__link">
894
+ <span class="md-ellipsis">
895
+
896
+ host (foundation.kit.host)
897
+
898
+ </span>
899
+ </a>
900
+
901
+ <nav class="md-nav" aria-label="host (foundation.kit.host)">
902
+ <ul class="md-nav__list">
903
+
904
+ <li class="md-nav__item">
905
+ <a href="#describeHost--loadHostRegistry--probeHost--buildHostAdapter--materializeHostBuild--planHost--assertPlanConsistency--refuseHostApply--probeTrustedVersionDriver" class="md-nav__link">
906
+ <span class="md-ellipsis">
907
+
908
+ describeHost / loadHostRegistry / probeHost / buildHostAdapter / materializeHostBuild / planHost / assertPlanConsistency / refuseHostApply / probeTrustedVersionDriver
909
+
910
+ </span>
911
+ </a>
912
+
913
+ </li>
914
+
915
+ </ul>
916
+ </nav>
917
+
918
+ </li>
919
+
920
+ <li class="md-nav__item">
921
+ <a href="#licensing-foundationkitlicensing" class="md-nav__link">
922
+ <span class="md-ellipsis">
923
+
924
+ licensing (foundation.kit.licensing)
925
+
926
+ </span>
927
+ </a>
928
+
929
+ <nav class="md-nav" aria-label="licensing (foundation.kit.licensing)">
930
+ <ul class="md-nav__list">
931
+
932
+ <li class="md-nav__item">
933
+ <a href="#loadLicensingProfile--listLicensingProfiles--validateLicensingProfile--generateLicenseContent--generateNoticeContent--generateIdentityRecord--bundledProfilesRoot" class="md-nav__link">
934
+ <span class="md-ellipsis">
935
+
936
+ loadLicensingProfile / listLicensingProfiles / validateLicensingProfile / generateLicenseContent / generateNoticeContent / generateIdentityRecord / bundledProfilesRoot
937
+
938
+ </span>
939
+ </a>
940
+
941
+ </li>
942
+
943
+ </ul>
944
+ </nav>
945
+
946
+ </li>
947
+
948
+ <li class="md-nav__item">
949
+ <a href="#identity-check-foundationkitidentity-check" class="md-nav__link">
950
+ <span class="md-ellipsis">
951
+
952
+ identity-check (foundation.kit.identity-check)
953
+
954
+ </span>
955
+ </a>
956
+
957
+ <nav class="md-nav" aria-label="identity-check (foundation.kit.identity-check)">
958
+ <ul class="md-nav__list">
959
+
960
+ <li class="md-nav__item">
961
+ <a href="#loadIdentityRecord--checkIdentityDrift--validateIdentityAgainstProfile" class="md-nav__link">
962
+ <span class="md-ellipsis">
963
+
964
+ loadIdentityRecord / checkIdentityDrift / validateIdentityAgainstProfile
965
+
966
+ </span>
967
+ </a>
968
+
969
+ </li>
970
+
971
+ </ul>
972
+ </nav>
973
+
974
+ </li>
975
+
976
+ <li class="md-nav__item">
977
+ <a href="#CLI-foundationkitcli" class="md-nav__link">
978
+ <span class="md-ellipsis">
979
+
980
+ CLI (foundation.kit.cli)
981
+
982
+ </span>
983
+ </a>
984
+
985
+ <nav class="md-nav" aria-label="CLI (foundation.kit.cli)">
986
+ <ul class="md-nav__list">
987
+
988
+ <li class="md-nav__item">
989
+ <a href="#runCommand--cliMain--拒绝变更旗标" class="md-nav__link">
990
+ <span class="md-ellipsis">
991
+
992
+ runCommand / cliMain / 拒绝变更旗标
993
+
994
+ </span>
995
+ </a>
996
+
997
+ </li>
998
+
999
+ </ul>
1000
+ </nav>
1001
+
1002
+ </li>
1003
+
1004
+ <li class="md-nav__item">
1005
+ <a href="#Quickstart-Profile-v2-candidate" class="md-nav__link">
1006
+ <span class="md-ellipsis">
1007
+
1008
+ Quickstart Profile v2 candidate
1009
+
1010
+ </span>
1011
+ </a>
1012
+
1013
+ </li>
1014
+
1015
+ <li class="md-nav__item">
1016
+ <a href="#与机器事实层的互链" class="md-nav__link">
1017
+ <span class="md-ellipsis">
1018
+
1019
+ 与机器事实层的互链
1020
+
1021
+ </span>
1022
+ </a>
1023
+
1024
+ </li>
1025
+
1026
+ </ul>
1027
+
1028
+ </nav>
1029
+
1030
+ </li>
1031
+
1032
+
1033
+
1034
+
1035
+
1036
+
1037
+
1038
+
1039
+
1040
+ <li class="md-nav__item">
1041
+ <a href="../../../examples-and-fixtures/" class="md-nav__link">
1042
+
1043
+
1044
+
1045
+ <span class="md-ellipsis">
1046
+
1047
+
1048
+ 中文 · 样例与 Fixture
1049
+
1050
+
1051
+
1052
+ </span>
1053
+
1054
+
1055
+
1056
+ </a>
1057
+ </li>
1058
+
1059
+
1060
+
1061
+
1062
+
1063
+
1064
+
1065
+
1066
+
1067
+ <li class="md-nav__item">
1068
+ <a href="../../../recipes/" class="md-nav__link">
1069
+
1070
+
1071
+
1072
+ <span class="md-ellipsis">
1073
+
1074
+
1075
+ 中文 · Recipes
1076
+
1077
+
1078
+
1079
+ </span>
1080
+
1081
+
1082
+
1083
+ </a>
1084
+ </li>
1085
+
1086
+
1087
+
1088
+
1089
+
1090
+
1091
+
1092
+
1093
+
1094
+ <li class="md-nav__item">
1095
+ <a href="../../../recipes/adopt-existing-repository/" class="md-nav__link">
1096
+
1097
+
1098
+
1099
+ <span class="md-ellipsis">
1100
+
1101
+
1102
+ 中文 · 采用存量仓库
1103
+
1104
+
1105
+
1106
+ </span>
1107
+
1108
+
1109
+
1110
+ </a>
1111
+ </li>
1112
+
1113
+
1114
+
1115
+
1116
+
1117
+
1118
+
1119
+
1120
+
1121
+ <li class="md-nav__item">
1122
+ <a href="../../../recipes/safe-filesystem-and-atomic-write/" class="md-nav__link">
1123
+
1124
+
1125
+
1126
+ <span class="md-ellipsis">
1127
+
1128
+
1129
+ 中文 · 安全文件系统与原子写
1130
+
1131
+
1132
+
1133
+ </span>
1134
+
1135
+
1136
+
1137
+ </a>
1138
+ </li>
1139
+
1140
+
1141
+
1142
+
1143
+
1144
+
1145
+
1146
+
1147
+
1148
+ <li class="md-nav__item">
1149
+ <a href="../../../recipes/adapter-text-closure/" class="md-nav__link">
1150
+
1151
+
1152
+
1153
+ <span class="md-ellipsis">
1154
+
1155
+
1156
+ 中文 · Adapter 文本闭包
1157
+
1158
+
1159
+
1160
+ </span>
1161
+
1162
+
1163
+
1164
+ </a>
1165
+ </li>
1166
+
1167
+
1168
+
1169
+
1170
+
1171
+
1172
+
1173
+
1174
+
1175
+ <li class="md-nav__item">
1176
+ <a href="../../../recipes/deterministic-human-report/" class="md-nav__link">
1177
+
1178
+
1179
+
1180
+ <span class="md-ellipsis">
1181
+
1182
+
1183
+ 中文 · 确定性人类报告
1184
+
1185
+
1186
+
1187
+ </span>
1188
+
1189
+
1190
+
1191
+ </a>
1192
+ </li>
1193
+
1194
+
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+
1201
+
1202
+ <li class="md-nav__item">
1203
+ <a href="../../../recipes/durable-local-state/" class="md-nav__link">
1204
+
1205
+
1206
+
1207
+ <span class="md-ellipsis">
1208
+
1209
+
1210
+ 中文 · 持久本地状态
1211
+
1212
+
1213
+
1214
+ </span>
1215
+
1216
+
1217
+
1218
+ </a>
1219
+ </li>
1220
+
1221
+
1222
+
1223
+
1224
+
1225
+
1226
+
1227
+
1228
+
1229
+ <li class="md-nav__item">
1230
+ <a href="../../../recipes/host-profile-integration/" class="md-nav__link">
1231
+
1232
+
1233
+
1234
+ <span class="md-ellipsis">
1235
+
1236
+
1237
+ 中文 · 宿主 Profile 集成
1238
+
1239
+
1240
+
1241
+ </span>
1242
+
1243
+
1244
+
1245
+ </a>
1246
+ </li>
1247
+
1248
+
1249
+
1250
+
1251
+
1252
+
1253
+
1254
+
1255
+
1256
+ <li class="md-nav__item">
1257
+ <a href="../../../recipes/domain-schema-validation/" class="md-nav__link">
1258
+
1259
+
1260
+
1261
+ <span class="md-ellipsis">
1262
+
1263
+
1264
+ 中文 · 领域 Schema 校验
1265
+
1266
+
1267
+
1268
+ </span>
1269
+
1270
+
1271
+
1272
+ </a>
1273
+ </li>
1274
+
1275
+
1276
+
1277
+
1278
+
1279
+
1280
+
1281
+
1282
+
1283
+ <li class="md-nav__item">
1284
+ <a href="../../../en/" class="md-nav__link">
1285
+
1286
+
1287
+
1288
+ <span class="md-ellipsis">
1289
+
1290
+
1291
+ English · Home
1292
+
1293
+
1294
+
1295
+ </span>
1296
+
1297
+
1298
+
1299
+ </a>
1300
+ </li>
1301
+
1302
+
1303
+
1304
+
1305
+
1306
+
1307
+
1308
+
1309
+
1310
+ <li class="md-nav__item">
1311
+ <a href="../../../en/quickstart/" class="md-nav__link">
1312
+
1313
+
1314
+
1315
+ <span class="md-ellipsis">
1316
+
1317
+
1318
+ English · Quickstart
1319
+
1320
+
1321
+
1322
+ </span>
1323
+
1324
+
1325
+
1326
+ </a>
1327
+ </li>
1328
+
1329
+
1330
+
1331
+
1332
+
1333
+
1334
+
1335
+
1336
+
1337
+ <li class="md-nav__item">
1338
+ <a href="../../../en/help/" class="md-nav__link">
1339
+
1340
+
1341
+
1342
+ <span class="md-ellipsis">
1343
+
1344
+
1345
+ English · Capabilities and diagnostics
1346
+
1347
+
1348
+
1349
+ </span>
1350
+
1351
+
1352
+
1353
+ </a>
1354
+ </li>
1355
+
1356
+
1357
+
1358
+
1359
+
1360
+
1361
+
1362
+
1363
+
1364
+ <li class="md-nav__item">
1365
+ <a href="../../../en/architecture/" class="md-nav__link">
1366
+
1367
+
1368
+
1369
+ <span class="md-ellipsis">
1370
+
1371
+
1372
+ English · Architecture
1373
+
1374
+
1375
+
1376
+ </span>
1377
+
1378
+
1379
+
1380
+ </a>
1381
+ </li>
1382
+
1383
+
1384
+
1385
+
1386
+
1387
+
1388
+
1389
+
1390
+
1391
+ <li class="md-nav__item">
1392
+ <a href="../../../en/migration/" class="md-nav__link">
1393
+
1394
+
1395
+
1396
+ <span class="md-ellipsis">
1397
+
1398
+
1399
+ English · Migration
1400
+
1401
+
1402
+
1403
+ </span>
1404
+
1405
+
1406
+
1407
+ </a>
1408
+ </li>
1409
+
1410
+
1411
+
1412
+
1413
+
1414
+
1415
+
1416
+
1417
+
1418
+ <li class="md-nav__item">
1419
+ <a href="../../../en/licensing/" class="md-nav__link">
1420
+
1421
+
1422
+
1423
+ <span class="md-ellipsis">
1424
+
1425
+
1426
+ English · Licensing
1427
+
1428
+
1429
+
1430
+ </span>
1431
+
1432
+
1433
+
1434
+ </a>
1435
+ </li>
1436
+
1437
+
1438
+
1439
+
1440
+
1441
+
1442
+
1443
+
1444
+
1445
+ <li class="md-nav__item">
1446
+ <a href="../../../en/agents/" class="md-nav__link">
1447
+
1448
+
1449
+
1450
+ <span class="md-ellipsis">
1451
+
1452
+
1453
+ English · Agent entry
1454
+
1455
+
1456
+
1457
+ </span>
1458
+
1459
+
1460
+
1461
+ </a>
1462
+ </li>
1463
+
1464
+
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+
1471
+
1472
+ <li class="md-nav__item">
1473
+ <a href="../../../en/agents/architecture-routing/" class="md-nav__link">
1474
+
1475
+
1476
+
1477
+ <span class="md-ellipsis">
1478
+
1479
+
1480
+ English · Architecture routing
1481
+
1482
+
1483
+
1484
+ </span>
1485
+
1486
+
1487
+
1488
+ </a>
1489
+ </li>
1490
+
1491
+
1492
+
1493
+
1494
+
1495
+
1496
+
1497
+
1498
+
1499
+ <li class="md-nav__item">
1500
+ <a href="../../../en/reference/compatibility/" class="md-nav__link">
1501
+
1502
+
1503
+
1504
+ <span class="md-ellipsis">
1505
+
1506
+
1507
+ English · Compatibility
1508
+
1509
+
1510
+
1511
+ </span>
1512
+
1513
+
1514
+
1515
+ </a>
1516
+ </li>
1517
+
1518
+
1519
+
1520
+
1521
+
1522
+
1523
+
1524
+
1525
+
1526
+ <li class="md-nav__item">
1527
+ <a href="../../../en/reference/failure-and-side-effect-matrix/" class="md-nav__link">
1528
+
1529
+
1530
+
1531
+ <span class="md-ellipsis">
1532
+
1533
+
1534
+ English · Failures and side effects
1535
+
1536
+
1537
+
1538
+ </span>
1539
+
1540
+
1541
+
1542
+ </a>
1543
+ </li>
1544
+
1545
+
1546
+
1547
+
1548
+
1549
+
1550
+
1551
+
1552
+
1553
+ <li class="md-nav__item">
1554
+ <a href="../../../en/reference/api/" class="md-nav__link">
1555
+
1556
+
1557
+
1558
+ <span class="md-ellipsis">
1559
+
1560
+
1561
+ English · API reference
1562
+
1563
+
1564
+
1565
+ </span>
1566
+
1567
+
1568
+
1569
+ </a>
1570
+ </li>
1571
+
1572
+
1573
+
1574
+
1575
+
1576
+
1577
+
1578
+
1579
+
1580
+ <li class="md-nav__item">
1581
+ <a href="../../../en/examples-and-fixtures/" class="md-nav__link">
1582
+
1583
+
1584
+
1585
+ <span class="md-ellipsis">
1586
+
1587
+
1588
+ English · Examples and fixtures
1589
+
1590
+
1591
+
1592
+ </span>
1593
+
1594
+
1595
+
1596
+ </a>
1597
+ </li>
1598
+
1599
+
1600
+
1601
+
1602
+
1603
+
1604
+
1605
+
1606
+
1607
+ <li class="md-nav__item">
1608
+ <a href="../../../en/recipes/" class="md-nav__link">
1609
+
1610
+
1611
+
1612
+ <span class="md-ellipsis">
1613
+
1614
+
1615
+ English · Recipes
1616
+
1617
+
1618
+
1619
+ </span>
1620
+
1621
+
1622
+
1623
+ </a>
1624
+ </li>
1625
+
1626
+
1627
+
1628
+
1629
+
1630
+
1631
+
1632
+
1633
+
1634
+ <li class="md-nav__item">
1635
+ <a href="../../../en/recipes/adopt-existing-repository/" class="md-nav__link">
1636
+
1637
+
1638
+
1639
+ <span class="md-ellipsis">
1640
+
1641
+
1642
+ English · Adopt an existing repository
1643
+
1644
+
1645
+
1646
+ </span>
1647
+
1648
+
1649
+
1650
+ </a>
1651
+ </li>
1652
+
1653
+
1654
+
1655
+
1656
+
1657
+
1658
+
1659
+
1660
+
1661
+ <li class="md-nav__item">
1662
+ <a href="../../../en/recipes/safe-filesystem-and-atomic-write/" class="md-nav__link">
1663
+
1664
+
1665
+
1666
+ <span class="md-ellipsis">
1667
+
1668
+
1669
+ English · Safe filesystem and atomic write
1670
+
1671
+
1672
+
1673
+ </span>
1674
+
1675
+
1676
+
1677
+ </a>
1678
+ </li>
1679
+
1680
+
1681
+
1682
+
1683
+
1684
+
1685
+
1686
+
1687
+
1688
+ <li class="md-nav__item">
1689
+ <a href="../../../en/recipes/adapter-text-closure/" class="md-nav__link">
1690
+
1691
+
1692
+
1693
+ <span class="md-ellipsis">
1694
+
1695
+
1696
+ English · Adapter text closure
1697
+
1698
+
1699
+
1700
+ </span>
1701
+
1702
+
1703
+
1704
+ </a>
1705
+ </li>
1706
+
1707
+
1708
+
1709
+
1710
+
1711
+
1712
+
1713
+
1714
+
1715
+ <li class="md-nav__item">
1716
+ <a href="../../../en/recipes/deterministic-human-report/" class="md-nav__link">
1717
+
1718
+
1719
+
1720
+ <span class="md-ellipsis">
1721
+
1722
+
1723
+ English · Deterministic human report
1724
+
1725
+
1726
+
1727
+ </span>
1728
+
1729
+
1730
+
1731
+ </a>
1732
+ </li>
1733
+
1734
+
1735
+
1736
+
1737
+
1738
+
1739
+
1740
+
1741
+
1742
+ <li class="md-nav__item">
1743
+ <a href="../../../en/recipes/durable-local-state/" class="md-nav__link">
1744
+
1745
+
1746
+
1747
+ <span class="md-ellipsis">
1748
+
1749
+
1750
+ English · Durable local state
1751
+
1752
+
1753
+
1754
+ </span>
1755
+
1756
+
1757
+
1758
+ </a>
1759
+ </li>
1760
+
1761
+
1762
+
1763
+
1764
+
1765
+
1766
+
1767
+
1768
+
1769
+ <li class="md-nav__item">
1770
+ <a href="../../../en/recipes/host-profile-integration/" class="md-nav__link">
1771
+
1772
+
1773
+
1774
+ <span class="md-ellipsis">
1775
+
1776
+
1777
+ English · Host Profile integration
1778
+
1779
+
1780
+
1781
+ </span>
1782
+
1783
+
1784
+
1785
+ </a>
1786
+ </li>
1787
+
1788
+
1789
+
1790
+
1791
+
1792
+
1793
+
1794
+
1795
+
1796
+ <li class="md-nav__item">
1797
+ <a href="../../../en/recipes/domain-schema-validation/" class="md-nav__link">
1798
+
1799
+
1800
+
1801
+ <span class="md-ellipsis">
1802
+
1803
+
1804
+ English · Domain Schema validation
1805
+
1806
+
1807
+
1808
+ </span>
1809
+
1810
+
1811
+
1812
+ </a>
1813
+ </li>
1814
+
1815
+
1816
+
1817
+
1818
+
1819
+
1820
+
1821
+
1822
+
1823
+ <li class="md-nav__item">
1824
+ <a href="../../../integration/audit/" class="md-nav__link">
1825
+
1826
+
1827
+
1828
+ <span class="md-ellipsis">
1829
+
1830
+
1831
+ 审计集成 · 入口
1832
+
1833
+
1834
+
1835
+ </span>
1836
+
1837
+
1838
+
1839
+ </a>
1840
+ </li>
1841
+
1842
+
1843
+
1844
+
1845
+
1846
+
1847
+
1848
+
1849
+
1850
+ <li class="md-nav__item">
1851
+ <a href="../../../integration/audit/mutation-taxonomy/" class="md-nav__link">
1852
+
1853
+
1854
+
1855
+ <span class="md-ellipsis">
1856
+
1857
+
1858
+ 审计集成 · 变异分类学
1859
+
1860
+
1861
+
1862
+ </span>
1863
+
1864
+
1865
+
1866
+ </a>
1867
+ </li>
1868
+
1869
+
1870
+
1871
+
1872
+
1873
+
1874
+
1875
+
1876
+
1877
+ <li class="md-nav__item">
1878
+ <a href="../../../integration/audit/independence/" class="md-nav__link">
1879
+
1880
+
1881
+
1882
+ <span class="md-ellipsis">
1883
+
1884
+
1885
+ 审计集成 · 独立性证明
1886
+
1887
+
1888
+
1889
+ </span>
1890
+
1891
+
1892
+
1893
+ </a>
1894
+ </li>
1895
+
1896
+
1897
+
1898
+
1899
+
1900
+
1901
+
1902
+
1903
+
1904
+ <li class="md-nav__item">
1905
+ <a href="../../../integration/audit/version-compatibility/" class="md-nav__link">
1906
+
1907
+
1908
+
1909
+ <span class="md-ellipsis">
1910
+
1911
+
1912
+ 审计集成 · 版本兼容
1913
+
1914
+
1915
+
1916
+ </span>
1917
+
1918
+
1919
+
1920
+ </a>
1921
+ </li>
1922
+
1923
+
1924
+
1925
+
1926
+
1927
+
1928
+
1929
+
1930
+
1931
+ <li class="md-nav__item">
1932
+ <a href="../../../integration/audit/failure-evidence/" class="md-nav__link">
1933
+
1934
+
1935
+
1936
+ <span class="md-ellipsis">
1937
+
1938
+
1939
+ 审计集成 · 失败证据与 AUD 码
1940
+
1941
+
1942
+
1943
+ </span>
1944
+
1945
+
1946
+
1947
+ </a>
1948
+ </li>
1949
+
1950
+
1951
+
1952
+ </ul>
1953
+ </nav>
1954
+ </div>
1955
+ </div>
1956
+ </div>
1957
+
1958
+
1959
+
1960
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1961
+ <div class="md-sidebar__scrollwrap">
1962
+ <div class="md-sidebar__inner">
1963
+
1964
+
1965
+ <nav class="md-nav md-nav--secondary" aria-label="目录">
1966
+
1967
+
1968
+
1969
+
1970
+
1971
+
1972
+ <label class="md-nav__title" for="__toc">
1973
+ <span class="md-nav__icon md-icon"></span>
1974
+ 目录
1975
+ </label>
1976
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1977
+
1978
+ <li class="md-nav__item">
1979
+ <a href="#scaffold-foundationkitscaffold" class="md-nav__link">
1980
+ <span class="md-ellipsis">
1981
+
1982
+ scaffold (foundation.kit.scaffold)
1983
+
1984
+ </span>
1985
+ </a>
1986
+
1987
+ <nav class="md-nav" aria-label="scaffold (foundation.kit.scaffold)">
1988
+ <ul class="md-nav__list">
1989
+
1990
+ <li class="md-nav__item">
1991
+ <a href="#scaffoldTarget--describeSkeletonFiles--normalizeSkeletonInputs" class="md-nav__link">
1992
+ <span class="md-ellipsis">
1993
+
1994
+ scaffoldTarget / describeSkeletonFiles / normalizeSkeletonInputs
1995
+
1996
+ </span>
1997
+ </a>
1998
+
1999
+ </li>
2000
+
2001
+ </ul>
2002
+ </nav>
2003
+
2004
+ </li>
2005
+
2006
+ <li class="md-nav__item">
2007
+ <a href="#adopt-plan-foundationkitadopt-plan" class="md-nav__link">
2008
+ <span class="md-ellipsis">
2009
+
2010
+ adopt-plan (foundation.kit.adopt-plan)
2011
+
2012
+ </span>
2013
+ </a>
2014
+
2015
+ <nav class="md-nav" aria-label="adopt-plan (foundation.kit.adopt-plan)">
2016
+ <ul class="md-nav__list">
2017
+
2018
+ <li class="md-nav__item">
2019
+ <a href="#planAdoption--buildHandoffDraft--evaluateMigrationCompletion--validateException--assessLegacyExitList--findNestedRepositories" class="md-nav__link">
2020
+ <span class="md-ellipsis">
2021
+
2022
+ planAdoption / buildHandoffDraft / evaluateMigrationCompletion / validateException / assessLegacyExitList / findNestedRepositories
2023
+
2024
+ </span>
2025
+ </a>
2026
+
2027
+ </li>
2028
+
2029
+ </ul>
2030
+ </nav>
2031
+
2032
+ </li>
2033
+
2034
+ <li class="md-nav__item">
2035
+ <a href="#projection-foundationkitprojection" class="md-nav__link">
2036
+ <span class="md-ellipsis">
2037
+
2038
+ projection (foundation.kit.projection)
2039
+
2040
+ </span>
2041
+ </a>
2042
+
2043
+ <nav class="md-nav" aria-label="projection (foundation.kit.projection)">
2044
+ <ul class="md-nav__list">
2045
+
2046
+ <li class="md-nav__item">
2047
+ <a href="#runProjection--loadProjectionManifest" class="md-nav__link">
2048
+ <span class="md-ellipsis">
2049
+
2050
+ runProjection / loadProjectionManifest
2051
+
2052
+ </span>
2053
+ </a>
2054
+
2055
+ </li>
2056
+
2057
+ </ul>
2058
+ </nav>
2059
+
2060
+ </li>
2061
+
2062
+ <li class="md-nav__item">
2063
+ <a href="#check-foundationkitcheck" class="md-nav__link">
2064
+ <span class="md-ellipsis">
2065
+
2066
+ check (foundation.kit.check)
2067
+
2068
+ </span>
2069
+ </a>
2070
+
2071
+ <nav class="md-nav" aria-label="check (foundation.kit.check)">
2072
+ <ul class="md-nav__list">
2073
+
2074
+ <li class="md-nav__item">
2075
+ <a href="#runChecks--runCoreCheck--isContainedDeclaration" class="md-nav__link">
2076
+ <span class="md-ellipsis">
2077
+
2078
+ runChecks / runCoreCheck / isContainedDeclaration
2079
+
2080
+ </span>
2081
+ </a>
2082
+
2083
+ </li>
2084
+
2085
+ </ul>
2086
+ </nav>
2087
+
2088
+ </li>
2089
+
2090
+ <li class="md-nav__item">
2091
+ <a href="#report-foundationkitreport" class="md-nav__link">
2092
+ <span class="md-ellipsis">
2093
+
2094
+ report (foundation.kit.report)
2095
+
2096
+ </span>
2097
+ </a>
2098
+
2099
+ <nav class="md-nav" aria-label="report (foundation.kit.report)">
2100
+ <ul class="md-nav__list">
2101
+
2102
+ <li class="md-nav__item">
2103
+ <a href="#renderReportAction--checkReportAction" class="md-nav__link">
2104
+ <span class="md-ellipsis">
2105
+
2106
+ renderReportAction / checkReportAction
2107
+
2108
+ </span>
2109
+ </a>
2110
+
2111
+ </li>
2112
+
2113
+ </ul>
2114
+ </nav>
2115
+
2116
+ </li>
2117
+
2118
+ <li class="md-nav__item">
2119
+ <a href="#git-probe-foundationkitgit-probe" class="md-nav__link">
2120
+ <span class="md-ellipsis">
2121
+
2122
+ git-probe (foundation.kit.git-probe)
2123
+
2124
+ </span>
2125
+ </a>
2126
+
2127
+ <nav class="md-nav" aria-label="git-probe (foundation.kit.git-probe)">
2128
+ <ul class="md-nav__list">
2129
+
2130
+ <li class="md-nav__item">
2131
+ <a href="#probeGitState--probeGitFacts" class="md-nav__link">
2132
+ <span class="md-ellipsis">
2133
+
2134
+ probeGitState / probeGitFacts
2135
+
2136
+ </span>
2137
+ </a>
2138
+
2139
+ </li>
2140
+
2141
+ </ul>
2142
+ </nav>
2143
+
2144
+ </li>
2145
+
2146
+ <li class="md-nav__item">
2147
+ <a href="#host-foundationkithost" class="md-nav__link">
2148
+ <span class="md-ellipsis">
2149
+
2150
+ host (foundation.kit.host)
2151
+
2152
+ </span>
2153
+ </a>
2154
+
2155
+ <nav class="md-nav" aria-label="host (foundation.kit.host)">
2156
+ <ul class="md-nav__list">
2157
+
2158
+ <li class="md-nav__item">
2159
+ <a href="#describeHost--loadHostRegistry--probeHost--buildHostAdapter--materializeHostBuild--planHost--assertPlanConsistency--refuseHostApply--probeTrustedVersionDriver" class="md-nav__link">
2160
+ <span class="md-ellipsis">
2161
+
2162
+ describeHost / loadHostRegistry / probeHost / buildHostAdapter / materializeHostBuild / planHost / assertPlanConsistency / refuseHostApply / probeTrustedVersionDriver
2163
+
2164
+ </span>
2165
+ </a>
2166
+
2167
+ </li>
2168
+
2169
+ </ul>
2170
+ </nav>
2171
+
2172
+ </li>
2173
+
2174
+ <li class="md-nav__item">
2175
+ <a href="#licensing-foundationkitlicensing" class="md-nav__link">
2176
+ <span class="md-ellipsis">
2177
+
2178
+ licensing (foundation.kit.licensing)
2179
+
2180
+ </span>
2181
+ </a>
2182
+
2183
+ <nav class="md-nav" aria-label="licensing (foundation.kit.licensing)">
2184
+ <ul class="md-nav__list">
2185
+
2186
+ <li class="md-nav__item">
2187
+ <a href="#loadLicensingProfile--listLicensingProfiles--validateLicensingProfile--generateLicenseContent--generateNoticeContent--generateIdentityRecord--bundledProfilesRoot" class="md-nav__link">
2188
+ <span class="md-ellipsis">
2189
+
2190
+ loadLicensingProfile / listLicensingProfiles / validateLicensingProfile / generateLicenseContent / generateNoticeContent / generateIdentityRecord / bundledProfilesRoot
2191
+
2192
+ </span>
2193
+ </a>
2194
+
2195
+ </li>
2196
+
2197
+ </ul>
2198
+ </nav>
2199
+
2200
+ </li>
2201
+
2202
+ <li class="md-nav__item">
2203
+ <a href="#identity-check-foundationkitidentity-check" class="md-nav__link">
2204
+ <span class="md-ellipsis">
2205
+
2206
+ identity-check (foundation.kit.identity-check)
2207
+
2208
+ </span>
2209
+ </a>
2210
+
2211
+ <nav class="md-nav" aria-label="identity-check (foundation.kit.identity-check)">
2212
+ <ul class="md-nav__list">
2213
+
2214
+ <li class="md-nav__item">
2215
+ <a href="#loadIdentityRecord--checkIdentityDrift--validateIdentityAgainstProfile" class="md-nav__link">
2216
+ <span class="md-ellipsis">
2217
+
2218
+ loadIdentityRecord / checkIdentityDrift / validateIdentityAgainstProfile
2219
+
2220
+ </span>
2221
+ </a>
2222
+
2223
+ </li>
2224
+
2225
+ </ul>
2226
+ </nav>
2227
+
2228
+ </li>
2229
+
2230
+ <li class="md-nav__item">
2231
+ <a href="#CLI-foundationkitcli" class="md-nav__link">
2232
+ <span class="md-ellipsis">
2233
+
2234
+ CLI (foundation.kit.cli)
2235
+
2236
+ </span>
2237
+ </a>
2238
+
2239
+ <nav class="md-nav" aria-label="CLI (foundation.kit.cli)">
2240
+ <ul class="md-nav__list">
2241
+
2242
+ <li class="md-nav__item">
2243
+ <a href="#runCommand--cliMain--拒绝变更旗标" class="md-nav__link">
2244
+ <span class="md-ellipsis">
2245
+
2246
+ runCommand / cliMain / 拒绝变更旗标
2247
+
2248
+ </span>
2249
+ </a>
2250
+
2251
+ </li>
2252
+
2253
+ </ul>
2254
+ </nav>
2255
+
2256
+ </li>
2257
+
2258
+ <li class="md-nav__item">
2259
+ <a href="#Quickstart-Profile-v2-candidate" class="md-nav__link">
2260
+ <span class="md-ellipsis">
2261
+
2262
+ Quickstart Profile v2 candidate
2263
+
2264
+ </span>
2265
+ </a>
2266
+
2267
+ </li>
2268
+
2269
+ <li class="md-nav__item">
2270
+ <a href="#与机器事实层的互链" class="md-nav__link">
2271
+ <span class="md-ellipsis">
2272
+
2273
+ 与机器事实层的互链
2274
+
2275
+ </span>
2276
+ </a>
2277
+
2278
+ </li>
2279
+
2280
+ </ul>
2281
+
2282
+ </nav>
2283
+ </div>
2284
+ </div>
2285
+ </div>
2286
+
2287
+
2288
+
2289
+ <div class="md-content" data-md-component="content">
2290
+
2291
+ <article class="md-content__inner md-typeset">
2292
+
2293
+
2294
+
2295
+
2296
+
2297
+ <h1 id="skill-family-engineering-kit-公共-API-参考">skill-family-engineering-kit 公共 API 参考<a class="headerlink" href="#skill-family-engineering-kit-公共-API-参考" title="Permanent link">&para;</a></h1>
2298
+ <p>本页从真实导出(<code>src/index.mjs</code> 与各源模块、CLI 入口)核对,不手写无法证明新鲜度的全集。每个公共入口按 hand-off §4.3 说明:签名、输入与输出、是否纯函数、文件/进程/Git/网络副作用、稳定错误码与 <code>details.kind</code>、前置条件与信任锚、<code>since</code> 与 <code>stability</code>、源文件与正例/负例测试、调用方仍拥有的业务语义。</p>
2299
+ <p>Kit 消费 Contracts 与 Harness,只拥有四个顶层命令与它们的只读/受控写边界。包级常量:<code>TOP_LEVEL_COMMANDS</code>(冻结 4 个:<code>scaffold</code> / <code>adopt-plan</code> / <code>projection</code> / <code>check</code>)、<code>FORBIDDEN_SIDE_EFFECTS</code>、<code>COMMAND_SIDE_EFFECTS</code>、<code>KIT_EXIT_CODES</code>(<code>ok=0</code> / <code>findings=1</code> / <code>rejected=2</code>)。Kit 永不执行 Git 写、发布、删除用户内容或触网。</p>
2300
+ <p>能力分组(与 <code>docs/agents/capability-catalog.json</code> 对应):</p>
2301
+ <ul>
2302
+ <li><a href="#scaffold-foundationkitscaffold">scaffold</a> → <code>scaffoldTarget</code></li>
2303
+ <li><a href="#adopt-plan-foundationkitadopt-plan">adopt-plan</a> → <code>planAdoption</code> / <code>evaluateMigrationCompletion</code></li>
2304
+ <li><a href="#projection-foundationkitprojection">projection</a> → <code>runProjection</code> / <code>loadProjectionManifest</code></li>
2305
+ <li><a href="#check-foundationkitcheck">check</a> → <code>runChecks</code> / <code>runCoreCheck</code></li>
2306
+ <li><a href="#report-foundationkitreport">report</a> → <code>renderReportAction</code> / <code>checkReportAction</code></li>
2307
+ <li><a href="#git-probe-foundationkitgit-probe">git-probe</a> → <code>probeGitState</code> / <code>probeGitFacts</code></li>
2308
+ <li><a href="#host-foundationkithost">host</a> → <code>describeHost</code> / <code>probeHost</code> / <code>refuseHostApply</code> …</li>
2309
+ <li><a href="#licensing-foundationkitlicensing">licensing</a> → <code>loadLicensingProfile</code> / <code>generateLicenseContent</code> …</li>
2310
+ <li><a href="#identity-check-foundationkitidentity-check">identity-check</a> → <code>checkIdentityDrift</code> / <code>validateIdentityAgainstProfile</code></li>
2311
+ <li><a href="./">CLI</a> → <code>runCommand</code> / <code>cliMain</code></li>
2312
+ </ul>
2313
+ <hr />
2314
+ <h2 id="scaffold-foundationkitscaffold">scaffold (foundation.kit.scaffold)<a class="headerlink" href="#scaffold-foundationkitscaffold" title="Permanent link">&para;</a></h2>
2315
+ <h3 id="scaffoldTarget--describeSkeletonFiles--normalizeSkeletonInputs">scaffoldTarget / describeSkeletonFiles / normalizeSkeletonInputs<a class="headerlink" href="#scaffoldTarget--describeSkeletonFiles--normalizeSkeletonInputs" title="Permanent link">&para;</a></h3>
2316
+ <ul>
2317
+ <li>签名:</li>
2318
+ <li><code>scaffoldTarget({ root, projectId, projectName, profileId, licensingProfile, licensingVariant, licensingProfileData, profilesRoot, identityProjections } = {})</code>(async)</li>
2319
+ <li><code>describeSkeletonFiles(inputs)</code>(async)</li>
2320
+ <li><code>normalizeSkeletonInputs({ projectId, projectName, profileId, licensingProfile, licensingVariant, rootBasename })</code></li>
2321
+ <li>输入:目标根、骨架选项(<code>projectId</code> 等)。</li>
2322
+ <li>输出:精确集合的托管骨架文件(原子 + 路径收容)。</li>
2323
+ <li>纯函数:<code>normalizeSkeletonInputs</code> 是;<code>scaffoldTarget</code> 落盘。</li>
2324
+ <li>副作用:在受收容目标创建文件(原子 + 收容);目标非空则拒绝、不覆盖。</li>
2325
+ <li>稳定错误码与 <code>details.kind</code>:非法 kebab <code>projectId</code> / 非空目标抛 <code>KitError</code>(<code>KIT_ERROR_KINDS</code> 的 <code>invalid-params</code> / <code>rejected</code>);非法参数 <code>+ INVALID_PARAMS</code>(<code>SFC2003</code>)。</li>
2326
+ <li>前置条件与信任锚:目标为可写空目录;Node &gt;= 22.22.2;骨架集合与 <code>scaffold-conformance</code> fixture 一致。</li>
2327
+ <li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
2328
+ <li>源文件:<code>packages/skill-family-engineering-kit/src/scaffold.mjs</code>、<code>skeleton.mjs</code>。</li>
2329
+ <li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/scaffold.test.mjs</code>、<code>skeleton-contract.test.mjs</code>。</li>
2330
+ <li>调用方仍拥有的业务语义:业务项目内容(存量仓改用 <code>adopt-plan</code>)。</li>
2331
+ </ul>
2332
+ <hr />
2333
+ <h2 id="adopt-plan-foundationkitadopt-plan">adopt-plan (foundation.kit.adopt-plan)<a class="headerlink" href="#adopt-plan-foundationkitadopt-plan" title="Permanent link">&para;</a></h2>
2334
+ <h3 id="planAdoption--buildHandoffDraft--evaluateMigrationCompletion--validateException--assessLegacyExitList--findNestedRepositories">planAdoption / buildHandoffDraft / evaluateMigrationCompletion / validateException / assessLegacyExitList / findNestedRepositories<a class="headerlink" href="#planAdoption--buildHandoffDraft--evaluateMigrationCompletion--validateException--assessLegacyExitList--findNestedRepositories" title="Permanent link">&para;</a></h3>
2335
+ <ul>
2336
+ <li>签名(节选):</li>
2337
+ <li><code>planAdoption({ root, manifest, ... } = {})</code>(async)</li>
2338
+ <li><code>buildHandoffDraft({ ... })</code></li>
2339
+ <li><code>evaluateMigrationCompletion({ ... })</code></li>
2340
+ <li><code>validateException(exception, index, nowMs)</code></li>
2341
+ <li><code>assessLegacyExitList(root, legacyItems)</code>(async)</li>
2342
+ <li><code>findNestedRepositories(entries)</code></li>
2343
+ <li>输入:目标根、迁移清单路径。</li>
2344
+ <li>输出:采用分类(<code>direct-adoption</code> / <code>compatibility-layer</code> / <code>keep-business</code> / <code>foundation-gap</code>)、完成判定、handoff 草稿(仅输出,不落盘)。</li>
2345
+ <li>纯函数:分类与评估函数为纯函数;<code>planAdoption</code> 含只读探测。</li>
2346
+ <li>副作用:<strong>严格只读</strong>——不写文件(临时文件也不写)、不 Git 写、不 rename、不触网;可能触发只读 Git 探测。</li>
2347
+ <li>稳定错误码与 <code>details.kind</code>:例外缺字段 / 未退出旧实现则完成判定 <code>false</code>;硬失败抛 <code>KitError</code>(<code>CONTRACTS_VERSION</code> 不一致等)。</li>
2348
+ <li>前置条件与信任锚:目标仓存在且可只读访问;<code>MIGRATION_MANIFEST_PATH</code> / <code>MIGRATION_MANIFEST_SCHEMA_ID</code> 指向契约。</li>
2349
+ <li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
2350
+ <li>源文件:<code>packages/skill-family-engineering-kit/src/adopt-plan.mjs</code>、<code>migration.mjs</code>。</li>
2351
+ <li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/adopt-plan.test.mjs</code>、<code>migration.test.mjs</code>。</li>
2352
+ <li>调用方仍拥有的业务语义:存量业务代码的迁移决策(真正迁移执行由调用方负责)。</li>
2353
+ </ul>
2354
+ <hr />
2355
+ <h2 id="projection-foundationkitprojection">projection (foundation.kit.projection)<a class="headerlink" href="#projection-foundationkitprojection" title="Permanent link">&para;</a></h2>
2356
+ <h3 id="runProjection--loadProjectionManifest">runProjection / loadProjectionManifest<a class="headerlink" href="#runProjection--loadProjectionManifest" title="Permanent link">&para;</a></h3>
2357
+ <ul>
2358
+ <li>签名:</li>
2359
+ <li><code>runProjection({ root, manifest: manifestRelPath } = {})</code>(async)</li>
2360
+ <li><code>loadProjectionManifest(rootAbs, manifestRelPath)</code>(async)</li>
2361
+ <li>输入:投影清单、目标根。</li>
2362
+ <li>输出:投影文件(仅在校验全部通过时写入)。</li>
2363
+ <li>纯函数:<code>loadProjectionManifest</code> 是;<code>runProjection</code> 两阶段(全校验后才写,失败回滚)。</li>
2364
+ <li>副作用:在受收容目标写投影文件;不覆盖 handwritten 文件;任一校验失败零写。</li>
2365
+ <li>稳定错误码与 <code>details.kind</code>:未授权 / 手写冲突 / 越界 / 内容冲突抛 <code>KitError</code>(<code>rejected</code> / <code>unauthorized</code> 类 <code>kind</code>)。</li>
2366
+ <li>前置条件与信任锚:投影清单已登记(<code>PROJECTION_MANIFEST_PATH</code>)。</li>
2367
+ <li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
2368
+ <li>源文件:<code>packages/skill-family-engineering-kit/src/projection.mjs</code>。</li>
2369
+ <li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/projection.test.mjs</code>。</li>
2370
+ <li>调用方仍拥有的业务语义:投影内容的业务含义(远端发布转 <code>release-skill</code>)。</li>
2371
+ </ul>
2372
+ <hr />
2373
+ <h2 id="check-foundationkitcheck">check (foundation.kit.check)<a class="headerlink" href="#check-foundationkitcheck" title="Permanent link">&para;</a></h2>
2374
+ <h3 id="runChecks--runCoreCheck--isContainedDeclaration">runChecks / runCoreCheck / isContainedDeclaration<a class="headerlink" href="#runChecks--runCoreCheck--isContainedDeclaration" title="Permanent link">&para;</a></h3>
2375
+ <ul>
2376
+ <li>签名:</li>
2377
+ <li><code>runChecks({ root, allowGitSpawn = true, only, profilesRoot } = {})</code>(async)</li>
2378
+ <li><code>runCoreCheck({ root, allowGitSpawn = true, profilesRoot } = {})</code>(async)</li>
2379
+ <li><code>isContainedDeclaration(rel)</code></li>
2380
+ <li>输入:<code>--only</code> 取值 <code>contracts|drift|closure|version|docs|git|identity</code>。</li>
2381
+ <li>输出:发现清单;退出码 <code>findings=1</code>(有发现)、<code>mechanism=2</code>(某类检查无法完成)、<code>ok=0</code>。</li>
2382
+ <li>纯函数:否(读取目标文件与只读 Git 状态);但<strong>只诊断、不修复、不写</strong>。</li>
2383
+ <li>副作用:无文件写入;只读 Git 探测(至多一次冻结 <code>status</code> 查询)。</li>
2384
+ <li>稳定错误码与 <code>details.kind</code>:<code>CHECK_CLASSES</code> 为七类闭集,不扩张;机制失败抛 <code>KitError</code>(<code>mechanism</code> 类)。</li>
2385
+ <li>前置条件与信任锚:<code>GIT_READ_ONLY_ALLOWLIST</code> 限定可调用子命令。</li>
2386
+ <li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
2387
+ <li>源文件:<code>packages/skill-family-engineering-kit/src/check.mjs</code>、<code>core-check.mjs</code>。</li>
2388
+ <li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/check.test.mjs</code>、<code>core-check.test.mjs</code>、<code>check-equivalence.test.mjs</code>。</li>
2389
+ <li>调用方仍拥有的业务语义:发现项的业务处置(自动修复执行由调用方负责)。</li>
2390
+ </ul>
2391
+ <hr />
2392
+ <h2 id="report-foundationkitreport">report (foundation.kit.report)<a class="headerlink" href="#report-foundationkitreport" title="Permanent link">&para;</a></h2>
2393
+ <h3 id="renderReportAction--checkReportAction">renderReportAction / checkReportAction<a class="headerlink" href="#renderReportAction--checkReportAction" title="Permanent link">&para;</a></h3>
2394
+ <ul>
2395
+ <li>签名:</li>
2396
+ <li><code>renderReportAction(options = {})</code>(async)</li>
2397
+ <li><code>checkReportAction(options = {})</code>(async)</li>
2398
+ <li>输入:<code>report-model</code>、<code>--out</code> / <code>--binding</code> 选项。</li>
2399
+ <li>输出:Markdown 文本;显式 <code>--out</code> / <code>--binding</code> 才落盘,否则只写 stdout。</li>
2400
+ <li>纯函数:否(默认只写 stdout;显式选项才写受收容文件)。</li>
2401
+ <li>副作用:默认无文件写入;显式 <code>--out</code> / <code>--binding</code> 才写受收容文件。</li>
2402
+ <li>稳定错误码与 <code>details.kind</code>:硬失败计为发现;非法参数 <code>reject</code>(<code>invalid-params</code>)。</li>
2403
+ <li>前置条件与信任锚:已存在 Harness <code>report-model</code>;报告由机器结果确定性渲染。</li>
2404
+ <li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
2405
+ <li>源文件:<code>packages/skill-family-engineering-kit/src/report.mjs</code>。</li>
2406
+ <li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/report.test.mjs</code>。</li>
2407
+ <li>调用方仍拥有的业务语义:报告结论解读(机制在 Harness <code>report</code>)。</li>
2408
+ </ul>
2409
+ <hr />
2410
+ <h2 id="git-probe-foundationkitgit-probe">git-probe (foundation.kit.git-probe)<a class="headerlink" href="#git-probe-foundationkitgit-probe" title="Permanent link">&para;</a></h2>
2411
+ <h3 id="probeGitState--probeGitFacts">probeGitState / probeGitFacts<a class="headerlink" href="#probeGitState--probeGitFacts" title="Permanent link">&para;</a></h3>
2412
+ <ul>
2413
+ <li>签名:</li>
2414
+ <li><code>probeGitState(root, { allowSpawn = true } = {})</code>(async)</li>
2415
+ <li><code>probeGitFacts(root, candidatePaths, { allowSpawn = true } = {})</code>(async)</li>
2416
+ <li>输入:目标根。</li>
2417
+ <li>输出:Git 状态与事实(只读)。</li>
2418
+ <li>纯函数:否(调用 <code>git</code> 只读子命令);不含任何写操作。</li>
2419
+ <li>副作用:只读调用 <code>git status</code> / <code>ls-files</code> / <code>check-ignore</code>;参数向量冻结于 <code>GIT_STATUS_ARGS</code> / <code>GIT_LS_FILES_ARGS</code> / <code>GIT_CHECK_IGNORE_ARGS</code>,不在白名单即拒绝。</li>
2420
+ <li>稳定错误码与 <code>details.kind</code>:非白名单参数向量抛 <code>KitError</code>(<code>unauthorized-git</code> 类)。</li>
2421
+ <li>前置条件与信任锚:<code>GIT_READ_ONLY_ALLOWLIST</code> 限定可调用子命令。</li>
2422
+ <li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
2423
+ <li>源文件:<code>packages/skill-family-engineering-kit/src/gitprobe.mjs</code>。</li>
2424
+ <li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/git-probe.test.mjs</code>。</li>
2425
+ <li>调用方仍拥有的业务语义:Git 写操作授权(Git 写归 Git 生命周期指南,Foundation 不拥有)。</li>
2426
+ </ul>
2427
+ <hr />
2428
+ <h2 id="host-foundationkithost">host (foundation.kit.host)<a class="headerlink" href="#host-foundationkithost" title="Permanent link">&para;</a></h2>
2429
+ <h3 id="describeHost--loadHostRegistry--probeHost--buildHostAdapter--materializeHostBuild--planHost--assertPlanConsistency--refuseHostApply--probeTrustedVersionDriver">describeHost / loadHostRegistry / probeHost / buildHostAdapter / materializeHostBuild / planHost / assertPlanConsistency / refuseHostApply / probeTrustedVersionDriver<a class="headerlink" href="#describeHost--loadHostRegistry--probeHost--buildHostAdapter--materializeHostBuild--planHost--assertPlanConsistency--refuseHostApply--probeTrustedVersionDriver" title="Permanent link">&para;</a></h3>
2430
+ <ul>
2431
+ <li>签名(节选,除 <code>refuseHostApply</code> 外均为 async):</li>
2432
+ <li><code>describeHost({ hostId, hostsRoot, registry } = {})</code></li>
2433
+ <li><code>loadHostRegistry({ hostsRoot, registry } = {})</code></li>
2434
+ <li><code>probeHost({ hostId, hostsRoot, registry, executable, allowSpawn = false, timeoutMs = 5000, runner } = {})</code></li>
2435
+ <li><code>buildHostAdapter({ hostId, pathCategoryId, input, hostsRoot, registry } = {})</code></li>
2436
+ <li><code>materializeHostBuild(options)</code></li>
2437
+ <li><code>planHost({ hostId, pathCategoryId, buildManifest, probeFacts, hostsRoot, registry } = {})</code></li>
2438
+ <li><code>assertPlanConsistency(planInput)</code></li>
2439
+ <li><code>refuseHostApply()</code>(直接抛错)</li>
2440
+ <li><code>probeTrustedVersionDriver({ hostId, driverId, capabilities = CAPABILITIES, executable, allowSpawn = false, timeoutMs = 5000, runner } = {})</code></li>
2441
+ <li>输入:宿主标识、probe/plan 选项。</li>
2442
+ <li>输出:宿主描述、probe 结果、构建产物、plan。</li>
2443
+ <li>纯函数:<code>assertPlanConsistency</code> / <code>refuseHostApply</code> 是;其余含落盘或进程调用。</li>
2444
+ <li>副作用:<code>build</code> / <code>materialize</code> 在受收容目标写产物;<code>probe</code> 默认 <code>allowSpawn=false</code>,不取 PATH。</li>
2445
+ <li>稳定错误码与 <code>details.kind</code>:unsupported host(如 <code>qoder</code>)抛 <code>KitError</code>(<code>unsupported-host</code>);<code>apply</code> 由 <code>refuseHostApply</code> 稳定拒绝;缺 probe facts 抛 <code>KitError</code>(<code>missing-probe-facts</code>)。<code>HOST_DRIVER_IDS</code> 仅两个受信 driver(<code>claude-version-v1</code> / <code>codex-version-v1</code>)。</li>
2446
+ <li>前置条件与信任锚:宿主 Profile 已在 <code>profiles/hosts</code> 登记;受信 driver 限定;<code>apply</code> / <code>install</code> / <code>update</code> / <code>uninstall</code> 明确 unsupported。</li>
2447
+ <li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>unstable</code>(host 能力整体 unstable)。</li>
2448
+ <li>源文件:<code>packages/skill-family-engineering-kit/src/host.mjs</code>、<code>host-profiles.mjs</code>、<code>host-drivers.mjs</code>。</li>
2449
+ <li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/host.test.mjs</code>。</li>
2450
+ <li>调用方仍拥有的业务语义:宿主业务语义(<code>host apply</code> 明确 unsupported;Qoder 完整 driver unsupported)。</li>
2451
+ </ul>
2452
+ <hr />
2453
+ <h2 id="licensing-foundationkitlicensing">licensing (foundation.kit.licensing)<a class="headerlink" href="#licensing-foundationkitlicensing" title="Permanent link">&para;</a></h2>
2454
+ <h3 id="loadLicensingProfile--listLicensingProfiles--validateLicensingProfile--generateLicenseContent--generateNoticeContent--generateIdentityRecord--bundledProfilesRoot">loadLicensingProfile / listLicensingProfiles / validateLicensingProfile / generateLicenseContent / generateNoticeContent / generateIdentityRecord / bundledProfilesRoot<a class="headerlink" href="#loadLicensingProfile--listLicensingProfiles--validateLicensingProfile--generateLicenseContent--generateNoticeContent--generateIdentityRecord--bundledProfilesRoot" title="Permanent link">&para;</a></h3>
2455
+ <ul>
2456
+ <li>签名(节选):</li>
2457
+ <li><code>loadLicensingProfile({ profilesRoot, profileId, variant } = {})</code>(async)</li>
2458
+ <li><code>listLicensingProfiles(profilesRoot)</code></li>
2459
+ <li><code>validateLicensingProfile(profile)</code></li>
2460
+ <li><code>generateLicenseContent(profile)</code> / <code>generateNoticeContent(profile, { projectName })</code> / <code>generateIdentityRecord(profile, { projectId, projectName, projections } = {})</code></li>
2461
+ <li><code>bundledProfilesRoot()</code></li>
2462
+ <li>输入:Profile 标识、变体选择。</li>
2463
+ <li>输出:许可证 / 声明 / 身份记录文本。</li>
2464
+ <li>纯函数:<code>validateLicensingProfile</code> 与各 <code>generate*</code> 是;<code>load*</code> 含只读读取 Profile 数据。</li>
2465
+ <li>副作用:无(纯函数生成 + 只读读取)。</li>
2466
+ <li>稳定错误码与 <code>details.kind</code>:多变体未指定 / 非法 Profile 抛 <code>KitError</code>(<code>invalid-licensing-profile</code>)。</li>
2467
+ <li>前置条件与信任锚:<code>profiles/licensing/registry.json</code> + <code>schema.json</code> 存在;默认取 registry 第一变体,多变体须显式选择;所有商业载荷当前关闭。</li>
2468
+ <li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
2469
+ <li>源文件:<code>packages/skill-family-engineering-kit/src/licensing.mjs</code>、<code>profiles/licensing/registry.json</code>、<code>profiles/licensing/schema.json</code>。</li>
2470
+ <li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/licensing.test.mjs</code>。</li>
2471
+ <li>调用方仍拥有的业务语义:授权业务语义(授权执行决策由调用方负责)。</li>
2472
+ </ul>
2473
+ <hr />
2474
+ <h2 id="identity-check-foundationkitidentity-check">identity-check (foundation.kit.identity-check)<a class="headerlink" href="#identity-check-foundationkitidentity-check" title="Permanent link">&para;</a></h2>
2475
+ <h3 id="loadIdentityRecord--checkIdentityDrift--validateIdentityAgainstProfile">loadIdentityRecord / checkIdentityDrift / validateIdentityAgainstProfile<a class="headerlink" href="#loadIdentityRecord--checkIdentityDrift--validateIdentityAgainstProfile" title="Permanent link">&para;</a></h3>
2476
+ <ul>
2477
+ <li>签名:</li>
2478
+ <li><code>loadIdentityRecord(rootAbs)</code>(async)</li>
2479
+ <li><code>checkIdentityDrift({ rootAbs, identityRecord } = {})</code>(async)</li>
2480
+ <li><code>validateIdentityAgainstProfile(record, profilesRoot)</code>(async)</li>
2481
+ <li>输入:目标根、Profile 标识。</li>
2482
+ <li>输出:漂移发现、校验结论。</li>
2483
+ <li>纯函数:<code>validateIdentityAgainstProfile</code> 是;<code>load*</code> / <code>check*</code> 含只读读取目标文件。</li>
2484
+ <li>副作用:只读读取目标文件;不修改。</li>
2485
+ <li>稳定错误码与 <code>details.kind</code>:漂移或校验失败产出 findings(不抛错,由 <code>check</code> 退出码 <code>1</code> 表达)。</li>
2486
+ <li>前置条件与信任锚:<code>IDENTITY_RECORD_PATH</code> 指向身份记录。</li>
2487
+ <li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
2488
+ <li>源文件:<code>packages/skill-family-engineering-kit/src/identity-check.mjs</code>。</li>
2489
+ <li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/identity-check.test.mjs</code>。</li>
2490
+ <li>调用方仍拥有的业务语义:漂移业务处置(自动修复由调用方负责)。</li>
2491
+ </ul>
2492
+ <hr />
2493
+ <h2 id="CLI-foundationkitcli">CLI (foundation.kit.cli)<a class="headerlink" href="#CLI-foundationkitcli" title="Permanent link">&para;</a></h2>
2494
+ <h3 id="runCommand--cliMain--拒绝变更旗标">runCommand / cliMain / 拒绝变更旗标<a class="headerlink" href="#runCommand--cliMain--拒绝变更旗标" title="Permanent link">&para;</a></h3>
2495
+ <ul>
2496
+ <li>签名:</li>
2497
+ <li><code>runCommand(command, options = {})</code>(async)—— 按 <code>TOP_LEVEL_COMMANDS</code> 分派,返回 <code>{ exitCode, output }</code></li>
2498
+ <li><code>cliMain(argv)</code>(async)—— CLI 入口</li>
2499
+ <li>输入:<code>argv</code>。</li>
2500
+ <li>输出:命令结果;退出码 <code>ok=0</code> / <code>findings=1</code> / <code>rejected=2</code>。</li>
2501
+ <li>纯函数:否(依命令产生受收容文件写入或只读探测)。</li>
2502
+ <li>副作用:依命令而定(scaffold/projection 受收容写;adopt-plan/check 只读);<code>REFUSED_MUTATION_FLAGS</code>(如 <code>--apply</code>)在 <code>parseOptions</code> 入口即拒。</li>
2503
+ <li>稳定错误码与 <code>details.kind</code>:未知命令 / 拒绝旗标退出码 <code>2</code>(<code>unknown-command</code> / <code>refused-mutation</code>)。</li>
2504
+ <li>前置条件与信任锚:Node &gt;= 22.22.2;<code>TOP_LEVEL_COMMANDS</code> 固定 4 个,第 5 个命令禁止新增;<code>REFUSED_MUTATION_FLAGS</code> 在解析入口即拒。</li>
2505
+ <li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
2506
+ <li>源文件:<code>packages/skill-family-engineering-kit/src/index.mjs</code>、<code>cli.mjs</code>。</li>
2507
+ <li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/cli.test.mjs</code>、<code>boundary.test.mjs</code>。</li>
2508
+ <li>调用方仍拥有的业务语义:命令的业务目标(命令集合不扩张)。</li>
2509
+ </ul>
2510
+ <p>Kit 错误类型:<code>KitError extends ContractsError</code>(构造未登记码立即抛 <code>TypeError</code>);<code>KIT_ERROR_KINDS</code> 为稳定 kind 枚举;<code>kitError</code> / <code>invalidParamsError</code> / <code>unknownCommandError</code> / <code>mutationModeError</code> / <code>refusalError</code> 为构造辅助。<code>REFUSED_MUTATION_FLAGS</code> 列出入口即拒的变更旗标(如 <code>--apply</code>)。</p>
2511
+ <hr />
2512
+ <h2 id="Quickstart-Profile-v2-candidate">Quickstart Profile v2 candidate<a class="headerlink" href="#Quickstart-Profile-v2-candidate" title="Permanent link">&para;</a></h2>
2513
+ <p><code>skill-family-engineering-kit/candidate/quickstart-profile</code> 导出 <code>buildQuickstartProfileProjection</code> 与 <code>QUICKSTART_PROFILE_TARGET_PREFIX</code>。builder 接收显式消费者 Schema 路径与冻结来源身份,生成按 Schema <code>$id</code> 查询的 standalone validator、机械投影的 Contracts/Harness runtime、许可证和完整 provenance。</p>
2514
+ <p>Bundle 离线运行时不需要 Foundation 包、<code>node_modules</code> 或 Ajv。builder 只返回稳定 projection manifest,不写目标文件,也不增加第五个 Kit 顶层命令;调用方仍需把 manifest 交给 <code>runProjection</code> 完成授权写入。0.3.0 的 v2 与 0.2.1 的依赖闭包 Bundle 不兼容,必须精确锁定版本。</p>
2515
+ <hr />
2516
+ <h2 id="与机器事实层的互链">与机器事实层的互链<a class="headerlink" href="#与机器事实层的互链" title="Permanent link">&para;</a></h2>
2517
+ <ul>
2518
+ <li>能力稳定 ID 见 <code>docs/agents/capability-catalog.json</code>(<code>foundation.kit.*</code>、<code>foundation.unsupported.*</code>)。</li>
2519
+ <li>机械校验:<code>scripts/docs/capability-catalog-check.mjs</code> 解析 <code>src/index.mjs</code> 与 <code>cli.mjs</code>,拒绝引用不存在的入口,并校验 <code>TOP_LEVEL_COMMANDS</code> 未扩张为超 4 个。</li>
2520
+ </ul>
2521
+
2522
+
2523
+
2524
+
2525
+
2526
+
2527
+
2528
+
2529
+
2530
+
2531
+
2532
+
2533
+
2534
+ </article>
2535
+ </div>
2536
+
2537
+
2538
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
2539
+ </div>
2540
+
2541
+ </main>
2542
+
2543
+ <footer class="md-footer">
2544
+
2545
+ <div class="md-footer-meta md-typeset">
2546
+ <div class="md-footer-meta__inner md-grid">
2547
+ <div class="md-copyright">
2548
+
2549
+
2550
+ Made with
2551
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2552
+ Material for MkDocs
2553
+ </a>
2554
+
2555
+ </div>
2556
+
2557
+ </div>
2558
+ </div>
2559
+ </footer>
2560
+
2561
+ </div>
2562
+ <div class="md-dialog" data-md-component="dialog">
2563
+ <div class="md-dialog__inner md-typeset"></div>
2564
+ </div>
2565
+
2566
+
2567
+
2568
+
2569
+
2570
+ <script id="__config" type="application/json">{"annotate": null, "base": "../../..", "features": [], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}, "version": null}</script>
2571
+
2572
+
2573
+ <script src="../../../assets/javascripts/bundle.d7400e89.min.js"></script>
2574
+
2575
+
2576
+ </body>
2577
+ </html>