@event4u/agent-config 9.12.0 → 9.13.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 (130) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +80 -256
  3. package/README.md +1 -1
  4. package/dist/agent-src/rules/active-remediation.md +0 -2
  5. package/dist/agent-src/rules/architecture.md +0 -1
  6. package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -4
  7. package/dist/agent-src/rules/autonomous-execution.md +1 -2
  8. package/dist/agent-src/rules/broken-access-control.md +0 -2
  9. package/dist/agent-src/rules/code-comment-discipline.md +0 -3
  10. package/dist/agent-src/rules/code-provenance.md +0 -3
  11. package/dist/agent-src/rules/communication-through-line.md +2 -3
  12. package/dist/agent-src/rules/content-quoting-floor.md +0 -2
  13. package/dist/agent-src/rules/context-hygiene.md +1 -3
  14. package/dist/agent-src/rules/decision-revisit-gate.md +0 -2
  15. package/dist/agent-src/rules/design-fidelity.md +29 -0
  16. package/dist/agent-src/rules/domain-adoption-policy.md +0 -3
  17. package/dist/agent-src/rules/downstream-changes.md +10 -1
  18. package/dist/agent-src/rules/external-reference-deep-dive.md +0 -7
  19. package/dist/agent-src/rules/fast-path-marker-visibility.md +0 -1
  20. package/dist/agent-src/rules/git-history-discipline.md +0 -7
  21. package/dist/agent-src/rules/guidelines.md +0 -2
  22. package/dist/agent-src/rules/improve-before-implement.md +4 -2
  23. package/dist/agent-src/rules/invite-challenge.md +0 -4
  24. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -2
  25. package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
  26. package/dist/agent-src/rules/minimal-safe-diff.md +2 -2
  27. package/dist/agent-src/rules/missing-tool-handling.md +0 -1
  28. package/dist/agent-src/rules/no-attribution-footers.md +0 -3
  29. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +8 -5
  30. package/dist/agent-src/rules/no-pr-progress-comments.md +1 -3
  31. package/dist/agent-src/rules/no-roadmap-references.md +0 -2
  32. package/dist/agent-src/rules/output-discipline.md +0 -1
  33. package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -2
  34. package/dist/agent-src/rules/preservation-guard.md +0 -3
  35. package/dist/agent-src/rules/role-mode-adherence.md +0 -1
  36. package/dist/agent-src/rules/secret-vcs-guard.md +0 -2
  37. package/dist/agent-src/rules/senior-engineering-discipline.md +0 -2
  38. package/dist/agent-src/rules/session-canary.md +0 -2
  39. package/dist/agent-src/rules/size-enforcement.md +0 -5
  40. package/dist/agent-src/rules/source-confidentiality.md +0 -3
  41. package/dist/agent-src/rules/source-discovery-gate.md +0 -2
  42. package/dist/agent-src/rules/think-before-action.md +3 -3
  43. package/dist/agent-src/rules/token-budget-discipline.md +0 -1
  44. package/dist/agent-src/rules/token-efficiency.md +1 -2
  45. package/dist/agent-src/rules/tool-safety.md +0 -1
  46. package/dist/agent-src/rules/user-interaction.md +0 -3
  47. package/dist/agent-src/rules/user-interrupt-priority.md +0 -1
  48. package/dist/agent-src/skills/agent-docs-writing/SKILL.md +8 -0
  49. package/dist/agent-src/skills/analysis-skill-router/SKILL.md +55 -86
  50. package/dist/agent-src/skills/character-consistency/SKILL.md +7 -4
  51. package/dist/agent-src/skills/decision-record/SKILL.md +8 -0
  52. package/dist/agent-src/skills/design-review/SKILL.md +11 -0
  53. package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +8 -0
  54. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +34 -3
  55. package/dist/agent-src/skills/fe-design/SKILL.md +10 -0
  56. package/dist/agent-src/skills/motion-choreographer/SKILL.md +7 -4
  57. package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +201 -0
  58. package/dist/agent-src/skills/performance/SKILL.md +14 -0
  59. package/dist/agent-src/skills/pixar-storyteller/SKILL.md +8 -5
  60. package/dist/agent-src/skills/scene-expander/SKILL.md +9 -6
  61. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +10 -0
  62. package/dist/agent-src/skills/universal-project-analysis/SKILL.md +14 -37
  63. package/dist/agent-src/skills/video-director/SKILL.md +9 -6
  64. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  65. package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +154 -13
  66. package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +118 -0
  67. package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +40 -0
  68. package/dist/agent-src/templates/scripts/work_engine/state.ts +55 -0
  69. package/dist/discovery/deprecation-report.md +1 -1
  70. package/dist/discovery/discovery-manifest.json +89 -67
  71. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  72. package/dist/discovery/discovery-manifest.summary.md +3 -3
  73. package/dist/discovery/orphan-report.md +1 -1
  74. package/dist/discovery/packs.json +6 -5
  75. package/dist/discovery/trust-report.md +2 -2
  76. package/dist/discovery/workspaces.json +5 -4
  77. package/dist/hooks/dispatch.js +174 -13
  78. package/dist/mcp/registry-manifest.json +3 -3
  79. package/dist/mcp/server.json +2 -2
  80. package/dist/mcp/server.mjs +750 -507
  81. package/dist/router.json +1 -1
  82. package/dist/scripts/condense.js +2 -2
  83. package/docs/MIGRATION.md +1 -1
  84. package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +71 -0
  85. package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +24 -1
  86. package/docs/guidelines/code-clarity.md +9 -2
  87. package/docs/guidelines/design-fidelity-mechanics.md +44 -0
  88. package/llms.txt +63 -27
  89. package/package.json +4 -4
  90. package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +154 -13
  91. package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +118 -0
  92. package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +40 -0
  93. package/src/agent-src/templates/scripts/work_engine/state.ts +55 -0
  94. package/src/config/agent-settings.template.yml +8 -0
  95. package/src/scripts/_lib/counted_probe.ts +142 -0
  96. package/src/scripts/_lib/overbuild_lens_contract.ts +196 -0
  97. package/src/scripts/_lib/release_scope.ts +207 -0
  98. package/src/scripts/ai_council/stance_tally.ts +37 -2
  99. package/src/scripts/audit_auto_rules.ts +9 -9
  100. package/src/scripts/audit_likelihood.ts +3 -3
  101. package/src/scripts/audit_overlap.ts +2 -2
  102. package/src/scripts/audit_skill_overlap.ts +233 -95
  103. package/src/scripts/audit_skill_overlap_allowlist.json +4 -0
  104. package/src/scripts/build_proof.ts +15 -1
  105. package/src/scripts/check_dependency_floors.ts +16 -6
  106. package/src/scripts/check_gate_coverage.ts +6 -6
  107. package/src/scripts/check_kernel_rule_bundle.ts +5 -4
  108. package/src/scripts/check_token_quality_golden.ts +0 -18
  109. package/src/scripts/code_graph/loader.ts +35 -6
  110. package/src/scripts/compile_router.ts +3 -8
  111. package/src/scripts/condense.ts +2 -2
  112. package/src/scripts/explain_run.ts +0 -1
  113. package/src/scripts/generate_pack_manifests.ts +3 -20
  114. package/src/scripts/hooks/block_kernel_rule_writes.ts +145 -10
  115. package/src/scripts/hooks/block_no_verify.ts +101 -0
  116. package/src/scripts/lint_agent_security.ts +5 -4
  117. package/src/scripts/lint_framework_leakage_allowlist.json +2 -2
  118. package/src/scripts/lint_regression.ts +92 -1
  119. package/src/scripts/lint_skill_descriptions.ts +93 -5
  120. package/src/scripts/project_thin_rules.ts +2 -2
  121. package/src/scripts/release.ts +107 -3
  122. package/src/scripts/resolve_lint_scope.ts +53 -0
  123. package/src/scripts/router_telemetry.ts +0 -5
  124. package/src/scripts/runtime_dispatcher.ts +40 -0
  125. package/src/scripts/schemas/pack.schema.json +1 -5
  126. package/src/scripts/schemas/rule.schema.json +1 -2
  127. package/src/scripts/self_review_gate.ts +15 -73
  128. package/src/scripts/skill_linter.ts +93 -11
  129. package/src/scripts/sweep_dead_scan_roots.ts +550 -0
  130. package/src/scripts/trigger_coverage.ts +11 -37
