@event4u/agent-config 9.17.0 → 9.18.1

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 (131) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +122 -171
  3. package/dist/agent-src/commands/challenge-me/vision.md +5 -0
  4. package/dist/agent-src/commands/evals/rule-compliance-audit.json +46 -0
  5. package/dist/agent-src/commands/feature/plan.md +20 -0
  6. package/dist/agent-src/commands/feature/roadmap.md +19 -0
  7. package/dist/agent-src/commands/pr/create.md +29 -0
  8. package/dist/agent-src/commands/roadmap/create.md +29 -0
  9. package/dist/agent-src/commands/rule-compliance-audit.md +28 -5
  10. package/dist/agent-src/contexts/execution/plan-confidence-gate.md +133 -0
  11. package/dist/agent-src/rules/active-remediation.md +2 -0
  12. package/dist/agent-src/rules/architecture.md +2 -0
  13. package/dist/agent-src/rules/augment-edit-discipline.md +2 -0
  14. package/dist/agent-src/rules/brand-consistency.md +10 -62
  15. package/dist/agent-src/rules/brand-source-of-truth.md +62 -11
  16. package/dist/agent-src/rules/broken-access-control.md +4 -0
  17. package/dist/agent-src/rules/cli-output-handling.md +5 -0
  18. package/dist/agent-src/rules/code-comment-discipline.md +3 -0
  19. package/dist/agent-src/rules/commit-conventions.md +2 -0
  20. package/dist/agent-src/rules/cross-source-consistency.md +3 -0
  21. package/dist/agent-src/rules/design-fidelity.md +2 -0
  22. package/dist/agent-src/rules/doc-screenshot-hygiene.md +2 -0
  23. package/dist/agent-src/rules/docker-commands.md +4 -0
  24. package/dist/agent-src/rules/domain-adoption-policy.md +2 -0
  25. package/dist/agent-src/rules/domain-safety-disclaimer.md +5 -2
  26. package/dist/agent-src/rules/engineering-safety-floor.md +2 -0
  27. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +9 -0
  28. package/dist/agent-src/rules/image-likeness-and-rights.md +4 -0
  29. package/dist/agent-src/rules/improve-before-implement.md +4 -0
  30. package/dist/agent-src/rules/laravel-routing.md +4 -0
  31. package/dist/agent-src/rules/legal-safety-floor.md +3 -0
  32. package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -0
  33. package/dist/agent-src/rules/media-governance-routing.md +5 -0
  34. package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
  35. package/dist/agent-src/rules/no-roadmap-references.md +2 -0
  36. package/dist/agent-src/rules/notes-first-reasoning.md +2 -0
  37. package/dist/agent-src/rules/php-coding.md +2 -0
  38. package/dist/agent-src/rules/prefer-enums-over-literals.md +3 -0
  39. package/dist/agent-src/rules/provider-lifecycle-discipline.md +5 -0
  40. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +2 -0
  41. package/dist/agent-src/rules/roadmap-progress-sync.md +2 -0
  42. package/dist/agent-src/rules/rule-type-governance.md +2 -0
  43. package/dist/agent-src/rules/scale-discipline.md +3 -0
  44. package/dist/agent-src/rules/secret-vcs-guard.md +2 -0
  45. package/dist/agent-src/rules/security-sensitive-stop.md +9 -2
  46. package/dist/agent-src/rules/senior-engineering-discipline.md +6 -0
  47. package/dist/agent-src/rules/skill-quality.md +2 -0
  48. package/dist/agent-src/rules/source-confidentiality.md +4 -0
  49. package/dist/agent-src/rules/source-discovery-gate.md +3 -0
  50. package/dist/agent-src/rules/source-of-truth.md +2 -0
  51. package/dist/agent-src/rules/strategy-safety-floor.md +2 -0
  52. package/dist/agent-src/rules/think-before-action.md +5 -0
  53. package/dist/agent-src/rules/ui-audit-gate.md +2 -0
  54. package/dist/agent-src/skills/design-intelligence/SKILL.md +6 -180
  55. package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +100 -0
  56. package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +91 -0
  57. package/dist/agent-src/skills/design-review/SKILL.md +4 -141
  58. package/dist/agent-src/skills/design-review/references/review-communication.md +92 -0
  59. package/dist/agent-src/skills/design-review/references/verification-automation.md +61 -0
  60. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +8 -27
  61. package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +31 -0
  62. package/dist/agent-src/skills/fe-design/SKILL.md +4 -289
  63. package/dist/agent-src/skills/fe-design/references/design-patterns.md +227 -0
  64. package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +75 -0
  65. package/dist/agent-src/skills/roadmap-management/SKILL.md +10 -0
  66. package/dist/agent-src/skills/roadmap-writing/SKILL.md +12 -1
  67. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  68. package/dist/agent-src/templates/roadmaps.md +12 -0
  69. package/dist/agent-src/templates/scripts/work_engine/directives/ui/_fix_lane.ts +52 -0
  70. package/dist/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +8 -0
  71. package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +6 -0
  72. package/dist/agent-src/templates/scripts/work_engine/intent/classify.ts +56 -4
  73. package/dist/cli/registry.js +2 -0
  74. package/dist/cli/registry.js.map +1 -1
  75. package/dist/cli-delegate/chunk-AIIUU73N.js +2040 -0
  76. package/dist/cli-delegate/{chunk-IMSXPRVH.js → chunk-ELMFOQPW.js} +11 -0
  77. package/dist/cli-delegate/chunk-LF2KKJ4Q.js +183 -0
  78. package/dist/cli-delegate/cmd_explain.js +36 -36
  79. package/dist/cli-delegate/cmd_export.js +1 -1
  80. package/dist/cli-delegate/cmd_handoff.js +203 -2228
  81. package/dist/cli-delegate/cmd_prune.js +1 -1
  82. package/dist/cli-delegate/cmd_route_audit.js +249 -0
  83. package/dist/cli-delegate/cmd_route_explain.js +285 -0
  84. package/dist/cli-delegate/cmd_settings_migrate.js +1 -1
  85. package/dist/cli-delegate/cmd_sync.js +1 -1
  86. package/dist/cli-delegate/cmd_uninstall.js +1 -1
  87. package/dist/cli-delegate/cmd_validate.js +1 -1
  88. package/dist/discovery/deprecation-report.md +1 -1
  89. package/dist/discovery/discovery-manifest.json +57 -57
  90. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  91. package/dist/discovery/discovery-manifest.summary.md +1 -1
  92. package/dist/discovery/orphan-report.md +1 -1
  93. package/dist/discovery/packs.json +2 -2
  94. package/dist/discovery/trust-report.md +1 -1
  95. package/dist/discovery/workspaces.json +2 -2
  96. package/dist/install/install.mjs +11 -0
  97. package/dist/mcp/registry-manifest.json +1 -1
  98. package/dist/mcp/server.json +2 -2
  99. package/dist/router.json +1 -1
  100. package/dist/server/schemas/settings.js +12 -0
  101. package/dist/server/schemas/settings.js.map +1 -1
  102. package/package.json +1 -1
  103. package/src/agent-src/templates/scripts/work_engine/directives/ui/_fix_lane.ts +52 -0
  104. package/src/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +8 -0
  105. package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +6 -0
  106. package/src/agent-src/templates/scripts/work_engine/intent/classify.ts +56 -4
  107. package/src/config/agent-settings.template.yml +46 -0
  108. package/src/config/evaluator-budgets.json +3 -3
  109. package/src/config/gate-coverage.yml +44 -0
  110. package/src/scripts/_cli/cmd_explain.ts +41 -36
  111. package/src/scripts/_cli/cmd_route_audit.ts +290 -0
  112. package/src/scripts/_cli/cmd_route_explain.ts +269 -0
  113. package/src/scripts/_dispatch.bash +23 -0
  114. package/src/scripts/_lib/git_env.ts +40 -0
  115. package/src/scripts/_lib/md_table.ts +27 -0
  116. package/src/scripts/_lib/planning_settings.ts +43 -0
  117. package/src/scripts/_lib/release_highlights.ts +279 -0
  118. package/src/scripts/_lib/router_match.ts +301 -0
  119. package/src/scripts/annotate_r1_outcomes.ts +258 -0
  120. package/src/scripts/check_completion_review.ts +1322 -0
  121. package/src/scripts/check_release_highlights.ts +60 -152
  122. package/src/scripts/compile_router.ts +20 -3
  123. package/src/scripts/dispatch_r2_reviewer.ts +969 -0
  124. package/src/scripts/eval_ui_triviality.ts +156 -0
  125. package/src/scripts/lint_abstraction_thresholds.ts +3 -1
  126. package/src/scripts/lint_plan_risk_register.ts +931 -0
  127. package/src/scripts/lint_trigger_collisions.ts +257 -0
  128. package/src/scripts/release.ts +47 -13
  129. package/src/scripts/router_telemetry.ts +16 -290
  130. package/src/scripts/schemas/rule.schema.json +10 -0
  131. package/src/server/schemas/settings.ts +18 -0
