@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +122 -171
- package/dist/agent-src/commands/challenge-me/vision.md +5 -0
- package/dist/agent-src/commands/evals/rule-compliance-audit.json +46 -0
- package/dist/agent-src/commands/feature/plan.md +20 -0
- package/dist/agent-src/commands/feature/roadmap.md +19 -0
- package/dist/agent-src/commands/pr/create.md +29 -0
- package/dist/agent-src/commands/roadmap/create.md +29 -0
- package/dist/agent-src/commands/rule-compliance-audit.md +28 -5
- package/dist/agent-src/contexts/execution/plan-confidence-gate.md +133 -0
- package/dist/agent-src/rules/active-remediation.md +2 -0
- package/dist/agent-src/rules/architecture.md +2 -0
- package/dist/agent-src/rules/augment-edit-discipline.md +2 -0
- package/dist/agent-src/rules/brand-consistency.md +10 -62
- package/dist/agent-src/rules/brand-source-of-truth.md +62 -11
- package/dist/agent-src/rules/broken-access-control.md +4 -0
- package/dist/agent-src/rules/cli-output-handling.md +5 -0
- package/dist/agent-src/rules/code-comment-discipline.md +3 -0
- package/dist/agent-src/rules/commit-conventions.md +2 -0
- package/dist/agent-src/rules/cross-source-consistency.md +3 -0
- package/dist/agent-src/rules/design-fidelity.md +2 -0
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +2 -0
- package/dist/agent-src/rules/docker-commands.md +4 -0
- package/dist/agent-src/rules/domain-adoption-policy.md +2 -0
- package/dist/agent-src/rules/domain-safety-disclaimer.md +5 -2
- package/dist/agent-src/rules/engineering-safety-floor.md +2 -0
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +9 -0
- package/dist/agent-src/rules/image-likeness-and-rights.md +4 -0
- package/dist/agent-src/rules/improve-before-implement.md +4 -0
- package/dist/agent-src/rules/laravel-routing.md +4 -0
- package/dist/agent-src/rules/legal-safety-floor.md +3 -0
- package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -0
- package/dist/agent-src/rules/media-governance-routing.md +5 -0
- package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
- package/dist/agent-src/rules/no-roadmap-references.md +2 -0
- package/dist/agent-src/rules/notes-first-reasoning.md +2 -0
- package/dist/agent-src/rules/php-coding.md +2 -0
- package/dist/agent-src/rules/prefer-enums-over-literals.md +3 -0
- package/dist/agent-src/rules/provider-lifecycle-discipline.md +5 -0
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +2 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +2 -0
- package/dist/agent-src/rules/rule-type-governance.md +2 -0
- package/dist/agent-src/rules/scale-discipline.md +3 -0
- package/dist/agent-src/rules/secret-vcs-guard.md +2 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +9 -2
- package/dist/agent-src/rules/senior-engineering-discipline.md +6 -0
- package/dist/agent-src/rules/skill-quality.md +2 -0
- package/dist/agent-src/rules/source-confidentiality.md +4 -0
- package/dist/agent-src/rules/source-discovery-gate.md +3 -0
- package/dist/agent-src/rules/source-of-truth.md +2 -0
- package/dist/agent-src/rules/strategy-safety-floor.md +2 -0
- package/dist/agent-src/rules/think-before-action.md +5 -0
- package/dist/agent-src/rules/ui-audit-gate.md +2 -0
- package/dist/agent-src/skills/design-intelligence/SKILL.md +6 -180
- package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +100 -0
- package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +91 -0
- package/dist/agent-src/skills/design-review/SKILL.md +4 -141
- package/dist/agent-src/skills/design-review/references/review-communication.md +92 -0
- package/dist/agent-src/skills/design-review/references/verification-automation.md +61 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +8 -27
- package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +31 -0
- package/dist/agent-src/skills/fe-design/SKILL.md +4 -289
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +227 -0
- package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +75 -0
- package/dist/agent-src/skills/roadmap-management/SKILL.md +10 -0
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +12 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/roadmaps.md +12 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/_fix_lane.ts +52 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +8 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +6 -0
- package/dist/agent-src/templates/scripts/work_engine/intent/classify.ts +56 -4
- package/dist/cli/registry.js +2 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/chunk-AIIUU73N.js +2040 -0
- package/dist/cli-delegate/{chunk-IMSXPRVH.js → chunk-ELMFOQPW.js} +11 -0
- package/dist/cli-delegate/chunk-LF2KKJ4Q.js +183 -0
- package/dist/cli-delegate/cmd_explain.js +36 -36
- package/dist/cli-delegate/cmd_export.js +1 -1
- package/dist/cli-delegate/cmd_handoff.js +203 -2228
- package/dist/cli-delegate/cmd_prune.js +1 -1
- package/dist/cli-delegate/cmd_route_audit.js +249 -0
- package/dist/cli-delegate/cmd_route_explain.js +285 -0
- package/dist/cli-delegate/cmd_settings_migrate.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +1 -1
- package/dist/cli-delegate/cmd_uninstall.js +1 -1
- package/dist/cli-delegate/cmd_validate.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +57 -57
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +2 -2
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +2 -2
- package/dist/install/install.mjs +11 -0
- package/dist/mcp/registry-manifest.json +1 -1
- package/dist/mcp/server.json +2 -2
- package/dist/router.json +1 -1
- package/dist/server/schemas/settings.js +12 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/package.json +1 -1
- package/src/agent-src/templates/scripts/work_engine/directives/ui/_fix_lane.ts +52 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +8 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +6 -0
- package/src/agent-src/templates/scripts/work_engine/intent/classify.ts +56 -4
- package/src/config/agent-settings.template.yml +46 -0
- package/src/config/evaluator-budgets.json +3 -3
- package/src/config/gate-coverage.yml +44 -0
- package/src/scripts/_cli/cmd_explain.ts +41 -36
- package/src/scripts/_cli/cmd_route_audit.ts +290 -0
- package/src/scripts/_cli/cmd_route_explain.ts +269 -0
- package/src/scripts/_dispatch.bash +23 -0
- package/src/scripts/_lib/git_env.ts +40 -0
- package/src/scripts/_lib/md_table.ts +27 -0
- package/src/scripts/_lib/planning_settings.ts +43 -0
- package/src/scripts/_lib/release_highlights.ts +279 -0
- package/src/scripts/_lib/router_match.ts +301 -0
- package/src/scripts/annotate_r1_outcomes.ts +258 -0
- package/src/scripts/check_completion_review.ts +1322 -0
- package/src/scripts/check_release_highlights.ts +60 -152
- package/src/scripts/compile_router.ts +20 -3
- package/src/scripts/dispatch_r2_reviewer.ts +969 -0
- package/src/scripts/eval_ui_triviality.ts +156 -0
- package/src/scripts/lint_abstraction_thresholds.ts +3 -1
- package/src/scripts/lint_plan_risk_register.ts +931 -0
- package/src/scripts/lint_trigger_collisions.ts +257 -0
- package/src/scripts/release.ts +47 -13
- package/src/scripts/router_telemetry.ts +16 -290
- package/src/scripts/schemas/rule.schema.json +10 -0
- 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
|
-
|
|
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
|
},
|