@@ -1,6 +1,6 @@
1
1
  # Discovery — Trust Report
2
2
 
3
- - Generated: `2026-08-01T06:24:46Z`
3
+ - Generated: `2026-08-02T08:46:05Z`
4
4
  - Workspaces tracked: **10**
5
5
  - Human-review-required artefacts: **3**
6
6
 
@@ -10,7 +10,7 @@
10
10
  |---|---|---|---|---|---|
11
11
  | `agent-config-maintainer` | 317 | 0 | 3 | 0 | 0 |
12
12
  | `construction` | 25 | 0 | 0 | 0 | 0 |
13
- | `engineering` | 178 | 62 | 3 | 0 | 0 |
13
+ | `engineering` | 179 | 62 | 3 | 0 | 0 |
14
14
  | `finance` | 28 | 4 | 0 | 1 | 0 |
15
15
  | `founder` | 32 | 0 | 1 | 1 | 0 |
16
16
  | `gtm` | 30 | 13 | 1 | 0 | 0 |
@@ -1,10 +1,10 @@
1
1
  {
2
- "checksum": "sha256:335f47a33f49c3f6151d562ba524c3082e4e15055cc97b6f89e5170e507890df",
3
- "generated_at": "2026-08-01T06:24:46Z",
2
+ "checksum": "sha256:74659b35e73b3393f9513080eef4952f14c11925462a587d1dec82af830345d8",
3
+ "generated_at": "2026-08-02T08:46:05Z",
4
4
  "scanner_version": "c24312e116f8",
5
5
  "workspaces": [
6
6
  {
7
- "artefact_count": 198,
7
+ "artefact_count": 199,
8
8
  "default_packs": [
9
9
  "engineering-base",
10
10
  "git"
@@ -29,7 +29,7 @@
29
29
  ],
30
30
  "packs": [
31
31
  {
32
- "artefact_count": 116,
32
+ "artefact_count": 117,
33
33
  "artefacts": [
34
34
  "src/domains/engineering-base/mission/upgrade/command.md",
35
35
  "src/rules/active-remediation.md",
@@ -108,6 +108,7 @@
108
108
  "src/skills/mobile-e2e-strategy/SKILL.md",
109
109
  "src/skills/multi-tenancy/SKILL.md",
110
110
  "src/skills/openapi/SKILL.md",
111
+ "src/skills/overbuild-review-lens/SKILL.md",
111
112
  "src/skills/performance-analysis/SKILL.md",
112
113
  "src/skills/performance/SKILL.md",
113
114
  "src/skills/playwright-architect/SKILL.md",
@@ -17175,6 +17175,27 @@ var _SHELL_SEPARATORS = /* @__PURE__ */ new Set(["&&", "||", ";", "|"]);
17175
17175
  var _NO_VERIFY_FLAGS = /* @__PURE__ */ new Set(["--no-verify"]);
17176
17176
  var _NO_VERIFY_SHORT = /* @__PURE__ */ new Set(["-n"]);
17177
17177
  var _HOOKS_PATH_RE = /^core\.hooksPath\s*=/i;
17178
+ var _HOOKS_PATH_KEY_RE = /^core\.hooksPath$/i;
17179
+ var _GIT_GLOBAL_OPTS_WITH_VALUE = /* @__PURE__ */ new Set([
17180
+ "-C",
17181
+ "-c",
17182
+ "--config",
17183
+ "--git-dir",
17184
+ "--work-tree",
17185
+ "--namespace",
17186
+ "--exec-path",
17187
+ "--super-prefix"
17188
+ ]);
17189
+ var _CONFIG_READ_OR_RESTORE = /* @__PURE__ */ new Set([
17190
+ "--get",
17191
+ "--get-all",
17192
+ "--get-regexp",
17193
+ "--get-urlmatch",
17194
+ "--list",
17195
+ "-l",
17196
+ "--unset",
17197
+ "--unset-all"
17198
+ ]);
17178
17199
  var ShlexError = class extends Error {
17179
17200
  };
17180
17201
  function shlexSplit(s) {
@@ -17285,7 +17306,53 @@ function _git_base(tokens) {
17285
17306
  }
17286
17307
  return null;
17287
17308
  }
17309
+ function _is_config_hookspath_write(git_tokens) {
17310
+ const rest = git_tokens.slice(1);
17311
+ let subIdx = -1;
17312
+ for (let k = 0; k < rest.length; k += 1) {
17313
+ const tok = rest[k];
17314
+ if (!tok.startsWith("-")) {
17315
+ subIdx = k;
17316
+ break;
17317
+ }
17318
+ if (_GIT_GLOBAL_OPTS_WITH_VALUE.has(tok)) {
17319
+ k += 1;
17320
+ }
17321
+ }
17322
+ if (subIdx === -1 || rest[subIdx] !== "config") {
17323
+ return [false, ""];
17324
+ }
17325
+ const args = rest.slice(subIdx + 1);
17326
+ if (args.some((t) => _CONFIG_READ_OR_RESTORE.has(t))) {
17327
+ return [false, ""];
17328
+ }
17329
+ for (let k = 0; k < args.length; k += 1) {
17330
+ const tok = args[k];
17331
+ if (_HOOKS_PATH_RE.test(tok)) {
17332
+ return [
17333
+ true,
17334
+ `'git config ${tok}' disables git hooks via hooksPath (git-history-discipline)`
17335
+ ];
17336
+ }
17337
+ if (!_HOOKS_PATH_KEY_RE.test(tok)) {
17338
+ continue;
17339
+ }
17340
+ const next = args.slice(k + 1).find((t) => !t.startsWith("-"));
17341
+ if (next !== void 0) {
17342
+ return [
17343
+ true,
17344
+ `'git config ${tok} ${next}' disables git hooks via hooksPath (git-history-discipline)`
17345
+ ];
17346
+ }
17347
+ return [false, ""];
17348
+ }
17349
+ return [false, ""];
17350
+ }
17288
17351
  function _is_blocked(git_tokens) {
17352
+ const [cfgBlocked, cfgReason] = _is_config_hookspath_write(git_tokens);
17353
+ if (cfgBlocked) {
17354
+ return [cfgBlocked, cfgReason];
17355
+ }
17289
17356
  let i = 1;
17290
17357
  while (i < git_tokens.length) {
17291
17358
  const tok = git_tokens[i];
@@ -17554,32 +17621,126 @@ function targets_kernel_rule(filePath) {
17554
17621
  if (segments.length === 0) {
17555
17622
  return null;
17556
17623
  }
17557
- const basename5 = segments[segments.length - 1];
17558
- if (!is_kernel_rule(basename5)) {
17624
+ const basename6 = segments[segments.length - 1];
17625
+ if (!is_kernel_rule(basename6)) {
17559
17626
  return null;
17560
17627
  }
17561
17628
  const dirSegments = segments.slice(0, -1);
17562
17629
  if (!dirSegments.includes("rules")) {
17563
17630
  return null;
17564
17631
  }
17565
- return basename5.replace(/\.md$/, "");
17632
+ return basename6.replace(/\.md$/, "");
17633
+ }
17634
+ var _MUTATOR_VERBS = /* @__PURE__ */ new Set([
17635
+ "sed",
17636
+ "tee",
17637
+ "truncate",
17638
+ "rm",
17639
+ "shred"
17640
+ ]);
17641
+ var _DEST_LAST_VERBS = /* @__PURE__ */ new Set(["mv", "cp", "install", "rsync"]);
17642
+ function _bash_targets_kernel_rule(command) {
17643
+ const tokens = command.split(/\s+/).filter((t) => t.length > 0);
17644
+ const stripped = tokens.map((t) => t.replace(/^['"]|['"]$/g, ""));
17645
+ const ruleOf = (t) => targets_kernel_rule(t);
17646
+ if (!stripped.some((t) => ruleOf(t) !== null)) {
17647
+ return null;
17648
+ }
17649
+ for (let i = 0; i < stripped.length; i += 1) {
17650
+ const tok = stripped[i];
17651
+ const inline = /^>{1,2}(.+)$/.exec(tok);
17652
+ if (inline) {
17653
+ const r = ruleOf(inline[1]);
17654
+ if (r !== null) {
17655
+ return r;
17656
+ }
17657
+ }
17658
+ if (tok === ">" || tok === ">>") {
17659
+ const next = stripped[i + 1];
17660
+ if (typeof next === "string") {
17661
+ const r = ruleOf(next);
17662
+ if (r !== null) {
17663
+ return r;
17664
+ }
17665
+ }
17666
+ }
17667
+ }
17668
+ const verbs = /* @__PURE__ */ new Set();
17669
+ let prevWasSeparator = true;
17670
+ for (const tok of stripped) {
17671
+ if (["&&", "||", ";", "|"].includes(tok)) {
17672
+ prevWasSeparator = true;
17673
+ continue;
17674
+ }
17675
+ if (prevWasSeparator && !tok.startsWith("-")) {
17676
+ verbs.add(path32.basename(tok));
17677
+ prevWasSeparator = false;
17678
+ }
17679
+ }
17680
+ const sedInPlace = verbs.has("sed") && stripped.some((t) => /^-i/.test(t));
17681
+ for (const verb of verbs) {
17682
+ if (verb === "sed" && !sedInPlace) {
17683
+ continue;
17684
+ }
17685
+ if (_MUTATOR_VERBS.has(verb)) {
17686
+ const hit = stripped.map(ruleOf).find((r) => r !== null);
17687
+ if (hit !== void 0 && hit !== null) {
17688
+ return hit;
17689
+ }
17690
+ }
17691
+ if (_DEST_LAST_VERBS.has(verb)) {
17692
+ const last = stripped[stripped.length - 1];
17693
+ const r = ruleOf(last);
17694
+ if (r !== null) {
17695
+ return r;
17696
+ }
17697
+ }
17698
+ }
17699
+ return null;
17566
17700
  }
17567
17701
  function check_envelope(envelope) {
17568
17702
  const { tool, paths } = _extract(envelope);
17569
- if (!tool || !EDIT_TOOLS.has(tool)) {
17703
+ if (!tool) {
17570
17704
  return [false, ""];
17571
17705
  }
17572
- for (const p of paths) {
17573
- const ruleName = targets_kernel_rule(p);
17574
- if (ruleName !== null) {
17575
- return [
17576
- true,
17577
- `kernel rule ${ruleName} is immutable \u2014 tighten-only via the override exception registry; see docs/contracts/kernel-membership.md`
17578
- ];
17706
+ const deny = (ruleName) => [
17707
+ true,
17708
+ `kernel rule ${ruleName} is immutable \u2014 tighten-only via the override exception registry; see docs/contracts/kernel-membership.md`
17709
+ ];
17710
+ if (EDIT_TOOLS.has(tool)) {
17711
+ for (const p of paths) {
17712
+ const ruleName = targets_kernel_rule(p);
17713
+ if (ruleName !== null) {
17714
+ return deny(ruleName);
17715
+ }
17716
+ }
17717
+ return [false, ""];
17718
+ }
17719
+ if (COMMAND_TOOLS.has(tool)) {
17720
+ const cmd = _extract_command3(envelope);
17721
+ if (cmd !== null) {
17722
+ const ruleName = _bash_targets_kernel_rule(cmd);
17723
+ if (ruleName !== null) {
17724
+ return deny(ruleName);
17725
+ }
17579
17726
  }
17580
17727
  }
17581
17728
  return [false, ""];
17582
17729
  }
17730
+ function _extract_command3(envelope) {
17731
+ const payload = _isObject6(envelope["payload"]) ? envelope["payload"] : envelope;
17732
+ const ti = _isObject6(payload["tool_input"]) ? payload["tool_input"] : _isObject6(envelope["tool_input"]) ? envelope["tool_input"] : null;
17733
+ for (const src of [ti, payload]) {
17734
+ if (src === null) {
17735
+ continue;
17736
+ }
17737
+ const v = src["command"];
17738
+ if (typeof v === "string" && v) {
17739
+ return v;
17740
+ }
17741
+ }
17742
+ return null;
17743
+ }
17583
17744
  function _asObject2(v) {
17584
17745
  return _isObject6(v) ? v : null;
17585
17746
  }
@@ -17833,7 +17994,7 @@ function rtk_available(env = process.env) {
17833
17994
  }
17834
17995
  return false;
17835
17996
  }
17836
- function _extract_command3(envelope) {
17997
+ function _extract_command4(envelope) {
17837
17998
  const payload = _isObject7(envelope["payload"]) ? envelope["payload"] : {};
17838
17999
  const tool_input = _isObject7(payload["tool_input"]) ? payload["tool_input"] : {};
17839
18000
  for (const src of [tool_input["command"], payload["command"], envelope["command"]]) {
@@ -17886,7 +18047,7 @@ function main24() {
17886
18047
  if (!_enabled2(root)) return EXIT_ALLOW5;
17887
18048
  if (!rtk_available()) return EXIT_ALLOW5;
17888
18049
  if (detectRtkCached().identity !== "token-killer") return EXIT_ALLOW5;
17889
- const command = _extract_command3(envelope);
18050
+ const command = _extract_command4(envelope);
17890
18051
  if (!command) return EXIT_ALLOW5;
17891
18052
  const verdict = classify(command);
17892
18053
  if (!verdict.eligible) return EXIT_ALLOW5;
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "discovery": {
3
- "artefact_count": 592,
3
+ "artefact_count": 593,
4
4
  "scanner_version": "c24312e116f8"
5
5
  },
6
- "generated_at": "2026-08-01",
6
+ "generated_at": "2026-08-02",
7
7
  "package": {
8
8
  "description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) \u2014 every claim machine-checked, including \"zero runtime daemon\".",
9
9
  "homepage": "https://event4u-app.github.io/agent-config",
10
10
  "name": "@event4u/agent-config",
11
11
  "repository": "https://github.com/event4u-app/agent-config",
12
- "version": "9.12.0"
12
+ "version": "9.13.0"
13
13
  },
14
14
  "registries": [
15
15
  {
@@ -9,12 +9,12 @@
9
9
  "transport": {
10
10
  "type": "stdio"
11
11
  },
12
- "version": "9.12.0"
12
+ "version": "9.13.0"
13
13
  }
14
14
  ],
15
15
  "repository": {
16
16
  "source": "github",
17
17
  "url": "https://github.com/event4u-app/agent-config"
18
18
  },
19
- "version": "9.12.0"
19
+ "version": "9.13.0"
20
20
  }