@hasna/skills 0.10.27 → 0.10.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2276,7 +2276,8 @@ materialization; it does not infer the installed version or enable cached skills
2276
2276
 
2277
2277
  ### Reviewing Codex inference and local MCP settings
2278
2278
 
2279
- `codex-settings-v3` reviews tolerate model/effort/verbosity/service-tier changes
2279
+ `codex-settings-v3` reviews tolerate model/effort/verbosity/service-tier changes,
2280
+ and root/profile `personality` values `none`, `friendly`, or `pragmatic`,
2280
2281
  and typed ordinary local stdio MCP configuration updates. The local MCP catalog
2281
2282
  is separate from native skill discovery; MCP servers can still supply tool
2282
2283
  context and instructions. This witness does not authenticate server responses.
@@ -2285,6 +2286,11 @@ skills/plugins/hooks, reserved Apps MCP servers and unknown fields stay bound.
2285
2286
  HTTP, OAuth, remote-environment and unsupported MCP layouts retain their full
2286
2287
  witness. V1/V2 reviews retain their original digest meaning.
2287
2288
 
2289
+ The personality extension leaves existing V3 digests without that field unchanged.
2290
+ A stored review that included personality requires a fresh explicit review before
2291
+ its changed digest can be adopted. Unknown values and other personality fields
2292
+ (including `features.personality`) remain refused or bound.
2293
+
2288
2294
  Capture a new review with `skills hook witness --kind codex-settings-v3 --path
2289
2295
  /absolute/path/config.toml`. To migrate an existing raw, V1 or V2 review, preserve
