skill-family-engineering-kit 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/CHANGELOG.zh-CN.md +21 -0
- package/CODE_OF_CONDUCT.md +131 -0
- package/CONTRIBUTING.md +25 -0
- package/README.md +18 -11
- package/README.zh-CN.md +18 -11
- package/SECURITY.md +33 -0
- package/docs/.nojekyll +0 -0
- package/docs/404.html +1666 -0
- package/docs/agents/architecture-routing/index.html +1944 -0
- package/docs/agents/capability-catalog.en.json +2047 -0
- package/docs/agents/capability-catalog.json +1239 -0
- package/docs/agents/capability-catalog.schema.json +179 -0
- package/docs/agents/capability-catalog.zh-CN.json +2047 -0
- package/docs/agents/index.html +1914 -0
- package/docs/architecture/index.html +2194 -0
- package/docs/assets/images/favicon.png +0 -0
- package/docs/assets/javascripts/bundle.d7400e89.min.js +16 -0
- package/docs/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
- package/docs/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
- package/docs/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
- package/docs/assets/javascripts/lunr/tinyseg.js +206 -0
- package/docs/assets/javascripts/lunr/wordcut.js +6708 -0
- package/docs/assets/javascripts/workers/search.2c215733.min.js +42 -0
- package/docs/assets/stylesheets/main.ec1eaa64.min.css +1 -0
- package/docs/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
- package/docs/en/agents/architecture-routing/index.html +1944 -0
- package/docs/en/agents/index.html +1925 -0
- package/docs/en/architecture/index.html +2196 -0
- package/docs/en/examples-and-fixtures/index.html +1888 -0
- package/docs/en/help/index.html +2035 -0
- package/docs/en/index.html +1895 -0
- package/docs/en/licensing/index.html +1917 -0
- package/docs/en/migration/index.html +2280 -0
- package/docs/en/quickstart/index.html +1919 -0
- package/docs/en/recipes/adapter-text-closure/index.html +2000 -0
- package/docs/en/recipes/adopt-existing-repository/index.html +1987 -0
- package/docs/en/recipes/deterministic-human-report/index.html +1998 -0
- package/docs/en/recipes/domain-schema-validation/index.html +2009 -0
- package/docs/en/recipes/durable-local-state/index.html +2009 -0
- package/docs/en/recipes/host-profile-integration/index.html +2001 -0
- package/docs/en/recipes/index.html +1877 -0
- package/docs/en/recipes/safe-filesystem-and-atomic-write/index.html +1994 -0
- package/docs/en/reference/api/index.html +1941 -0
- package/docs/en/reference/compatibility/index.html +2036 -0
- package/docs/en/reference/failure-and-side-effect-matrix/index.html +2216 -0
- package/docs/examples-and-fixtures/index.html +1871 -0
- package/docs/git-lifecycle/index.html +2029 -0
- package/docs/help/index.html +2035 -0
- package/docs/index.html +1893 -0
- package/docs/integration/audit/baseline/audit-codes.json +62 -0
- package/docs/integration/audit/failure-evidence/index.html +1925 -0
- package/docs/integration/audit/independence/index.html +1894 -0
- package/docs/integration/audit/index.html +1881 -0
- package/docs/integration/audit/mutation-taxonomy/index.html +2075 -0
- package/docs/integration/audit/schemas/audit-evidence.schema.json +182 -0
- package/docs/integration/audit/version-compatibility/index.html +1965 -0
- package/docs/licensing/index.html +1917 -0
- package/docs/migration/index.html +2280 -0
- package/docs/public/status/index.html +1884 -0
- package/docs/quickstart/index.html +1919 -0
- package/docs/recipes/adapter-text-closure/index.html +2000 -0
- package/docs/recipes/adopt-existing-repository/index.html +1987 -0
- package/docs/recipes/deterministic-human-report/index.html +1998 -0
- package/docs/recipes/domain-schema-validation/index.html +2009 -0
- package/docs/recipes/durable-local-state/index.html +2009 -0
- package/docs/recipes/host-profile-integration/index.html +2001 -0
- package/docs/recipes/index.html +1877 -0
- package/docs/recipes/safe-filesystem-and-atomic-write/index.html +1994 -0
- package/docs/reference/api/contracts/index.html +2558 -0
- package/docs/reference/api/engineering-kit/index.html +2682 -0
- package/docs/reference/api/harness/index.html +3109 -0
- package/docs/reference/api/index.html +1881 -0
- package/docs/reference/compatibility/index.html +2036 -0
- package/docs/reference/failure-and-side-effect-matrix/index.html +2216 -0
- package/docs/search/search_index.json +1 -0
- package/docs/setup/index.html +1995 -0
- package/docs/sitemap.xml +207 -0
- package/package.json +6 -4
- package/profile-spi/extension-spi.json +162 -0
- package/profile-spi/index.mjs +574 -0
- package/profile-spi/profile-adoption.schema.json +120 -0
- package/profile-spi/profile-descriptor.schema.json +99 -0
- package/profile-spi/rule-baseline-catalog.json +50 -0
- package/release-notes/0.7.0.yaml +23 -0
- package/src/cli.mjs +0 -0
- package/src/index.mjs +2 -1
- package/src/projection.mjs +77 -33
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.7.0 locale=en baseline=sha256:ed1c59e7cee6e7280d2569e554b07d3b3513f4f3318bf30e374e2d480320f2b7 -->
|
|
4
|
+
## [0.7.0] - 2026-08-21
|
|
5
|
+
|
|
6
|
+
This release exports the public canonical projection closure builder buildProjectionClosure (FG-4), so callers construct compileProjectionPlan-ready plan closures through one public entry instead of re-implementing the Kit-private ordering, serialization, and digest algorithms.
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- Adds the public skill-family-engineering-kit/profile-spi subpath. It projects the three Profile SPI JSON resources together with the Contracts canonical profile-descriptor.schema.json, and exports schema loaders, verifyProfile, adoption-pin verification, and tightening-only override checks. The data-only verifier fails closed on missing pins and symlink/path escapes and never executes Profile entrypoints.
|
|
11
|
+
- Adds buildProjectionClosure - a pure public builder accepting an array of {path, sha256, mode} members (an explicit type file is also accepted) and returning the canonical plan closure {digestAlgorithm sha256, digest, resourceCount, resources} that compileProjectionPlan accepts verbatim as previousOwnedClosure or externalCandidateClosure; an empty array yields the legal empty closure.
|
|
12
|
+
- The builder shares one normalization and digest source of truth with the compiler closure re-verification - deterministic path.localeCompare ordering, duplicate-path and portable-collision refusal, and the sha256(JSON.stringify(normalizedResources)) byte contract; every refusal fails closed in the existing projection plan input invalid domain (SFC2004 invalid-manifest).
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Keeps the compileProjectionPlan input contract unchanged and the four top-level commands (scaffold, adopt-plan, projection, check) unchanged; every 0.6.0 input still compiles to byte-identical plans. The package version moves in lockstep with the Foundation line while the contracts machine contract stays at 1.6.0.
|
|
17
|
+
|
|
18
|
+
### Upgrade Notes
|
|
19
|
+
|
|
20
|
+
Version 0.7.0 is the projection closure builder line. Callers that previously assembled plan closures locally must import buildProjectionClosure and pin exactly 0.7.0. A plan closure ({path, type, sha256, mode} members) is not the harness computeResourceClosure resource closure ({path, role, exists, sha256} members) - the two shapes and purposes differ and are not interchangeable.
|
|
21
|
+
<!-- release-skill:changelog:end version=0.7.0 locale=en -->
|
|
22
|
+
|
|
23
|
+
|
|
3
24
|
<!-- release-skill:changelog:start version=0.6.0 locale=en baseline=sha256:e84a44b51d513c123ce3c5e91c9e50374c6e899aa021adabe8e44c3ad86eb2b2 -->
|
|
4
25
|
## [0.6.0] - 2026-08-21
|
|
5
26
|
|
package/CHANGELOG.zh-CN.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# 变更日志
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.7.0 locale=zh-CN baseline=sha256:e6070267ab3db289caf998c4539055c3d39dfa16fb5bc7db44689b305fde2e81 -->
|
|
4
|
+
## [0.7.0] - 2026-08-21
|
|
5
|
+
|
|
6
|
+
本版导出公共规范投影闭包 builder buildProjectionClosure(FG-4),调用方经一个公共入口即可构造 compileProjectionPlan 可直接接受的计划闭包,不再复刻 Kit 私有的排序、序列化与摘要算法。
|
|
7
|
+
|
|
8
|
+
### 新增
|
|
9
|
+
|
|
10
|
+
- 新增公共 skill-family-engineering-kit/profile-spi 子路径。它投影三个 Profile SPI JSON 资源与 Contracts canonical profile-descriptor.schema.json,导出 Schema 加载器、verifyProfile、采用 pin 校验和只收紧 overrides 检查。纯数据校验器遇到 pin 缺失、符号链接或路径越界时失败关闭,绝不执行 Profile entrypoint。
|
|
11
|
+
- 新增 buildProjectionClosure:纯函数公共 builder,接受 {path, sha256, mode} 成员数组(可接受显式 type file),返回规范计划闭包 {digestAlgorithm sha256, digest, resourceCount, resources},可原样作为 compileProjectionPlan 的 previousOwnedClosure 或 externalCandidateClosure;空数组返回合法的空闭包。
|
|
12
|
+
- builder 与编译器闭包复验共享同一规范化与摘要事实源:确定性 path.localeCompare 排序、重复路径与便携路径冲突拒绝、sha256(JSON.stringify(normalizedResources)) 字节合同;全部拒绝在既有 projection plan input invalid 领域内失败关闭(SFC2004 invalid-manifest)。
|
|
13
|
+
|
|
14
|
+
### 变更
|
|
15
|
+
|
|
16
|
+
- compileProjectionPlan 入参合同不变,四个顶层命令(scaffold、adopt-plan、projection、check)不变;全部 0.6.0 既有输入仍编译为字节不变的计划。包版本随 Foundation 线锁步,Contracts 机器合同保持 1.6.0。
|
|
17
|
+
|
|
18
|
+
### 升级说明
|
|
19
|
+
|
|
20
|
+
0.7.0 是投影闭包 builder 线。此前在本地组装计划闭包的调用方必须导入 buildProjectionClosure 并精确锁定 0.7.0。计划闭包(成员 {path, type, sha256, mode})不是 harness computeResourceClosure 的资源闭包(成员 {path, role, exists, sha256})——两者形状与用途不同,不能互换。
|
|
21
|
+
<!-- release-skill:changelog:end version=0.7.0 locale=zh-CN -->
|
|
22
|
+
|
|
23
|
+
|
|
3
24
|
<!-- release-skill:changelog:start version=0.6.0 locale=zh-CN baseline=sha256:e48a11bcbdffb317068cb751f914809360aa8f2e2b852b1e436696601f6a2a47 -->
|
|
4
25
|
## [0.6.0] - 2026-08-21
|
|
5
26
|
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# 贡献者公约(Contributor Covenant Code of Conduct)
|
|
2
|
+
|
|
3
|
+
本行为准则采用 Contributor Covenant 2.1 标准文本,来源明确:
|
|
4
|
+
`https://www.contributor-covenant.org/version/2/1/code_of_conduct/`。
|
|
5
|
+
译文与解读以英文原文为准;执行联系方式见文末。
|
|
6
|
+
|
|
7
|
+
## Our Pledge
|
|
8
|
+
|
|
9
|
+
We as members, contributors, and leaders pledge to make participation in our
|
|
10
|
+
community a harassment-free experience for everyone, regardless of age, body
|
|
11
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
12
|
+
identity and expression, level of experience, education, socio-economic status,
|
|
13
|
+
nationality, personal appearance, race, religion, or sexual identity
|
|
14
|
+
and orientation.
|
|
15
|
+
|
|
16
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
17
|
+
diverse, inclusive, and healthy community.
|
|
18
|
+
|
|
19
|
+
## Our Standards
|
|
20
|
+
|
|
21
|
+
Examples of behavior that contributes to a positive environment for our
|
|
22
|
+
community include:
|
|
23
|
+
|
|
24
|
+
* Demonstrating empathy and kindness toward other people
|
|
25
|
+
* Being respectful of differing opinions, viewpoints, and experiences
|
|
26
|
+
* Giving and gracefully accepting constructive feedback
|
|
27
|
+
* Accepting responsibility and apologizing to those affected by our mistakes,
|
|
28
|
+
and learning from the experience
|
|
29
|
+
* Focusing on what is best not just for us as individuals, but for the
|
|
30
|
+
overall community
|
|
31
|
+
|
|
32
|
+
Examples of unacceptable behavior include:
|
|
33
|
+
|
|
34
|
+
* The use of sexualized language or imagery, and sexual attention or
|
|
35
|
+
advances of any kind
|
|
36
|
+
* Trolling, insulting or derogatory comments, and personal or political attacks
|
|
37
|
+
* Public or private harassment
|
|
38
|
+
* Publishing others' private information, such as a physical or email
|
|
39
|
+
address, without their explicit permission
|
|
40
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
|
41
|
+
professional setting
|
|
42
|
+
|
|
43
|
+
## Enforcement Responsibilities
|
|
44
|
+
|
|
45
|
+
Community leaders are responsible for clarifying and enforcing our standards of
|
|
46
|
+
acceptable behavior and will take appropriate and fair corrective action in
|
|
47
|
+
response to any behavior that they deem inappropriate, threatening, offensive,
|
|
48
|
+
or harmful.
|
|
49
|
+
|
|
50
|
+
Community leaders have the right and responsibility to remove, edit, or reject
|
|
51
|
+
comments, commits, code, wiki edits, issues, and other contributions that are
|
|
52
|
+
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
|
53
|
+
decisions when appropriate.
|
|
54
|
+
|
|
55
|
+
## Scope
|
|
56
|
+
|
|
57
|
+
This Code of Conduct applies within all community spaces, and also applies when
|
|
58
|
+
an individual is officially representing the community in public spaces.
|
|
59
|
+
Examples of representing our community include using an official e-mail address,
|
|
60
|
+
posting via an official social media account, or acting as an appointed
|
|
61
|
+
representative at an online or offline event.
|
|
62
|
+
|
|
63
|
+
## Enforcement
|
|
64
|
+
|
|
65
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
66
|
+
reported to the community leaders responsible for enforcement through the
|
|
67
|
+
source repository's private channels (see SECURITY.md for private reporting).
|
|
68
|
+
All complaints will be reviewed and investigated promptly and fairly.
|
|
69
|
+
|
|
70
|
+
All community leaders are obligated to respect the privacy and security of the
|
|
71
|
+
reporter of any incident.
|
|
72
|
+
|
|
73
|
+
## Enforcement Guidelines
|
|
74
|
+
|
|
75
|
+
Community leaders will follow these Community Impact Guidelines in determining
|
|
76
|
+
the consequences for any action they deem in violation of this Code of Conduct:
|
|
77
|
+
|
|
78
|
+
### 1. Correction
|
|
79
|
+
|
|
80
|
+
**Community Impact**: Use of inappropriate language or other behavior deemed
|
|
81
|
+
unprofessional or unwelcome in the community.
|
|
82
|
+
|
|
83
|
+
**Consequence**: A private, written warning from community leaders, providing
|
|
84
|
+
clarity around the nature of the violation and an explanation of why the
|
|
85
|
+
behavior was inappropriate. A public apology may be requested.
|
|
86
|
+
|
|
87
|
+
### 2. Warning
|
|
88
|
+
|
|
89
|
+
**Community Impact**: A violation through a single incident or series
|
|
90
|
+
of actions.
|
|
91
|
+
|
|
92
|
+
**Consequence**: A warning with consequences for continued behavior. No
|
|
93
|
+
interaction with the people involved, including unsolicited interaction with
|
|
94
|
+
those enforcing the Code of Conduct, for a specified period of time. This
|
|
95
|
+
includes avoiding interactions in community spaces as well as external channels
|
|
96
|
+
like social media. Violating these terms may lead to a temporary or
|
|
97
|
+
permanent ban.
|
|
98
|
+
|
|
99
|
+
### 3. Temporary Ban
|
|
100
|
+
|
|
101
|
+
**Community Impact**: A serious violation of community standards, including
|
|
102
|
+
sustained inappropriate behavior.
|
|
103
|
+
|
|
104
|
+
**Consequence**: A temporary ban from any sort of interaction or public
|
|
105
|
+
communication with the community for a specified period of time. No public or
|
|
106
|
+
private interaction with the people involved, including unsolicited interaction
|
|
107
|
+
with those enforcing the Code of Conduct, is allowed during this period.
|
|
108
|
+
Violating these terms may lead to a permanent ban.
|
|
109
|
+
|
|
110
|
+
### 4. Permanent Ban
|
|
111
|
+
|
|
112
|
+
**Community Impact**: Demonstrating a pattern of violation of community
|
|
113
|
+
standards, including sustained inappropriate behavior, harassment of an
|
|
114
|
+
individual, or aggression toward or disparagement of classes of individuals.
|
|
115
|
+
|
|
116
|
+
**Consequence**: A permanent ban from any sort of public interaction within
|
|
117
|
+
the community.
|
|
118
|
+
|
|
119
|
+
## Attribution
|
|
120
|
+
|
|
121
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
|
122
|
+
version 2.1, available at
|
|
123
|
+
`https://www.contributor-covenant.org/version/2/1/code_of_conduct/`.
|
|
124
|
+
|
|
125
|
+
Community Impact Guidelines were inspired by Mozilla's code of conduct
|
|
126
|
+
enforcement ladder.
|
|
127
|
+
|
|
128
|
+
For answers to common questions about this code of conduct, see the FAQ at
|
|
129
|
+
`https://www.contributor-covenant.org/faq`.
|
|
130
|
+
|
|
131
|
+
[homepage]: https://www.contributor-covenant.org
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# 贡献指南(skill-family-engineering-kit)
|
|
2
|
+
|
|
3
|
+
本仓是 `skill-family-engineering-kit` 的公开发布镜像,只承载版本化发布物。开发在私有工作区进行,不在本仓公开。
|
|
4
|
+
|
|
5
|
+
## 问题报告
|
|
6
|
+
|
|
7
|
+
Bug 报告请在本仓 GitHub Issues 提交:https://github.com/ifoohoo/skill-family-engineering-kit/issues
|
|
8
|
+
|
|
9
|
+
提交时请尽量提供:受影响版本、最小复现步骤、预期与实际行为。
|
|
10
|
+
|
|
11
|
+
## 代码贡献
|
|
12
|
+
|
|
13
|
+
未经事先讨论的 Pull Request 不予接受。请先通过 Issue 讨论变更的动机与范围,获得维护者确认后再提交 PR。
|
|
14
|
+
|
|
15
|
+
## 行为准则
|
|
16
|
+
|
|
17
|
+
互动请遵守本仓 CODE_OF_CONDUCT.md。
|
|
18
|
+
|
|
19
|
+
## 安全报告
|
|
20
|
+
|
|
21
|
+
漏洞报告渠道见本仓 SECURITY.md。请走 Private vulnerability reporting,不要以公开 Issue 提交漏洞。
|
|
22
|
+
|
|
23
|
+
## 许可证
|
|
24
|
+
|
|
25
|
+
贡献内容默认按 Apache-2.0 授权,与本包许可证一致。
|
package/README.md
CHANGED
|
@@ -4,29 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
# skill-family-engineering-kit
|
|
6
6
|
|
|
7
|
-
<!-- release-skill:release-version: 0.
|
|
7
|
+
<!-- release-skill:release-version: 0.7.0 -->
|
|
8
8
|
|
|
9
9
|
An engineering toolkit used in development and CI. There are **exactly four** top-level commands, and no fifth:
|
|
10
10
|
|
|
11
11
|
<!-- release-skill:managed:start id=latest-release -->
|
|
12
|
-
**0.
|
|
12
|
+
**0.7.0** (2026-08-21)
|
|
13
13
|
|
|
14
|
-
This release
|
|
14
|
+
This release exports the public canonical projection closure builder buildProjectionClosure (FG-4), so callers construct compileProjectionPlan-ready plan closures through one public entry instead of re-implementing the Kit-private ordering, serialization, and digest algorithms.
|
|
15
15
|
|
|
16
16
|
**Added**
|
|
17
17
|
|
|
18
|
-
- Adds the
|
|
19
|
-
- Adds
|
|
20
|
-
-
|
|
18
|
+
- Adds the public skill-family-engineering-kit/profile-spi subpath. It projects the three Profile SPI JSON resources together with the Contracts canonical profile-descriptor.schema.json, and exports schema loaders, verifyProfile, adoption-pin verification, and tightening-only override checks. The data-only verifier fails closed on missing pins and symlink/path escapes and never executes Profile entrypoints.
|
|
19
|
+
- Adds buildProjectionClosure - a pure public builder accepting an array of {path, sha256, mode} members (an explicit type file is also accepted) and returning the canonical plan closure {digestAlgorithm sha256, digest, resourceCount, resources} that compileProjectionPlan accepts verbatim as previousOwnedClosure or externalCandidateClosure; an empty array yields the legal empty closure.
|
|
20
|
+
- The builder shares one normalization and digest source of truth with the compiler closure re-verification - deterministic path.localeCompare ordering, duplicate-path and portable-collision refusal, and the sha256(JSON.stringify(normalizedResources)) byte contract; every refusal fails closed in the existing projection plan input invalid domain (SFC2004 invalid-manifest).
|
|
21
21
|
|
|
22
22
|
**Changed**
|
|
23
23
|
|
|
24
|
-
-
|
|
25
|
-
- Keeps the four top-level commands (scaffold, adopt-plan, projection, check) unchanged; entries and relock are check sub-actions, not new commands.
|
|
24
|
+
- Keeps the compileProjectionPlan input contract unchanged and the four top-level commands (scaffold, adopt-plan, projection, check) unchanged; every 0.6.0 input still compiles to byte-identical plans. The package version moves in lockstep with the Foundation line while the contracts machine contract stays at 1.6.0.
|
|
26
25
|
|
|
27
26
|
**Upgrade Notes**
|
|
28
27
|
|
|
29
|
-
Version 0.
|
|
28
|
+
Version 0.7.0 is the projection closure builder line. Callers that previously assembled plan closures locally must import buildProjectionClosure and pin exactly 0.7.0. A plan closure ({path, type, sha256, mode} members) is not the harness computeResourceClosure resource closure ({path, role, exists, sha256} members) - the two shapes and purposes differ and are not interchangeable.
|
|
30
29
|
<!-- release-skill:managed:end id=latest-release -->
|
|
31
30
|
|
|
32
31
|
| Command | Purpose | Side effects |
|
|
@@ -47,7 +46,7 @@ Kit is the "engineering stage" layer, depending on the Harness and Contracts. It
|
|
|
47
46
|
## Installation and Minimal Example
|
|
48
47
|
|
|
49
48
|
```sh
|
|
50
|
-
npm install --save-dev skill-family-engineering-kit@0.
|
|
49
|
+
npm install --save-dev skill-family-engineering-kit@0.7.0
|
|
51
50
|
npm exec -- skill-family-kit --help
|
|
52
51
|
npm exec -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
|
|
53
52
|
npm exec -- skill-family-kit adopt-plan --root <repo>
|
|
@@ -55,7 +54,15 @@ npm exec -- skill-family-kit projection --root <repo>
|
|
|
55
54
|
npm exec -- skill-family-kit check --root <repo>
|
|
56
55
|
```
|
|
57
56
|
|
|
58
|
-
The four commands above cover skeleton generation, read-only inventory, managed projection, and diagnostics respectively; a zero-install form is available via `npm exec --package=skill-family-engineering-kit@0.
|
|
57
|
+
The four commands above cover skeleton generation, read-only inventory, managed projection, and diagnostics respectively; a zero-install form is available via `npm exec --package=skill-family-engineering-kit@0.7.0 -- skill-family-kit --help`.
|
|
58
|
+
|
|
59
|
+
### Public Profile SPI
|
|
60
|
+
|
|
61
|
+
The `skill-family-engineering-kit/profile-spi` subpath exposes the stable Profile SPI v2 data surface. It exports `verifyProfile`, `verifyAdoptionDigests`, `assessOverridesPolicy`, `loadSpiDefinition`, `loadExtendedDescriptorSchema`, and `loadRuleBaselineCatalog`.
|
|
62
|
+
|
|
63
|
+
The package carries three SPI JSON resources and the Contracts canonical `profile-descriptor.schema.json`. `profiles/spi` is the only handwritten source; projen mechanically projects those resources and the module into this subpath. The projection changes only the two public package imports and the local schema URL.
|
|
64
|
+
|
|
65
|
+
`verifyProfile({ profileRoot })` is read-only and data-only. It refuses descriptor errors, missing resources, executable entrypoints, symlink/path escapes, core reverse dependencies, unverified adoption pins, and non-tightening overrides with stable `SPE0000` / `SPE1001`–`SPE1007` result codes. It never executes Profile-provided files. The Profile's domain meaning remains owned by the caller.
|
|
59
66
|
|
|
60
67
|
### Report sub-action
|
|
61
68
|
|
package/README.zh-CN.md
CHANGED
|
@@ -5,29 +5,28 @@
|
|
|
5
5
|
|
|
6
6
|
# skill-family-engineering-kit
|
|
7
7
|
|
|
8
|
-
<!-- release-skill:release-version: 0.
|
|
8
|
+
<!-- release-skill:release-version: 0.7.0 -->
|
|
9
9
|
|
|
10
10
|
开发与 CI 阶段使用的工程工具包。**恰好四个**顶层命令,没有第五个:
|
|
11
11
|
|
|
12
12
|
<!-- release-skill:managed:start id=latest-release -->
|
|
13
|
-
**0.
|
|
13
|
+
**0.7.0** (2026-08-21)
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
本版导出公共规范投影闭包 builder buildProjectionClosure(FG-4),调用方经一个公共入口即可构造 compileProjectionPlan 可直接接受的计划闭包,不再复刻 Kit 私有的排序、序列化与摘要算法。
|
|
16
16
|
|
|
17
17
|
**新增**
|
|
18
18
|
|
|
19
|
-
-
|
|
20
|
-
- 新增
|
|
21
|
-
-
|
|
19
|
+
- 新增公共 skill-family-engineering-kit/profile-spi 子路径。它投影三个 Profile SPI JSON 资源与 Contracts canonical profile-descriptor.schema.json,导出 Schema 加载器、verifyProfile、采用 pin 校验和只收紧 overrides 检查。纯数据校验器遇到 pin 缺失、符号链接或路径越界时失败关闭,绝不执行 Profile entrypoint。
|
|
20
|
+
- 新增 buildProjectionClosure:纯函数公共 builder,接受 {path, sha256, mode} 成员数组(可接受显式 type file),返回规范计划闭包 {digestAlgorithm sha256, digest, resourceCount, resources},可原样作为 compileProjectionPlan 的 previousOwnedClosure 或 externalCandidateClosure;空数组返回合法的空闭包。
|
|
21
|
+
- builder 与编译器闭包复验共享同一规范化与摘要事实源:确定性 path.localeCompare 排序、重复路径与便携路径冲突拒绝、sha256(JSON.stringify(normalizedResources)) 字节合同;全部拒绝在既有 projection plan input invalid 领域内失败关闭(SFC2004 invalid-manifest)。
|
|
22
22
|
|
|
23
23
|
**变更**
|
|
24
24
|
|
|
25
|
-
- check
|
|
26
|
-
- 四个顶层命令(scaffold、adopt-plan、projection、check)保持不变;entries 与 relock 是 check 子动作,不是新命令。
|
|
25
|
+
- compileProjectionPlan 入参合同不变,四个顶层命令(scaffold、adopt-plan、projection、check)不变;全部 0.6.0 既有输入仍编译为字节不变的计划。包版本随 Foundation 线锁步,Contracts 机器合同保持 1.6.0。
|
|
27
26
|
|
|
28
27
|
**升级说明**
|
|
29
28
|
|
|
30
|
-
0.
|
|
29
|
+
0.7.0 是投影闭包 builder 线。此前在本地组装计划闭包的调用方必须导入 buildProjectionClosure 并精确锁定 0.7.0。计划闭包(成员 {path, type, sha256, mode})不是 harness computeResourceClosure 的资源闭包(成员 {path, role, exists, sha256})——两者形状与用途不同,不能互换。
|
|
31
30
|
<!-- release-skill:managed:end id=latest-release -->
|
|
32
31
|
|
|
33
32
|
| 命令 | 用途 | 副作用 |
|
|
@@ -48,7 +47,7 @@ Kit 是「工程阶段」层,依赖 Harness 与 Contracts。它只做四件事
|
|
|
48
47
|
## 安装和最小示例
|
|
49
48
|
|
|
50
49
|
```sh
|
|
51
|
-
npm install --save-dev skill-family-engineering-kit@0.
|
|
50
|
+
npm install --save-dev skill-family-engineering-kit@0.7.0
|
|
52
51
|
npm exec -- skill-family-kit --help
|
|
53
52
|
npm exec -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
|
|
54
53
|
npm exec -- skill-family-kit adopt-plan --root <repo>
|
|
@@ -56,7 +55,15 @@ npm exec -- skill-family-kit projection --root <repo>
|
|
|
56
55
|
npm exec -- skill-family-kit check --root <repo>
|
|
57
56
|
```
|
|
58
57
|
|
|
59
|
-
以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.
|
|
58
|
+
以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.7.0 -- skill-family-kit --help`。
|
|
59
|
+
|
|
60
|
+
### 公共 Profile SPI
|
|
61
|
+
|
|
62
|
+
`skill-family-engineering-kit/profile-spi` 子路径提供稳定的 Profile SPI v2 数据表面,导出 `verifyProfile`、`verifyAdoptionDigests`、`assessOverridesPolicy`、`loadSpiDefinition`、`loadExtendedDescriptorSchema` 与 `loadRuleBaselineCatalog`。
|
|
63
|
+
|
|
64
|
+
包内携带三个 SPI JSON 资源与 Contracts canonical `profile-descriptor.schema.json`。`profiles/spi` 是唯一手写真源;projen 将这些资源和模块机械投影到该子路径。投影只修改两个公共包导入和一个本地 Schema URL。
|
|
65
|
+
|
|
66
|
+
`verifyProfile({ profileRoot })` 只读处理纯数据。遇到 descriptor 错误、资源缺失、可执行 entrypoint、符号链接或路径越界、反向依赖公共核心、未验证的采用 pin、未收紧的 overrides 时,以稳定 `SPE0000` / `SPE1001`–`SPE1007` 结果码失败关闭;它不会执行 Profile 提供的文件。Profile 的领域含义仍由调用方负责。
|
|
60
67
|
|
|
61
68
|
### 报告子动作
|
|
62
69
|
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 安全策略(Security Policy)
|
|
2
|
+
|
|
3
|
+
## 支持的版本
|
|
4
|
+
|
|
5
|
+
| 版本 | 安全支持状态 |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| 0.1.x | 当前维护线:接受安全报告 |
|
|
8
|
+
| 0.0.0 | 未发布的内部骨架版本,不在公开支持范围 |
|
|
9
|
+
|
|
10
|
+
安全修复只承诺在最新的 0.1.x 线上提供;更早版本不回移修复。
|
|
11
|
+
|
|
12
|
+
## 报告漏洞
|
|
13
|
+
|
|
14
|
+
请勿通过公开 issue 直接披露未修复的安全漏洞。private workspace 仓永久
|
|
15
|
+
private,不是公开报告渠道;请通过任一 public 发布镜像仓(例如
|
|
16
|
+
`https://github.com/ifoohoo/skill-family-engineering-kit`)在 GitHub 上使用
|
|
17
|
+
**Private vulnerability reporting**(仓库 Security 页签的
|
|
18
|
+
"Report a vulnerability")私下报告。
|
|
19
|
+
|
|
20
|
+
报告时请尽量提供:
|
|
21
|
+
|
|
22
|
+
- 受影响的包与版本(`skill-family-contracts`、`skill-family-harness-node`、
|
|
23
|
+
`skill-family-engineering-kit`);
|
|
24
|
+
- 可复现的最小步骤或概念验证;
|
|
25
|
+
- 影响范围与利用前提。
|
|
26
|
+
|
|
27
|
+
## 处置承诺
|
|
28
|
+
|
|
29
|
+
- 收到报告后先确认受理,再按影响面排期修复;
|
|
30
|
+
- 修复发布前不公开披露细节;
|
|
31
|
+
- 修复随下一个补丁版本发布,并在该版本的变更记录中说明。
|
|
32
|
+
|
|
33
|
+
本文件只描述漏洞报告渠道与支持版本;实时发布状态不属于本文件范围。
|
package/docs/.nojekyll
ADDED
|
File without changes
|