@@ -0,0 +1,156 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * eval_ui_triviality — pre-registered recall of the ui/ui-trivial intent
4
+ * classifier over the council-labelled golden corpus.
5
+ *
6
+ * Pre-registered claim (frozen in the corpus header BEFORE any classifier
7
+ * change; commit ancestry is the freeze proof): the classifier must route
8
+ * >= 0.80 of the `label: trivial` tasks to the `ui-trivial` directive set.
9
+ *
10
+ * READ-ONLY over both inputs: this runner never edits the corpus and never
11
+ * touches the classifier. It REPORTS — the roadmap gates on the number, the
12
+ * process does not fail on a MISS (exit 0 with a MISS verdict; exit 2 only
13
+ * on a broken/empty corpus).
14
+ */
15
+
16
+ import * as fs from 'node:fs';
17
+ import * as path from 'node:path';
18
+ import { fileURLToPath, pathToFileURL } from 'node:url';
19
+ import { parse as parseYaml } from 'yaml';
20
+
21
+ import {
22
+ classify_intent,
23
+ directive_set_for,
24
+ } from '../agent-src/templates/scripts/work_engine/intent/classify.js';
25
+ import { assertScanned, DeadScopeError } from './_lib/scan_scope.js';
26
+
27
+ const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
28
+ export const CORPUS_REL = 'internal/bench/corpora/ui-triviality-golden.yaml';
29
+ export const PREREGISTERED_RECALL = 0.8;
30
+
31
+ export interface Task {
32
+ id: string;
33
+ prompt: string;
34
+ label: 'trivial' | 'non-trivial';
35
+ label_criterion?: string;
36
+ source?: string;
37
+ }
38
+
39
+ export interface EvalRow {
40
+ id: string;
41
+ label: string;
42
+ intent: string;
43
+ directive_set: string;
44
+ hit: boolean; // prediction agrees with the label
45
+ }
46
+
47
+ export interface EvalResult {
48
+ total: number;
49
+ trivial_total: number;
50
+ trivial_routed: number;
51
+ recall: number;
52
+ precision: number;
53
+ verdict: 'PASS' | 'MISS';
54
+ rows: EvalRow[];
55
+ }
56
+
57
+ export function load_corpus(p: string): Task[] {
58
+ const raw = parseYaml(fs.readFileSync(p, 'utf-8'));
59
+ const tasks = Array.isArray(raw)
60
+ ? raw
61
+ : raw !== null && typeof raw === 'object'
62
+ ? (raw as Record<string, unknown>)['tasks']
63
+ : null;
64
+ if (!Array.isArray(tasks)) {
65
+ throw new Error(`corpus carries no task list: ${p}`);
66
+ }
67
+ return tasks as Task[];
68
+ }
69
+
70
+ export function run_eval(tasks: Task[]): EvalResult {
71
+ const rows: EvalRow[] = tasks.map((t) => {
72
+ const intent = classify_intent(t.prompt);
73
+ const set = directive_set_for(intent);
74
+ const predicted_trivial = set === 'ui-trivial';
75
+ return {
76
+ id: t.id,
77
+ label: t.label,
78
+ intent,
79
+ directive_set: set,
80
+ hit: predicted_trivial === (t.label === 'trivial'),
81
+ };
82
+ });
83
+ const trivialRows = rows.filter((r) => r.label === 'trivial');
84
+ const routed = trivialRows.filter((r) => r.directive_set === 'ui-trivial').length;
85
+ const predictedTrivial = rows.filter((r) => r.directive_set === 'ui-trivial');
86
+ const truePos = predictedTrivial.filter((r) => r.label === 'trivial').length;
87
+ const recall = trivialRows.length === 0 ? 0 : routed / trivialRows.length;
88
+ const precision = predictedTrivial.length === 0 ? 1 : truePos / predictedTrivial.length;
89
+ return {
90
+ total: rows.length,
91
+ trivial_total: trivialRows.length,
92
+ trivial_routed: routed,
93
+ recall,
94
+ precision,
95
+ verdict: recall >= PREREGISTERED_RECALL ? 'PASS' : 'MISS',
96
+ rows,
97
+ };
98
+ }
99
+
100
+ export function render(result: EvalResult): string {
101
+ const out: string[] = [];
102
+ out.push(
103
+ `ui-triviality eval — pre-registered trivial-lane recall >= ${PREREGISTERED_RECALL.toFixed(2)}`,
104
+ );
105
+ out.push(
106
+ `tasks: ${result.total} · trivial: ${result.trivial_total} · routed to ui-trivial: ${result.trivial_routed}`,
107
+ );
108
+ out.push(
109
+ `recall: ${result.recall.toFixed(3)} · precision: ${result.precision.toFixed(3)} · verdict: ${result.verdict}`,
110
+ );
111
+ const misses = result.rows.filter((r) => !r.hit);
112
+ if (misses.length > 0) {
113
+ out.push('');
114
+ out.push(`misses (${misses.length}):`);
115
+ for (const m of misses) {
116
+ out.push(` ${m.id}: label=${m.label} → intent=${m.intent} (${m.directive_set})`);
117
+ }
118
+ }
119
+ return out.join('\n') + '\n';
120
+ }
121
+
122
+ export function main(argv: string[]): number {
123
+ const as_json = argv.includes('--json');
124
+ const corpusPath = path.join(REPO_ROOT, CORPUS_REL);
125
+ let tasks: Task[];
126
+ try {
127
+ tasks = load_corpus(corpusPath);
128
+ } catch (e) {
129
+ process.stderr.write(`eval_ui_triviality: ${String(e)}\n`);
130
+ return 2;
131
+ }
132
+ try {
133
+ assertScanned({
134
+ gate: 'eval_ui_triviality',
135
+ scanned: tasks.length,
136
+ units: 'corpus task(s)',
137
+ roots: [CORPUS_REL],
138
+ });
139
+ } catch (exc) {
140
+ if (!(exc instanceof DeadScopeError)) throw exc;
141
+ process.stderr.write(`❌ ${exc.message}\n`);
142
+ return 2;
143
+ }
144
+ const result = run_eval(tasks);
145
+ if (as_json) {
146
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
147
+ } else {
148
+ process.stdout.write(render(result));
149
+ }
150
+ return 0;
151
+ }
152
+
153
+ const _HERE = fileURLToPath(import.meta.url);
154
+ if (process.argv[1] && (import.meta.url === pathToFileURL(process.argv[1]).href || path.resolve(process.argv[1]) === _HERE)) {
155
+ process.exitCode = main(process.argv.slice(2));
156
+ }
@@ -103,7 +103,9 @@ export const SITES: ReadonlyArray<{ file: string; mustMatch: RegExp; why: string
103
103
  why: 'guideline pointer to the scoped UI bars',
104
104
  },
105
105
  {
106
- file: 'src/skills/fe-design/SKILL.md',
106
+ // Moved with the fe-design progressive-disclosure split (2026-08-04):
107
+ // the componentization bar lives in the design-patterns reference now.
108
+ file: 'src/skills/fe-design/references/design-patterns.md',
107
109
  mustMatch: /Extract a props-only UI shell when used 3\+ times[\s\S]{0,160}?~4 \+ real state/,
108
110
  why: 'UI-shell 3+ bar and the stateful ~4 pointer',
109
111
  },