2290
2296
  and read back its exact reviewed configuration, then use `skills hook
package/bin/index.js CHANGED
@@ -36868,7 +36868,7 @@ var package_default;
36868
36868
  var init_package = __esm(() => {
36869
36869
  package_default = {
36870
36870
  name: "@hasna/skills",
36871
- version: "0.10.27",
36871
+ version: "0.10.28",
36872
36872
  description: "Skills library for AI coding agents",
36873
36873
  type: "module",
36874
36874
  bin: {
@@ -51915,12 +51915,14 @@ function disablesOneSkill(entry) {
51915
51915
  return selector.length === 1 && typeof entry[selector[0]] === "string" && entry[selector[0]].length > 0;
51916
51916
  }
51917
51917
  function inference(target, version) {
51918
- const keys2 = version === 3 ? [...INFERENCE, "service_tier", "plan_mode_reasoning_effort"] : INFERENCE;
51918
+ const keys2 = version === 3 ? [...INFERENCE, "service_tier", "plan_mode_reasoning_effort", "personality"] : INFERENCE;
51919
51919
  for (const key of keys2)
51920
51920
  if (Object.hasOwn(target, key)) {
51921
51921
  const value = target[key];
51922
51922
  if (key === "model")
51923
51923
  need4(typeof value === "string" && MODEL.test(value));
51924
+ else if (key === "personality")
51925
+ need4(typeof value === "string" && ["none", "friendly", "pragmatic"].includes(value));
51924
51926
  else if (version === 3 && key !== "model_verbosity") {
51925
51927
  need4(typeof value === "string" && value.length <= 128 && !/[\x00-\x1f\x7f]/.test(value));
51926
51928
  if (key !== "service_tier")
package/bin/mcp.js CHANGED
@@ -20019,7 +20019,7 @@ var package_default;
20019
20019
  var init_package = __esm(() => {
20020
20020
  package_default = {
20021
20021
  name: "@hasna/skills",
20022
- version: "0.10.27",
20022
+ version: "0.10.28",
20023
20023
  description: "Skills library for AI coding agents",
20024
20024
  type: "module",
20025
20025
  bin: {
@@ -47926,12 +47926,14 @@ function disablesOneSkill(entry) {
47926
47926
  return selector.length === 1 && typeof entry[selector[0]] === "string" && entry[selector[0]].length > 0;
47927
47927
  }
47928
47928
  function inference(target, version2) {
47929
- const keys = version2 === 3 ? [...INFERENCE, "service_tier", "plan_mode_reasoning_effort"] : INFERENCE;
47929
+ const keys = version2 === 3 ? [...INFERENCE, "service_tier", "plan_mode_reasoning_effort", "personality"] : INFERENCE;
47930
47930
  for (const key of keys)
47931
47931
  if (Object.hasOwn(target, key)) {
47932
47932
  const value = target[key];
47933
47933
  if (key === "model")
47934
47934
  need4(typeof value === "string" && MODEL.test(value));
47935
+ else if (key === "personality")
47936
+ need4(typeof value === "string" && ["none", "friendly", "pragmatic"].includes(value));
47935
47937
  else if (version2 === 3 && key !== "model_verbosity") {
47936
47938
  need4(typeof value === "string" && value.length <= 128 && !/[\x00-\x1f\x7f]/.test(value));
47937
47939
  if (key !== "service_tier")
package/bin/migrate.js CHANGED
@@ -7,7 +7,7 @@ import { join as join5 } from "path";
7
7
  // package.json
8
8
  var package_default = {
9
9
  name: "@hasna/skills",
10
- version: "0.10.27",
10
+ version: "0.10.28",
11
11
  description: "Skills library for AI coding agents",
12
12
  type: "module",
13
13
  bin: {
package/bin/server.js CHANGED
@@ -24122,7 +24122,7 @@ var init_dist_es9 = __esm(() => {
24122
24122
  // package.json
24123
24123
  var package_default = {
24124
24124
  name: "@hasna/skills",
24125
- version: "0.10.27",
24125
+ version: "0.10.28",
24126
24126
  description: "Skills library for AI coding agents",
24127
24127
  type: "module",
24128
24128
  bin: {
package/bin/worker.js CHANGED
@@ -24125,7 +24125,7 @@ import { randomUUID as randomUUID6 } from "crypto";
24125
24125
  // package.json
24126
24126
  var package_default = {
24127
24127
  name: "@hasna/skills",
24128
- version: "0.10.27",
24128
+ version: "0.10.28",
24129
24129
  description: "Skills library for AI coding agents",
24130
24130
  type: "module",
24131
24131
  bin: {
package/dist/index.js CHANGED
@@ -10914,7 +10914,7 @@ function replaceSkillSession(expected, replacement, plan, options = {}, beforeCo
10914
10914
  // package.json
10915
10915
  var package_default = {
10916
10916
  name: "@hasna/skills",
10917
- version: "0.10.27",
10917
+ version: "0.10.28",
10918
10918
  description: "Skills library for AI coding agents",
10919
10919
  type: "module",
10920
10920
  bin: {
@@ -14050,12 +14050,14 @@ function disablesOneSkill(entry) {
14050
14050
  return selector.length === 1 && typeof entry[selector[0]] === "string" && entry[selector[0]].length > 0;
14051
14051
  }
14052
14052
  function inference(target, version) {
14053
- const keys = version === 3 ? [...INFERENCE, "service_tier", "plan_mode_reasoning_effort"] : INFERENCE;
14053
+ const keys = version === 3 ? [...INFERENCE, "service_tier", "plan_mode_reasoning_effort", "personality"] : INFERENCE;
14054
14054
  for (const key of keys)
14055
14055
  if (Object.hasOwn(target, key)) {
14056
14056
  const value = target[key];
14057
14057
  if (key === "model")
14058
14058
  need4(typeof value === "string" && MODEL.test(value));
14059
+ else if (key === "personality")
14060
+ need4(typeof value === "string" && ["none", "friendly", "pragmatic"].includes(value));
14059
14061
  else if (version === 3 && key !== "model_verbosity") {
14060
14062
  need4(typeof value === "string" && value.length <= 128 && !/[\x00-\x1f\x7f]/.test(value));
14061
14063
  if (key !== "service_tier")
package/dist/sdk/index.js CHANGED
@@ -32373,7 +32373,7 @@ var init_event_sink = __esm(() => {
32373
32373
  // package.json
32374
32374
  var package_default = {
32375
32375
  name: "@hasna/skills",
32376
- version: "0.10.27",
32376
+ version: "0.10.28",
32377
32377
  description: "Skills library for AI coding agents",
32378
32378
  type: "module",
32379
32379
  bin: {
@@ -38995,12 +38995,14 @@ function disablesOneSkill(entry) {
38995
38995
  return selector.length === 1 && typeof entry[selector[0]] === "string" && entry[selector[0]].length > 0;
38996
38996
  }
38997
38997
  function inference(target, version) {
38998
- const keys2 = version === 3 ? [...INFERENCE, "service_tier", "plan_mode_reasoning_effort"] : INFERENCE;
38998
+ const keys2 = version === 3 ? [...INFERENCE, "service_tier", "plan_mode_reasoning_effort", "personality"] : INFERENCE;
38999
38999
  for (const key of keys2)
39000
39000
  if (Object.hasOwn(target, key)) {
39001
39001
  const value = target[key];
39002
39002
  if (key === "model")
39003
39003
  need3(typeof value === "string" && MODEL.test(value));
39004
+ else if (key === "personality")
39005
+ need3(typeof value === "string" && ["none", "friendly", "pragmatic"].includes(value));
39004
39006
  else if (version === 3 && key !== "model_verbosity") {
39005
39007
  need3(typeof value === "string" && value.length <= 128 && !/[\x00-\x1f\x7f]/.test(value));
39006
39008
  if (key !== "service_tier")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/skills",
3
- "version": "0.10.27",
3
+ "version": "0.10.28",
4
4
  "description": "Skills library for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {