trace-to-skill 0.1.46 → 0.1.48
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 +31 -3
- package/dist/src/cli.js +29 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/demo.d.ts +16 -0
- package/dist/src/demo.js +91 -0
- package/dist/src/demo.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/ossBrief.d.ts +27 -0
- package/dist/src/ossBrief.js +152 -0
- package/dist/src/ossBrief.js.map +1 -0
- package/docs/DEMO.md +92 -0
- package/docs/DISCOVERY.md +6 -0
- package/docs/OPENAI_OSS_BRIEF.md +47 -0
- package/docs/RELEASE.md +1 -1
- package/docs/USE_CASES.md +34 -16
- package/llms.txt +3 -0
- package/package.json +7 -2
- package/schemas/oss-brief-result.schema.json +116 -0
package/README.md
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
Turn failed AI coding-agent runs into reusable `AGENTS.md` rules, `SKILL.md` files, and eval evidence.
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
+
npx trace-to-skill demo
|
|
14
15
|
npx trace-to-skill doctor .
|
|
15
16
|
npx trace-to-skill lint-agents .
|
|
16
17
|
npx trace-to-skill analyze ./runs
|
|
@@ -20,6 +21,7 @@ npx trace-to-skill suggest ./runs --target agents-md
|
|
|
20
21
|
npx trace-to-skill eval ./runs --threshold 80
|
|
21
22
|
npx trace-to-skill benchmark
|
|
22
23
|
npx trace-to-skill scorecard .
|
|
24
|
+
npx trace-to-skill oss-brief .
|
|
23
25
|
npx trace-to-skill scorecard-comment . --dry-run
|
|
24
26
|
npx trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"
|
|
25
27
|
npx trace-to-skill comment ./runs --dry-run
|
|
@@ -41,6 +43,8 @@ It is built for maintainers using Codex, Claude Code, Cursor, Copilot coding age
|
|
|
41
43
|
Use it when you need to:
|
|
42
44
|
|
|
43
45
|
- **Gate Codex-ready PRs:** run `trace-to-skill scorecard .` in CI and post a reviewer-friendly readiness comment.
|
|
46
|
+
- **Try it before collecting traces:** run `trace-to-skill demo` to generate a real Codex issue report from packaged public fixtures in one command.
|
|
47
|
+
- **Prepare OpenAI OSS evidence:** run `trace-to-skill oss-brief .` to generate application-ready proof, 500-character summary fields, readiness score, benchmark status, license, and next steps.
|
|
44
48
|
- **Harden agent instructions:** run `trace-to-skill lint-agents .` to catch missing `AGENTS.md`, conflicting tool instructions, missing includes, nested instruction drift, encoding issues, and risky MCP config.
|
|
45
49
|
- **Protect agent context:** run `trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"` before feeding issue, PR, comment, discussion, check-run, or commit text into an agent.
|
|
46
50
|
- **Share failed traces safely:** run `trace-to-skill redact ./runs --output redacted-runs` before publishing anonymized failure fixtures.
|
|
@@ -85,6 +89,7 @@ Open-source maintainers do not need more AI-generated noise. They need agents th
|
|
|
85
89
|
- Did a model/runtime latency regression make Fast behave like Standard, stall before first output, or spend minutes in thinking, search, read, or compaction phases?
|
|
86
90
|
- Did repeated approval prompts make a safer scoped mode unusable or require huge per-tool MCP approval configs?
|
|
87
91
|
- Can the failure be reported to OpenAI with line-linked evidence, redaction notes, and the exact diagnostics maintainers need?
|
|
92
|
+
- Can we produce an application-ready OpenAI OSS brief from the repo's actual license, distribution, readiness, and benchmark state?
|
|
88
93
|
|
|
89
94
|
## Example Output
|
|
90
95
|
|
|
@@ -189,6 +194,17 @@ Requires Node.js 20+.
|
|
|
189
194
|
|
|
190
195
|
## CLI
|
|
191
196
|
|
|
197
|
+
Try a packaged public demo before collecting private traces:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
trace-to-skill demo
|
|
201
|
+
trace-to-skill demo --list
|
|
202
|
+
trace-to-skill demo latency-regression
|
|
203
|
+
trace-to-skill demo --format json
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
See this repository's generated demo in [docs/DEMO.md](docs/DEMO.md).
|
|
207
|
+
|
|
192
208
|
Check whether a repository is ready for Codex automation:
|
|
193
209
|
|
|
194
210
|
```bash
|
|
@@ -274,6 +290,16 @@ trace-to-skill scorecard . --format json
|
|
|
274
290
|
|
|
275
291
|
See this repository's current public scorecard in [docs/SCORECARD.md](docs/SCORECARD.md).
|
|
276
292
|
|
|
293
|
+
Generate an OpenAI OSS support/application brief:
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
trace-to-skill oss-brief .
|
|
297
|
+
trace-to-skill oss-brief . --format json
|
|
298
|
+
trace-to-skill oss-brief . --output docs/OPENAI_OSS_BRIEF.md
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
See this repository's current brief in [docs/OPENAI_OSS_BRIEF.md](docs/OPENAI_OSS_BRIEF.md).
|
|
302
|
+
|
|
277
303
|
To map a Codex problem to the right failure class and report command, see [docs/CODEX_ISSUE_MAP.md](docs/CODEX_ISSUE_MAP.md).
|
|
278
304
|
|
|
279
305
|
Post or update a pull request comment with the combined scorecard:
|
|
@@ -334,6 +360,7 @@ Stable machine-readable contracts are published with the npm package and release
|
|
|
334
360
|
- [`schemas/doctor-result.schema.json`](schemas/doctor-result.schema.json) describes `trace-to-skill doctor --format json`.
|
|
335
361
|
- [`schemas/redact-result.schema.json`](schemas/redact-result.schema.json) describes `trace-to-skill redact --format json`.
|
|
336
362
|
- [`schemas/scorecard-result.schema.json`](schemas/scorecard-result.schema.json) describes `trace-to-skill scorecard --format json`.
|
|
363
|
+
- [`schemas/oss-brief-result.schema.json`](schemas/oss-brief-result.schema.json) describes `trace-to-skill oss-brief --format json`.
|
|
337
364
|
|
|
338
365
|
These schemas let downstream Codex workflows, dashboards, and CI bots consume reports without scraping Markdown.
|
|
339
366
|
|
|
@@ -365,7 +392,7 @@ jobs:
|
|
|
365
392
|
issues: write
|
|
366
393
|
steps:
|
|
367
394
|
- uses: actions/checkout@v5
|
|
368
|
-
- uses: grnbtqdbyx-create/trace-to-skill@v0.1.
|
|
395
|
+
- uses: grnbtqdbyx-create/trace-to-skill@v0.1.48
|
|
369
396
|
with:
|
|
370
397
|
mode: all
|
|
371
398
|
doctor-threshold: "85"
|
|
@@ -414,7 +441,7 @@ Composite action usage:
|
|
|
414
441
|
|
|
415
442
|
```yaml
|
|
416
443
|
- id: trace-to-skill
|
|
417
|
-
uses: grnbtqdbyx-create/trace-to-skill@v0.1.
|
|
444
|
+
uses: grnbtqdbyx-create/trace-to-skill@v0.1.48
|
|
418
445
|
with:
|
|
419
446
|
mode: all
|
|
420
447
|
doctor-threshold: "85"
|
|
@@ -456,7 +483,7 @@ Action outputs:
|
|
|
456
483
|
|
|
457
484
|
By default, generated reports are also appended to the GitHub Actions Job Summary. Set `job-summary: "false"` to disable that UI output.
|
|
458
485
|
|
|
459
|
-
Tagged Action releases build and run the CLI from `$GITHUB_ACTION_PATH`, so a workflow pinned to a release tag such as `@v0.1.
|
|
486
|
+
Tagged Action releases build and run the CLI from `$GITHUB_ACTION_PATH`, so a workflow pinned to a release tag such as `@v0.1.48` executes that release's checked-out source instead of pulling the default branch at runtime.
|
|
460
487
|
|
|
461
488
|
## Codex Skill
|
|
462
489
|
|
|
@@ -504,6 +531,7 @@ The goal is not to let agents autonomously rewrite project policy. The goal is t
|
|
|
504
531
|
- `trace-to-skill benchmark` for public fixture scorecards
|
|
505
532
|
- GitHub Action `benchmark` and `all` modes
|
|
506
533
|
- `trace-to-skill scorecard` for combined reviewer proof
|
|
534
|
+
- `trace-to-skill oss-brief` for OpenAI OSS application-ready evidence
|
|
507
535
|
- Scorecard JSON schema and Action outputs
|
|
508
536
|
- Tag-pinned GitHub Action runtime via `$GITHUB_ACTION_PATH`
|
|
509
537
|
- Scorecard PR comments with update-in-place marker
|
package/dist/src/cli.js
CHANGED
|
@@ -3,11 +3,13 @@ import { writeFile } from "node:fs/promises";
|
|
|
3
3
|
import { lintAgents, renderAgentsLintMarkdown } from "./agentsLint.js";
|
|
4
4
|
import { analyzeTargets } from "./analyze.js";
|
|
5
5
|
import { renderBenchmarkMarkdown, runBenchmark } from "./benchmark.js";
|
|
6
|
+
import { listDemoScenarios, renderDemoMarkdown, renderDemoScenarioList, runDemo } from "./demo.js";
|
|
6
7
|
import { doctorRepo } from "./doctor.js";
|
|
7
8
|
import { compareAnalyses, evaluate } from "./eval.js";
|
|
8
9
|
import { analyzeGithubEventContext } from "./githubContext.js";
|
|
9
10
|
import { postPullRequestComment } from "./github.js";
|
|
10
11
|
import { initProject } from "./init.js";
|
|
12
|
+
import { renderOssBriefMarkdown, runOssBrief } from "./ossBrief.js";
|
|
11
13
|
import { redactTargets } from "./redact.js";
|
|
12
14
|
import { renderAgentsRules, renderCodexIssueReport, renderComparison, renderDoctorMarkdown, renderDoctorPrComment, renderMarkdown, renderPrComment, renderSarif, renderSkill } from "./report.js";
|
|
13
15
|
import { renderScorecardMarkdown, renderScorecardPrComment, runScorecard } from "./scorecard.js";
|
|
@@ -24,6 +26,19 @@ async function main() {
|
|
|
24
26
|
await writeOutput(output, parsed.flags.output);
|
|
25
27
|
return;
|
|
26
28
|
}
|
|
29
|
+
if (parsed.command === "demo") {
|
|
30
|
+
const format = String(parsed.flags.format ?? "markdown");
|
|
31
|
+
if (parsed.flags.list) {
|
|
32
|
+
const scenarios = listDemoScenarios();
|
|
33
|
+
const output = format === "json" ? `${JSON.stringify({ scenarios }, null, 2)}\n` : renderDemoScenarioList(scenarios);
|
|
34
|
+
await writeOutput(output, parsed.flags.output);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const result = await runDemo(parsed.targets[0]);
|
|
38
|
+
const output = format === "json" ? `${JSON.stringify(result, null, 2)}\n` : renderDemoMarkdown(result);
|
|
39
|
+
await writeOutput(output, parsed.flags.output);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
27
42
|
if (parsed.command === "suggest") {
|
|
28
43
|
const result = await analyzeTargets(parsed.targets);
|
|
29
44
|
const target = String(parsed.flags.target ?? "agents-md");
|
|
@@ -103,6 +118,15 @@ async function main() {
|
|
|
103
118
|
process.exitCode = result.passed ? 0 : 1;
|
|
104
119
|
return;
|
|
105
120
|
}
|
|
121
|
+
if (parsed.command === "oss-brief") {
|
|
122
|
+
const threshold = numberFlag(parsed.flags.threshold) ?? 85;
|
|
123
|
+
const result = await runOssBrief(parsed.targets[0] ?? process.cwd(), threshold);
|
|
124
|
+
const format = String(parsed.flags.format ?? "markdown");
|
|
125
|
+
const output = format === "json" ? `${JSON.stringify(result, null, 2)}\n` : renderOssBriefMarkdown(result);
|
|
126
|
+
await writeOutput(output, parsed.flags.output);
|
|
127
|
+
process.exitCode = result.scorecard.passed ? 0 : 1;
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
106
130
|
if (parsed.command === "guard-github-event") {
|
|
107
131
|
const eventPath = parsed.targets[0] ?? stringFlag(parsed.flags.event) ?? process.env.GITHUB_EVENT_PATH;
|
|
108
132
|
if (!eventPath) {
|
|
@@ -264,6 +288,7 @@ function printHelp() {
|
|
|
264
288
|
Turn failed AI coding-agent runs into reusable rules, skills, and eval evidence.
|
|
265
289
|
|
|
266
290
|
Usage:
|
|
291
|
+
trace-to-skill demo [scenario] [--list] [--format markdown|json] [--output docs/DEMO.md]
|
|
267
292
|
trace-to-skill analyze <trace-file-or-dir> [--format markdown|json|sarif] [--output report.md]
|
|
268
293
|
trace-to-skill codex-report <trace-file-or-dir> [--output openai-codex-issue.md]
|
|
269
294
|
trace-to-skill suggest <trace-file-or-dir> [--target agents-md|skill] [--output AGENTS.generated.md]
|
|
@@ -273,6 +298,7 @@ Usage:
|
|
|
273
298
|
trace-to-skill benchmark [--format markdown|json] [--output docs/BENCHMARK.md]
|
|
274
299
|
trace-to-skill scorecard [repo-dir] [--threshold 85] [--format markdown|json] [--output docs/SCORECARD.md]
|
|
275
300
|
trace-to-skill scorecard-comment [repo-dir] [--threshold 85] [--dry-run] [--token $GITHUB_TOKEN]
|
|
301
|
+
trace-to-skill oss-brief [repo-dir] [--threshold 85] [--format markdown|json] [--output docs/OPENAI_OSS_BRIEF.md]
|
|
276
302
|
trace-to-skill guard-github-event [event.json] [--threshold 80] [--format markdown|json] [--output report.md]
|
|
277
303
|
trace-to-skill comment <trace-file-or-dir> [--dry-run] [--token $GITHUB_TOKEN]
|
|
278
304
|
trace-to-skill compare --before <old-run> --after <new-run> [--format markdown|json]
|
|
@@ -281,6 +307,8 @@ Usage:
|
|
|
281
307
|
trace-to-skill init [--traces runs] [--threshold 80] [--doctor-threshold 85] [--comment] [--sarif] [--dry-run]
|
|
282
308
|
|
|
283
309
|
Examples:
|
|
310
|
+
trace-to-skill demo
|
|
311
|
+
trace-to-skill demo latency-regression
|
|
284
312
|
trace-to-skill analyze ./runs
|
|
285
313
|
trace-to-skill codex-report ./runs --output openai-codex-issue.md
|
|
286
314
|
trace-to-skill suggest ./runs --target skill --output skills/verification-before-completion/SKILL.md
|
|
@@ -290,6 +318,7 @@ Examples:
|
|
|
290
318
|
trace-to-skill benchmark
|
|
291
319
|
trace-to-skill scorecard .
|
|
292
320
|
trace-to-skill scorecard-comment . --threshold 85
|
|
321
|
+
trace-to-skill oss-brief . --output docs/OPENAI_OSS_BRIEF.md
|
|
293
322
|
trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"
|
|
294
323
|
trace-to-skill comment ./runs
|
|
295
324
|
trace-to-skill compare --before ./runs/before --after ./runs/after
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AnalysisResult } from "./types.js";
|
|
2
|
+
export interface DemoScenario {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
fixture: string;
|
|
6
|
+
description: string;
|
|
7
|
+
}
|
|
8
|
+
export interface DemoResult {
|
|
9
|
+
generatedAt: string;
|
|
10
|
+
scenario: DemoScenario;
|
|
11
|
+
analysis: AnalysisResult;
|
|
12
|
+
}
|
|
13
|
+
export declare function listDemoScenarios(): DemoScenario[];
|
|
14
|
+
export declare function runDemo(scenarioId?: string): Promise<DemoResult>;
|
|
15
|
+
export declare function renderDemoMarkdown(result: DemoResult): string;
|
|
16
|
+
export declare function renderDemoScenarioList(scenarios?: DemoScenario[]): string;
|
package/dist/src/demo.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { analyzeTargets } from "./analyze.js";
|
|
4
|
+
import { renderCodexIssueReport } from "./report.js";
|
|
5
|
+
const DEMO_SCENARIOS = [
|
|
6
|
+
{
|
|
7
|
+
id: "approval-friction",
|
|
8
|
+
title: "Codex approval friction",
|
|
9
|
+
fixture: "fixtures/codex-approval-friction.md",
|
|
10
|
+
description: "Repeated approval prompts, Approve for this session misses, and noisy trusted MCP tool approvals."
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
id: "latency-regression",
|
|
14
|
+
title: "Codex latency regression",
|
|
15
|
+
fixture: "fixtures/codex-latency-regression.md",
|
|
16
|
+
description: "Fast mode feels like Standard, with long thinking, search, read, or compaction stalls."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: "token-burn",
|
|
20
|
+
title: "Codex token burn",
|
|
21
|
+
fixture: "fixtures/codex-token-burn.md",
|
|
22
|
+
description: "Usage drains from background polling, idle activity, compaction loops, retries, or cached-heavy turns."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: "sensitive-files",
|
|
26
|
+
title: "Sensitive file access",
|
|
27
|
+
fixture: "fixtures/sensitive-file-access.md",
|
|
28
|
+
description: "Secrets, local credentials, production env files, or private databases enter agent context."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: "github-prompt-injection",
|
|
32
|
+
title: "GitHub prompt injection",
|
|
33
|
+
fixture: "fixtures/prompt-injection.md",
|
|
34
|
+
description: "Untrusted issue, PR, comment, or web text tells the agent to ignore policy or leak secrets."
|
|
35
|
+
}
|
|
36
|
+
];
|
|
37
|
+
export function listDemoScenarios() {
|
|
38
|
+
return [...DEMO_SCENARIOS];
|
|
39
|
+
}
|
|
40
|
+
export async function runDemo(scenarioId = "approval-friction") {
|
|
41
|
+
const scenario = DEMO_SCENARIOS.find((item) => item.id === scenarioId);
|
|
42
|
+
if (!scenario) {
|
|
43
|
+
const ids = DEMO_SCENARIOS.map((item) => item.id).join(", ");
|
|
44
|
+
throw new Error(`unknown demo scenario "${scenarioId}". Available scenarios: ${ids}`);
|
|
45
|
+
}
|
|
46
|
+
const analysis = await analyzeTargets([path.join(packageRoot(), scenario.fixture)]);
|
|
47
|
+
return {
|
|
48
|
+
generatedAt: new Date().toISOString(),
|
|
49
|
+
scenario,
|
|
50
|
+
analysis
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export function renderDemoMarkdown(result) {
|
|
54
|
+
return [
|
|
55
|
+
"# trace-to-skill Demo",
|
|
56
|
+
"",
|
|
57
|
+
`Scenario: **${result.scenario.title}**`,
|
|
58
|
+
"",
|
|
59
|
+
result.scenario.description,
|
|
60
|
+
"",
|
|
61
|
+
`Fixture: \`${result.scenario.fixture}\``,
|
|
62
|
+
"",
|
|
63
|
+
"This is a packaged public fixture, so you can try the project without collecting a private trace first.",
|
|
64
|
+
"",
|
|
65
|
+
"## Generated Codex Issue Report",
|
|
66
|
+
"",
|
|
67
|
+
renderCodexIssueReport(result.analysis).replace(/^# OpenAI Codex Issue Report\n\n/, "")
|
|
68
|
+
].join("\n");
|
|
69
|
+
}
|
|
70
|
+
export function renderDemoScenarioList(scenarios = listDemoScenarios()) {
|
|
71
|
+
return [
|
|
72
|
+
"# trace-to-skill Demo Scenarios",
|
|
73
|
+
"",
|
|
74
|
+
"| Scenario | What it shows |",
|
|
75
|
+
"| --- | --- |",
|
|
76
|
+
...scenarios.map((scenario) => `| \`${scenario.id}\` | ${scenario.description} |`),
|
|
77
|
+
"",
|
|
78
|
+
"Run one locally:",
|
|
79
|
+
"",
|
|
80
|
+
"```bash",
|
|
81
|
+
"trace-to-skill demo",
|
|
82
|
+
"trace-to-skill demo latency-regression",
|
|
83
|
+
"trace-to-skill demo --list",
|
|
84
|
+
"```",
|
|
85
|
+
""
|
|
86
|
+
].join("\n");
|
|
87
|
+
}
|
|
88
|
+
function packageRoot() {
|
|
89
|
+
return path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=demo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/demo.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export { lintAgents, renderAgentsLintMarkdown } from "./agentsLint.js";
|
|
2
2
|
export { analyzeInputs, analyzeTargets } from "./analyze.js";
|
|
3
3
|
export { renderBenchmarkMarkdown, runBenchmark } from "./benchmark.js";
|
|
4
|
+
export { listDemoScenarios, renderDemoMarkdown, renderDemoScenarioList, runDemo } from "./demo.js";
|
|
4
5
|
export { doctorRepo } from "./doctor.js";
|
|
5
6
|
export { compareAnalyses, evaluate } from "./eval.js";
|
|
6
7
|
export { analyzeGithubEventContext, extractGithubContextInputs } from "./githubContext.js";
|
|
7
8
|
export { postPullRequestComment } from "./github.js";
|
|
8
9
|
export { initProject } from "./init.js";
|
|
10
|
+
export { renderOssBriefMarkdown, runOssBrief } from "./ossBrief.js";
|
|
9
11
|
export { redactTargets, redactText } from "./redact.js";
|
|
10
12
|
export { renderAgentsRules, renderCodexIssueReport, renderComparison, renderDoctorMarkdown, renderDoctorPrComment, renderMarkdown, renderPrComment, renderSarif, renderSkill } from "./report.js";
|
|
11
13
|
export { renderScorecardMarkdown, renderScorecardPrComment, runScorecard } from "./scorecard.js";
|
package/dist/src/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export { lintAgents, renderAgentsLintMarkdown } from "./agentsLint.js";
|
|
2
2
|
export { analyzeInputs, analyzeTargets } from "./analyze.js";
|
|
3
3
|
export { renderBenchmarkMarkdown, runBenchmark } from "./benchmark.js";
|
|
4
|
+
export { listDemoScenarios, renderDemoMarkdown, renderDemoScenarioList, runDemo } from "./demo.js";
|
|
4
5
|
export { doctorRepo } from "./doctor.js";
|
|
5
6
|
export { compareAnalyses, evaluate } from "./eval.js";
|
|
6
7
|
export { analyzeGithubEventContext, extractGithubContextInputs } from "./githubContext.js";
|
|
7
8
|
export { postPullRequestComment } from "./github.js";
|
|
8
9
|
export { initProject } from "./init.js";
|
|
10
|
+
export { renderOssBriefMarkdown, runOssBrief } from "./ossBrief.js";
|
|
9
11
|
export { redactTargets, redactText } from "./redact.js";
|
|
10
12
|
export { renderAgentsRules, renderCodexIssueReport, renderComparison, renderDoctorMarkdown, renderDoctorPrComment, renderMarkdown, renderPrComment, renderSarif, renderSkill } from "./report.js";
|
|
11
13
|
export { renderScorecardMarkdown, renderScorecardPrComment, runScorecard } from "./scorecard.js";
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClM,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClM,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface OssBriefResult {
|
|
2
|
+
generatedAt: string;
|
|
3
|
+
root: string;
|
|
4
|
+
repository?: string;
|
|
5
|
+
packageName?: string;
|
|
6
|
+
packageVersion?: string;
|
|
7
|
+
license?: string;
|
|
8
|
+
scorecard: {
|
|
9
|
+
passed: boolean;
|
|
10
|
+
doctorScore: number;
|
|
11
|
+
doctorStatus: "ready" | "needs-attention";
|
|
12
|
+
benchmarkStatus: "pass" | "fail";
|
|
13
|
+
benchmarkCases: number;
|
|
14
|
+
};
|
|
15
|
+
qualification: {
|
|
16
|
+
long: string;
|
|
17
|
+
max500: string;
|
|
18
|
+
};
|
|
19
|
+
apiCredits: {
|
|
20
|
+
long: string;
|
|
21
|
+
max500: string;
|
|
22
|
+
};
|
|
23
|
+
evidence: string[];
|
|
24
|
+
nextSteps: string[];
|
|
25
|
+
}
|
|
26
|
+
export declare function runOssBrief(target?: string, threshold?: number): Promise<OssBriefResult>;
|
|
27
|
+
export declare function renderOssBriefMarkdown(result: OssBriefResult): string;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { runScorecard } from "./scorecard.js";
|
|
4
|
+
export async function runOssBrief(target = process.cwd(), threshold = 85) {
|
|
5
|
+
const root = path.resolve(target);
|
|
6
|
+
const scorecard = await runScorecard(root, threshold);
|
|
7
|
+
const packageJson = await readPackageJson(root);
|
|
8
|
+
const repository = normalizeRepositoryUrl(packageJson?.repository);
|
|
9
|
+
const packageName = packageJson?.name;
|
|
10
|
+
const packageVersion = packageJson?.version;
|
|
11
|
+
const license = packageJson?.license ?? detectLicenseFromDoctor(scorecard);
|
|
12
|
+
const projectName = packageName ?? path.basename(root);
|
|
13
|
+
const commandName = packageName ? `npx ${packageName}` : "trace-to-skill";
|
|
14
|
+
const qualificationLong = [
|
|
15
|
+
`${projectName} helps open-source maintainers adopt Codex safely by turning failed coding-agent runs into evidence-backed rules, reusable workflows, and CI gates.`,
|
|
16
|
+
`It supports real maintenance work: PR review, issue triage, release quality, MCP risk, prompt-injection defense, privacy-preserving trace sharing, and repeat failure reduction.`,
|
|
17
|
+
`The repository is ${scorecard.doctor.status}, scores ${scorecard.doctor.score}/100 on the local Codex readiness doctor, and ships a deterministic benchmark with ${scorecard.benchmark.cases} public fixture cases.`
|
|
18
|
+
].join(" ");
|
|
19
|
+
const apiCreditsLong = [
|
|
20
|
+
"API credits would power optional maintainer workflows on top of the local deterministic scanner:",
|
|
21
|
+
"classifying failed Codex sessions, generating candidate AGENTS.md rules or SKILL.md workflows, comparing before/after runs, and producing PR-ready triage reports.",
|
|
22
|
+
"The local CLI remains free, dependency-light, and usable without API credits."
|
|
23
|
+
].join(" ");
|
|
24
|
+
return {
|
|
25
|
+
generatedAt: new Date().toISOString(),
|
|
26
|
+
root,
|
|
27
|
+
repository,
|
|
28
|
+
packageName,
|
|
29
|
+
packageVersion,
|
|
30
|
+
license,
|
|
31
|
+
scorecard: {
|
|
32
|
+
passed: scorecard.passed,
|
|
33
|
+
doctorScore: scorecard.doctor.score,
|
|
34
|
+
doctorStatus: scorecard.doctor.status,
|
|
35
|
+
benchmarkStatus: scorecard.benchmark.status,
|
|
36
|
+
benchmarkCases: scorecard.benchmark.cases
|
|
37
|
+
},
|
|
38
|
+
qualification: {
|
|
39
|
+
long: qualificationLong,
|
|
40
|
+
max500: fit500(qualificationLong)
|
|
41
|
+
},
|
|
42
|
+
apiCredits: {
|
|
43
|
+
long: apiCreditsLong,
|
|
44
|
+
max500: fit500(apiCreditsLong)
|
|
45
|
+
},
|
|
46
|
+
evidence: buildEvidence(scorecard, commandName, repository, packageName, packageVersion, license),
|
|
47
|
+
nextSteps: buildNextSteps(scorecard)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export function renderOssBriefMarkdown(result) {
|
|
51
|
+
const lines = [
|
|
52
|
+
"# OpenAI OSS Brief",
|
|
53
|
+
"",
|
|
54
|
+
"| Field | Value |",
|
|
55
|
+
"| --- | --- |",
|
|
56
|
+
`| Repository | ${result.repository ?? "Add public repository URL"} |`,
|
|
57
|
+
`| Package | ${result.packageName ? `${result.packageName}${result.packageVersion ? `@${result.packageVersion}` : ""}` : "Not detected"} |`,
|
|
58
|
+
`| License | ${result.license ?? "Not detected"} |`,
|
|
59
|
+
`| Codex readiness | ${result.scorecard.doctorStatus} (${result.scorecard.doctorScore}/100) |`,
|
|
60
|
+
`| Benchmark | ${result.scorecard.benchmarkStatus}, ${result.scorecard.benchmarkCases} cases |`,
|
|
61
|
+
"",
|
|
62
|
+
"## Why This Repository Qualifies",
|
|
63
|
+
"",
|
|
64
|
+
result.qualification.long,
|
|
65
|
+
"",
|
|
66
|
+
"### 500-Character Version",
|
|
67
|
+
"",
|
|
68
|
+
blockquote(result.qualification.max500),
|
|
69
|
+
"",
|
|
70
|
+
"## How API Credits Would Be Used",
|
|
71
|
+
"",
|
|
72
|
+
result.apiCredits.long,
|
|
73
|
+
"",
|
|
74
|
+
"### 500-Character Version",
|
|
75
|
+
"",
|
|
76
|
+
blockquote(result.apiCredits.max500),
|
|
77
|
+
"",
|
|
78
|
+
"## Evidence",
|
|
79
|
+
"",
|
|
80
|
+
...result.evidence.map((item) => `- ${item}`),
|
|
81
|
+
"",
|
|
82
|
+
"## Next Steps Before Submitting",
|
|
83
|
+
"",
|
|
84
|
+
...result.nextSteps.map((item) => `- ${item}`),
|
|
85
|
+
"",
|
|
86
|
+
"Run it locally:",
|
|
87
|
+
"",
|
|
88
|
+
"```bash",
|
|
89
|
+
"trace-to-skill oss-brief .",
|
|
90
|
+
"trace-to-skill oss-brief . --format json",
|
|
91
|
+
"```",
|
|
92
|
+
""
|
|
93
|
+
];
|
|
94
|
+
return lines.join("\n");
|
|
95
|
+
}
|
|
96
|
+
async function readPackageJson(root) {
|
|
97
|
+
try {
|
|
98
|
+
const raw = await readFile(path.join(root, "package.json"), "utf8");
|
|
99
|
+
return JSON.parse(raw);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function normalizeRepositoryUrl(repository) {
|
|
106
|
+
const raw = typeof repository === "string" ? repository : repository?.url;
|
|
107
|
+
if (!raw) {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
return raw
|
|
111
|
+
.replace(/^git\+/, "")
|
|
112
|
+
.replace(/\.git$/, "");
|
|
113
|
+
}
|
|
114
|
+
function detectLicenseFromDoctor(scorecard) {
|
|
115
|
+
const license = scorecard.reports.doctor.checks.find((check) => check.id === "license");
|
|
116
|
+
const match = license?.detail.match(/appears to be ([^.]+)\./);
|
|
117
|
+
return match?.[1];
|
|
118
|
+
}
|
|
119
|
+
function buildEvidence(scorecard, commandName, repository, packageName, packageVersion, license) {
|
|
120
|
+
return [
|
|
121
|
+
repository ? `Public repository: ${repository}` : "Add the public repository URL before submitting.",
|
|
122
|
+
packageName ? `One-command package: ${commandName}${packageVersion ? `@${packageVersion}` : ""}` : "Add a package or action distribution surface for easy adoption.",
|
|
123
|
+
license ? `Open-source license: ${license}` : "Add an OSI-approved license such as Apache-2.0 or MIT.",
|
|
124
|
+
`Codex readiness doctor: ${scorecard.doctor.status}, ${scorecard.doctor.score}/100, ${scorecard.doctor.failedChecks} failed checks.`,
|
|
125
|
+
`Public fixture benchmark: ${scorecard.benchmark.status}, ${scorecard.benchmark.cases} cases.`,
|
|
126
|
+
"Maintainer control: generated rules are suggestions, evidence is line-linked, and secrets can be redacted before sharing."
|
|
127
|
+
];
|
|
128
|
+
}
|
|
129
|
+
function buildNextSteps(scorecard) {
|
|
130
|
+
const steps = [
|
|
131
|
+
"Add current GitHub stars, npm monthly downloads, downstream users, or adoption examples before submitting the application.",
|
|
132
|
+
"Link the latest release, CI run, readiness report, and benchmark report as public proof.",
|
|
133
|
+
"Describe your maintainer role and the recurring PR review, issue triage, release, or security workload this project reduces."
|
|
134
|
+
];
|
|
135
|
+
if (!scorecard.passed) {
|
|
136
|
+
steps.unshift("Fix failing readiness or benchmark checks before using this brief as application evidence.");
|
|
137
|
+
}
|
|
138
|
+
return steps;
|
|
139
|
+
}
|
|
140
|
+
function fit500(value) {
|
|
141
|
+
if (value.length <= 500) {
|
|
142
|
+
return value;
|
|
143
|
+
}
|
|
144
|
+
const sliced = value.slice(0, 500);
|
|
145
|
+
const sentenceEnd = Math.max(sliced.lastIndexOf(". "), sliced.lastIndexOf("; "), sliced.lastIndexOf(", "));
|
|
146
|
+
const candidate = sentenceEnd >= 300 ? sliced.slice(0, sentenceEnd + 1) : sliced.slice(0, 497);
|
|
147
|
+
return candidate.trimEnd().replace(/[.,;:]$/, "") + "...";
|
|
148
|
+
}
|
|
149
|
+
function blockquote(value) {
|
|
150
|
+
return value.split("\n").map((line) => `> ${line}`).join("\n");
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=ossBrief.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ossBrief.js","sourceRoot":"","sources":["../../src/ossBrief.ts"],"names":[],"mappings":"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"}
|
package/docs/DEMO.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# trace-to-skill Demo
|
|
2
|
+
|
|
3
|
+
Scenario: **Codex approval friction**
|
|
4
|
+
|
|
5
|
+
Repeated approval prompts, Approve for this session misses, and noisy trusted MCP tool approvals.
|
|
6
|
+
|
|
7
|
+
Fixture: `fixtures/codex-approval-friction.md`
|
|
8
|
+
|
|
9
|
+
This is a packaged public fixture, so you can try the project without collecting a private trace first.
|
|
10
|
+
|
|
11
|
+
## Generated Codex Issue Report
|
|
12
|
+
|
|
13
|
+
# OpenAI Codex Issue Triage Report
|
|
14
|
+
|
|
15
|
+
Score: **59/100**
|
|
16
|
+
|
|
17
|
+
Likely failure class: **Codex approval persistence or MCP approval friction (codex_approval_friction, high)**
|
|
18
|
+
|
|
19
|
+
Agent workflow needs clearer verification, instruction, or security hardening before broad reuse.
|
|
20
|
+
|
|
21
|
+
## Copy-Paste Issue Body
|
|
22
|
+
|
|
23
|
+
```md
|
|
24
|
+
### What happened?
|
|
25
|
+
|
|
26
|
+
trace-to-skill detected Codex approval persistence or MCP approval friction (codex_approval_friction). Repeated approval prompts can make Codex unusable, push users toward unsafe full-access modes, or hide whether the regression is command approval caching, file-change approval, raw MCP trust, or per-tool configuration scale.
|
|
27
|
+
|
|
28
|
+
### Detected failure class
|
|
29
|
+
|
|
30
|
+
- codex_approval_friction: Codex approval persistence or MCP approval friction (high)
|
|
31
|
+
|
|
32
|
+
### Evidence
|
|
33
|
+
|
|
34
|
+
#### Codex approval persistence or MCP approval friction
|
|
35
|
+
- fixtures/codex-approval-friction.md:14 - - Users report clicking approve this session again and again, then switching to Full Access because the safer scoped mode is too annoying.
|
|
36
|
+
- fixtures/codex-approval-friction.md:15 - - Some reports include `item/fileChange/requestApproval` and `apply_patch_approval_request`, which may be file-change approval rather than command approval.
|
|
37
|
+
- fixtures/codex-approval-friction.md:24 - - Browser tools such as `browser_click`, `browser_type`, and `browser_navigate` ask for confirmation dozens of times.
|
|
38
|
+
- fixtures/codex-approval-friction.md:25 - - Users want a per-MCP default such as `default_tools_approval_mode = "approve"` instead of hundreds of `mcp_servers.playwright.tools.browser_click.approval_mode = "approve"` entries.
|
|
39
|
+
- fixtures/codex-approval-friction.md:33 - - displayed command, executed command, and normalized command identity
|
|
40
|
+
|
|
41
|
+
#### Codex sandbox or permission failure
|
|
42
|
+
- fixtures/codex-approval-friction.md:23 - - `approval_policy = "never"` does not stop approval prompts for Playwright MCP tool calls.
|
|
43
|
+
|
|
44
|
+
### Diagnostics to attach
|
|
45
|
+
|
|
46
|
+
- When reporting Codex approval friction, capture client/app/extension version, OS and remote/WSL/SSH state, sandbox and approval_policy, exact approval scope selected, displayed command versus executed command, whether the repeat is command, file-change, patch, or MCP tool approval, MCP server name and tool names, visible tool args, persisted config snippets such as default_tools_approval_mode or per-tool approval_mode, repeated prompt count, timestamps, whether Full Access/WSL/downgrade changes behavior, and the smallest safe reproduction.
|
|
47
|
+
- When Codex sandbox or permission setup fails, capture the OS, Codex version, sandbox_mode, approval_policy, exact stderr, workspace ownership/ACL evidence, and whether a clean directory can run a simple command plus apply_patch.
|
|
48
|
+
|
|
49
|
+
### Privacy
|
|
50
|
+
|
|
51
|
+
- I redacted tokens, API keys, private paths, customer data, and hidden Unicode controls before sharing this trace.
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Findings
|
|
55
|
+
|
|
56
|
+
### 1. Codex approval persistence or MCP approval friction
|
|
57
|
+
|
|
58
|
+
Severity: **high**
|
|
59
|
+
|
|
60
|
+
Repeated approval prompts can make Codex unusable, push users toward unsafe full-access modes, or hide whether the regression is command approval caching, file-change approval, raw MCP trust, or per-tool configuration scale.
|
|
61
|
+
|
|
62
|
+
Evidence:
|
|
63
|
+
- `fixtures/codex-approval-friction.md:14` - Users report clicking approve this session again and again, then switching to Full Access because the safer scoped mode is too annoying.
|
|
64
|
+
- `fixtures/codex-approval-friction.md:15` - Some reports include `item/fileChange/requestApproval` and `apply_patch_approval_request`, which may be file-change approval rather than command approval.
|
|
65
|
+
- `fixtures/codex-approval-friction.md:24` - Browser tools such as `browser_click`, `browser_type`, and `browser_navigate` ask for confirmation dozens of times.
|
|
66
|
+
- `fixtures/codex-approval-friction.md:25` - Users want a per-MCP default such as `default_tools_approval_mode = "approve"` instead of hundreds of `mcp_servers.playwright.tools.browser_click.approval_mode = "approve"` entries.
|
|
67
|
+
- `fixtures/codex-approval-friction.md:33` - displayed command, executed command, and normalized command identity
|
|
68
|
+
|
|
69
|
+
Suggested rule:
|
|
70
|
+
|
|
71
|
+
> When reporting Codex approval friction, capture client/app/extension version, OS and remote/WSL/SSH state, sandbox and approval_policy, exact approval scope selected, displayed command versus executed command, whether the repeat is command, file-change, patch, or MCP tool approval, MCP server name and tool names, visible tool args, persisted config snippets such as default_tools_approval_mode or per-tool approval_mode, repeated prompt count, timestamps, whether Full Access/WSL/downgrade changes behavior, and the smallest safe reproduction.
|
|
72
|
+
|
|
73
|
+
### 2. Codex sandbox or permission failure
|
|
74
|
+
|
|
75
|
+
Severity: **high**
|
|
76
|
+
|
|
77
|
+
Sandbox setup, approval-mode, and workspace permission failures can block every tool call or leave the worktree in a broken ownership state.
|
|
78
|
+
|
|
79
|
+
Evidence:
|
|
80
|
+
- `fixtures/codex-approval-friction.md:23` - `approval_policy = "never"` does not stop approval prompts for Playwright MCP tool calls.
|
|
81
|
+
|
|
82
|
+
Suggested rule:
|
|
83
|
+
|
|
84
|
+
> When Codex sandbox or permission setup fails, capture the OS, Codex version, sandbox_mode, approval_policy, exact stderr, workspace ownership/ACL evidence, and whether a clean directory can run a simple command plus apply_patch.
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
## Reporter Notes
|
|
88
|
+
|
|
89
|
+
- Run `trace-to-skill redact <trace> --output redacted-runs` before attaching logs publicly.
|
|
90
|
+
- Prefer the shortest trace that reproduces the failure.
|
|
91
|
+
- Include exact Codex app/CLI version, OS, model, subscription/workspace, and the command or UI action that failed.
|
|
92
|
+
- Link related OpenAI/Codex issues when you know them, but keep the evidence self-contained.
|
package/docs/DISCOVERY.md
CHANGED
|
@@ -15,6 +15,7 @@ This page is written for maintainers, search engines, package indexes, and AI re
|
|
|
15
15
|
- Codex issue map: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/CODEX_ISSUE_MAP.md
|
|
16
16
|
- Scorecard: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/SCORECARD.md
|
|
17
17
|
- OpenAI OSS strategy: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/OPENAI_OSS_STRATEGY.md
|
|
18
|
+
- Zero-setup demo: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/DEMO.md
|
|
18
19
|
|
|
19
20
|
## Problems It Solves
|
|
20
21
|
|
|
@@ -51,6 +52,7 @@ This page is written for maintainers, search engines, package indexes, and AI re
|
|
|
51
52
|
|
|
52
53
|
```bash
|
|
53
54
|
npx trace-to-skill doctor .
|
|
55
|
+
npx trace-to-skill demo
|
|
54
56
|
npx trace-to-skill scorecard .
|
|
55
57
|
npx trace-to-skill lint-agents .
|
|
56
58
|
npx trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"
|
|
@@ -65,10 +67,13 @@ npx trace-to-skill suggest ./runs --target agents-md
|
|
|
65
67
|
- `trace-to-skill analyze --format json`
|
|
66
68
|
- `trace-to-skill lint-agents --format json`
|
|
67
69
|
- `trace-to-skill doctor --format json`
|
|
70
|
+
- `trace-to-skill demo --format json`
|
|
68
71
|
- `trace-to-skill redact --format json`
|
|
69
72
|
- `trace-to-skill scorecard --format json`
|
|
70
73
|
- SARIF from `trace-to-skill analyze --format sarif`
|
|
71
74
|
- OpenAI/Codex issue-ready Markdown from `trace-to-skill codex-report`
|
|
75
|
+
- Packaged zero-setup Codex issue-report demo from `trace-to-skill demo`
|
|
76
|
+
- OpenAI OSS support/application brief from `trace-to-skill oss-brief`
|
|
72
77
|
- Codex issue-cluster mapping in `docs/CODEX_ISSUE_MAP.md`
|
|
73
78
|
- GitHub Action outputs for doctor, AGENTS lint, GitHub context guard, benchmark, and scorecard modes
|
|
74
79
|
|
|
@@ -79,6 +84,7 @@ npx trace-to-skill suggest ./runs --target agents-md
|
|
|
79
84
|
- `schemas/doctor-result.schema.json`
|
|
80
85
|
- `schemas/redact-result.schema.json`
|
|
81
86
|
- `schemas/scorecard-result.schema.json`
|
|
87
|
+
- `schemas/oss-brief-result.schema.json`
|
|
82
88
|
|
|
83
89
|
## Related Keywords
|
|
84
90
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# OpenAI OSS Brief
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
| --- | --- |
|
|
5
|
+
| Repository | https://github.com/grnbtqdbyx-create/trace-to-skill |
|
|
6
|
+
| Package | trace-to-skill@0.1.48 |
|
|
7
|
+
| License | Apache-2.0 |
|
|
8
|
+
| Codex readiness | ready (100/100) |
|
|
9
|
+
| Benchmark | pass, 21 cases |
|
|
10
|
+
|
|
11
|
+
## Why This Repository Qualifies
|
|
12
|
+
|
|
13
|
+
trace-to-skill helps open-source maintainers adopt Codex safely by turning failed coding-agent runs into evidence-backed rules, reusable workflows, and CI gates. It supports real maintenance work: PR review, issue triage, release quality, MCP risk, prompt-injection defense, privacy-preserving trace sharing, and repeat failure reduction. The repository is ready, scores 100/100 on the local Codex readiness doctor, and ships a deterministic benchmark with 21 public fixture cases.
|
|
14
|
+
|
|
15
|
+
### 500-Character Version
|
|
16
|
+
|
|
17
|
+
> trace-to-skill helps open-source maintainers adopt Codex safely by turning failed coding-agent runs into evidence-backed rules, reusable workflows, and CI gates. It supports real maintenance work: PR review, issue triage, release quality, MCP risk, prompt-injection defense, privacy-preserving trace sharing, and repeat failure reduction. The repository is ready, scores 100/100 on the local Codex readiness doctor, and ships a deterministic benchmark with 21 public fixture cases.
|
|
18
|
+
|
|
19
|
+
## How API Credits Would Be Used
|
|
20
|
+
|
|
21
|
+
API credits would power optional maintainer workflows on top of the local deterministic scanner: classifying failed Codex sessions, generating candidate AGENTS.md rules or SKILL.md workflows, comparing before/after runs, and producing PR-ready triage reports. The local CLI remains free, dependency-light, and usable without API credits.
|
|
22
|
+
|
|
23
|
+
### 500-Character Version
|
|
24
|
+
|
|
25
|
+
> API credits would power optional maintainer workflows on top of the local deterministic scanner: classifying failed Codex sessions, generating candidate AGENTS.md rules or SKILL.md workflows, comparing before/after runs, and producing PR-ready triage reports. The local CLI remains free, dependency-light, and usable without API credits.
|
|
26
|
+
|
|
27
|
+
## Evidence
|
|
28
|
+
|
|
29
|
+
- Public repository: https://github.com/grnbtqdbyx-create/trace-to-skill
|
|
30
|
+
- One-command package: npx trace-to-skill@0.1.48
|
|
31
|
+
- Open-source license: Apache-2.0
|
|
32
|
+
- Codex readiness doctor: ready, 100/100, 0 failed checks.
|
|
33
|
+
- Public fixture benchmark: pass, 21 cases.
|
|
34
|
+
- Maintainer control: generated rules are suggestions, evidence is line-linked, and secrets can be redacted before sharing.
|
|
35
|
+
|
|
36
|
+
## Next Steps Before Submitting
|
|
37
|
+
|
|
38
|
+
- Add current GitHub stars, npm monthly downloads, downstream users, or adoption examples before submitting the application.
|
|
39
|
+
- Link the latest release, CI run, readiness report, and benchmark report as public proof.
|
|
40
|
+
- Describe your maintainer role and the recurring PR review, issue triage, release, or security workload this project reduces.
|
|
41
|
+
|
|
42
|
+
Run it locally:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
trace-to-skill oss-brief .
|
|
46
|
+
trace-to-skill oss-brief . --format json
|
|
47
|
+
```
|
package/docs/RELEASE.md
CHANGED
|
@@ -41,7 +41,7 @@ npx npm@11.16.0 trust github trace-to-skill \
|
|
|
41
41
|
2. Run `npm run check`.
|
|
42
42
|
3. Regenerate `docs/BENCHMARK.md` and `docs/SCORECARD.md` if benchmark fixtures changed.
|
|
43
43
|
4. Commit and push to `main`.
|
|
44
|
-
5. Create a GitHub release whose tag matches the package version, such as `v0.1.
|
|
44
|
+
5. Create a GitHub release whose tag matches the package version, such as `v0.1.48`.
|
|
45
45
|
6. Confirm the `Publish npm` workflow succeeds.
|
|
46
46
|
7. Confirm `npm view trace-to-skill version dist-tags.latest --json` shows the new version.
|
|
47
47
|
|
package/docs/USE_CASES.md
CHANGED
|
@@ -2,7 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
`trace-to-skill` is for maintainers who want coding agents to produce reviewable evidence instead of repeating the same mistakes.
|
|
4
4
|
|
|
5
|
-
## 1.
|
|
5
|
+
## 1. Zero-Setup Demo
|
|
6
|
+
|
|
7
|
+
Use this before collecting or redacting private traces.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx trace-to-skill demo
|
|
11
|
+
npx trace-to-skill demo --list
|
|
12
|
+
npx trace-to-skill demo latency-regression
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
What it proves:
|
|
16
|
+
|
|
17
|
+
- packaged fixtures can produce a real Codex issue report immediately
|
|
18
|
+
- maintainers can inspect the output shape before sharing any private log
|
|
19
|
+
- demos cover approval friction, latency, token burn, sensitive files, and prompt injection
|
|
20
|
+
|
|
21
|
+
See the generated demo output in [docs/DEMO.md](DEMO.md).
|
|
22
|
+
|
|
23
|
+
## 2. Codex Readiness Gate
|
|
6
24
|
|
|
7
25
|
Use this when a repository wants Codex-assisted pull requests, but maintainers need proof that the repo has basic guardrails.
|
|
8
26
|
|
|
@@ -21,7 +39,7 @@ What it proves:
|
|
|
21
39
|
Recommended CI surface:
|
|
22
40
|
|
|
23
41
|
```yaml
|
|
24
|
-
- uses: grnbtqdbyx-create/trace-to-skill@v0.1.
|
|
42
|
+
- uses: grnbtqdbyx-create/trace-to-skill@v0.1.48
|
|
25
43
|
with:
|
|
26
44
|
mode: all
|
|
27
45
|
doctor-threshold: "85"
|
|
@@ -31,7 +49,7 @@ Recommended CI surface:
|
|
|
31
49
|
github-token: ${{ github.token }}
|
|
32
50
|
```
|
|
33
51
|
|
|
34
|
-
##
|
|
52
|
+
## 3. AGENTS.md And MCP Hygiene
|
|
35
53
|
|
|
36
54
|
Use this before giving Codex broad repository access.
|
|
37
55
|
|
|
@@ -51,7 +69,7 @@ This checks:
|
|
|
51
69
|
|
|
52
70
|
The goal is not to ban powerful tools. The goal is to make trust boundaries visible before an agent acts.
|
|
53
71
|
|
|
54
|
-
##
|
|
72
|
+
## 4. Sandbox And Permission Failure Triage
|
|
55
73
|
|
|
56
74
|
Use this when Codex cannot start tools, apply patches, or write to the workspace because sandbox setup or permissions fail.
|
|
57
75
|
|
|
@@ -61,7 +79,7 @@ npx trace-to-skill analyze ./runs --format json
|
|
|
61
79
|
|
|
62
80
|
This catches signals such as Windows sandbox setup refresh failures, `os error 740`, `CodexSandboxOffline` ownership drift, ACL denial, approval-policy mismatch, and Full Access sessions behaving like workspace-write or on-request mode.
|
|
63
81
|
|
|
64
|
-
##
|
|
82
|
+
## 5. Codex Auth And Connectivity Triage
|
|
65
83
|
|
|
66
84
|
Use this when Codex cannot log in, exchange an auth token, stream a response, or connect through a container, proxy, VPN, corporate CA, IPv6 network, or Cloudflare challenge.
|
|
67
85
|
|
|
@@ -71,7 +89,7 @@ npx trace-to-skill analyze ./runs --format json
|
|
|
71
89
|
|
|
72
90
|
This catches signals such as `token_exchange_failed`, `auth.openai.com/oauth/token`, `codex_login::server`, `cf-mitigated: challenge`, missing `ca-certificates`, `update-ca-certificates`, `CODEX_CA_CERTIFICATE`, IPv6 fallback evidence, proxy/MITM TLS failures, and `stream disconnected before completion` on `chatgpt.com/backend-api/codex/responses`.
|
|
73
91
|
|
|
74
|
-
##
|
|
92
|
+
## 6. Codex Mobile And Remote-Control Route Health
|
|
75
93
|
|
|
76
94
|
Use this when Codex mobile, SSH remote, or desktop remote-control says it is connected but commands do not reach the expected host, workspace, or app-server.
|
|
77
95
|
|
|
@@ -81,7 +99,7 @@ npx trace-to-skill analyze ./runs --format json
|
|
|
81
99
|
|
|
82
100
|
This catches signals such as `Waiting for desktop`, `Directory: Unavailable`, stale `server_name` enrollment, stale remote-control listener, `127.0.0.1:14567`, missing cached helper files such as `codex-windows-sandbox-setup.exe` or `codex-command-runner.exe`, empty backend environments, stale Android session lists, and temporary recovery after re-pairing or listener restart.
|
|
83
101
|
|
|
84
|
-
##
|
|
102
|
+
## 7. Codex MCP Runtime Triage
|
|
85
103
|
|
|
86
104
|
Use this when MCP tools are configured and visible, but Codex cannot actually call them at runtime.
|
|
87
105
|
|
|
@@ -91,7 +109,7 @@ npx trace-to-skill analyze ./runs --format json
|
|
|
91
109
|
|
|
92
110
|
This catches signals such as `user cancelled MCP tool call`, `request_user_input is not supported in exec mode`, `Approve app tool call?`, `tool_call_mcp_elicitation`, routed callable names like `mcp__node_repl__js` becoming `unsupported call`, deferred discovery dropping namespace or `serverName`, `tools/list` succeeding while Codex routing fails, and stdio transport lifecycle failures such as `Transport closed`, `stdin_end`, `stdin_close`, `transport_close`, or stderr backpressure.
|
|
93
111
|
|
|
94
|
-
##
|
|
112
|
+
## 8. Codex Resume And Session State Triage
|
|
95
113
|
|
|
96
114
|
Use this when long Codex sessions become difficult to resume, Desktop history rendering gets sluggish, or local state migrations break goals/projects/history.
|
|
97
115
|
|
|
@@ -101,7 +119,7 @@ npx trace-to-skill analyze ./runs --format json
|
|
|
101
119
|
|
|
102
120
|
This catches signals such as `codex resume` picker hangs, `codex resume <id>` working while the picker freezes, large `rollout-*.jsonl` histories, high JSONL line and `response_item` / `event_msg` / `function_call` counts, large `input_image` payloads, slow `thread/resume` and `thread/goal/get` timings, `Could not load archived chats`, resume compression dropping the last 3-5 turns, `state_5.sqlite` / `goals_1.sqlite` migration mismatches, `no such table: thread_goals`, stale `projectless-thread-ids`, and `thread-workspace-root-hints` reverting after restart.
|
|
103
121
|
|
|
104
|
-
##
|
|
122
|
+
## 9. Codex Token Burn Attribution
|
|
105
123
|
|
|
106
124
|
Use this when Codex usage drains faster than expected and the trace needs to separate useful model work from orchestration overhead.
|
|
107
125
|
|
|
@@ -112,7 +130,7 @@ npx trace-to-skill codex-report ./runs --output openai-codex-issue.md
|
|
|
112
130
|
|
|
113
131
|
This catches signals such as tokens `burning very fast`, usage dropping by visible percentages after one or two prompts, weekly allowance depletion, 5-hour usage reaching 0%, large `input` plus `cached input` totals, `write_stdin` empty polling, background commands repeatedly reporting no new output, idle app usage, compaction tax, retry/tool loops, and missing attribution between normal turns, compaction, background polling, subagents, and retries.
|
|
114
132
|
|
|
115
|
-
##
|
|
133
|
+
## 10. Quota And Usage-Limit Evidence
|
|
116
134
|
|
|
117
135
|
Use this when Codex blocks a prompt with a usage-limit message but another surface still shows remaining quota.
|
|
118
136
|
|
|
@@ -122,7 +140,7 @@ npx trace-to-skill analyze ./runs --format json
|
|
|
122
140
|
|
|
123
141
|
This catches traces where `/status` or the usage page shows remaining 5h or weekly quota, accounts appear to share limits unexpectedly, a Team account inherits a Plus account's limit state, or quota reset times jump after logout/login.
|
|
124
142
|
|
|
125
|
-
##
|
|
143
|
+
## 11. Codex Resource Leak Evidence
|
|
126
144
|
|
|
127
145
|
Use this when Codex Desktop, the VS Code extension, renderer, app-server, GPU process, shell snapshot, or helper process keeps burning local resources after the useful work should be idle.
|
|
128
146
|
|
|
@@ -135,7 +153,7 @@ This catches signals such as high `Code Helper (Renderer)` or `Code Helper (Plug
|
|
|
135
153
|
|
|
136
154
|
Include process names/PIDs, CPU/GPU/RSS samples over time, log-loop snippets, workspace Git-root state, animation/reduce-motion state, and whether closing the panel/app, killing exact PIDs, `git init`, rollback, or restart clears the leak.
|
|
137
155
|
|
|
138
|
-
##
|
|
156
|
+
## 12. OpenAI Codex Issue Report
|
|
139
157
|
|
|
140
158
|
Use this when you want to file or update an OpenAI/Codex issue with a concise, evidence-backed report instead of pasting a full transcript.
|
|
141
159
|
|
|
@@ -148,7 +166,7 @@ The report includes the likely Codex failure class, line-linked evidence, diagno
|
|
|
148
166
|
|
|
149
167
|
For a cluster-to-command map of current Codex issue patterns, see [CODEX_ISSUE_MAP.md](CODEX_ISSUE_MAP.md).
|
|
150
168
|
|
|
151
|
-
##
|
|
169
|
+
## 13. Sensitive File Access Evidence
|
|
152
170
|
|
|
153
171
|
Use this when a trace suggests an agent read, attached, uploaded, diffed, or indexed credential-bearing files.
|
|
154
172
|
|
|
@@ -161,7 +179,7 @@ This catches signals such as `.env`, `.env.production`, `.npmrc`, `.pypirc`, `.n
|
|
|
161
179
|
|
|
162
180
|
Before publishing evidence, run `trace-to-skill redact` and attach only redacted excerpts plus the file path/class.
|
|
163
181
|
|
|
164
|
-
##
|
|
182
|
+
## 14. GitHub Context Guard
|
|
165
183
|
|
|
166
184
|
Use this before an agent reads untrusted GitHub text.
|
|
167
185
|
|
|
@@ -178,7 +196,7 @@ Use it when:
|
|
|
178
196
|
- a bot asks Codex to triage untrusted user reports
|
|
179
197
|
- logs or comments might contain instructions like "ignore previous instructions" or "print secrets"
|
|
180
198
|
|
|
181
|
-
##
|
|
199
|
+
## 15. Failed Agent Run To Reviewable Rule
|
|
182
200
|
|
|
183
201
|
Use this when a coding agent made a repeated workflow mistake.
|
|
184
202
|
|
|
@@ -196,7 +214,7 @@ Recommended maintainer loop:
|
|
|
196
214
|
4. Copy only evidence-backed rules into the real policy file.
|
|
197
215
|
5. Run `eval` or `scorecard` in CI so the same failure does not silently return.
|
|
198
216
|
|
|
199
|
-
##
|
|
217
|
+
## 16. Privacy-Preserving Adoption
|
|
200
218
|
|
|
201
219
|
Use this when you want public evidence without leaking private traces.
|
|
202
220
|
|
package/llms.txt
CHANGED
|
@@ -43,6 +43,7 @@ failed agent run -> failure class -> evidence-backed AGENTS.md/SKILL.md suggesti
|
|
|
43
43
|
- Use cases: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/USE_CASES.md
|
|
44
44
|
- Codex issue map: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/CODEX_ISSUE_MAP.md
|
|
45
45
|
- Discovery summary: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/DISCOVERY.md
|
|
46
|
+
- Demo output: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/DEMO.md
|
|
46
47
|
- Adoption guide: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/ADOPTION_GUIDE.md
|
|
47
48
|
- Failure taxonomy: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/FAILURE_TAXONOMY.md
|
|
48
49
|
- OpenAI OSS strategy: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/OPENAI_OSS_STRATEGY.md
|
|
@@ -55,6 +56,7 @@ failed agent run -> failure class -> evidence-backed AGENTS.md/SKILL.md suggesti
|
|
|
55
56
|
|
|
56
57
|
```bash
|
|
57
58
|
npx trace-to-skill doctor .
|
|
59
|
+
npx trace-to-skill demo
|
|
58
60
|
npx trace-to-skill lint-agents .
|
|
59
61
|
npx trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"
|
|
60
62
|
npx trace-to-skill redact ./runs --output redacted-runs
|
|
@@ -91,6 +93,7 @@ npx trace-to-skill init --comment --sarif
|
|
|
91
93
|
## Search phrases this project should answer
|
|
92
94
|
|
|
93
95
|
- Codex readiness checker for open-source repositories
|
|
96
|
+
- Codex issue report demo without private traces
|
|
94
97
|
- AGENTS.md linter for Codex and Claude Code
|
|
95
98
|
- turn failed agent runs into AGENTS.md rules
|
|
96
99
|
- prompt injection guard for GitHub issue and PR comments
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trace-to-skill",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.48",
|
|
4
4
|
"description": "Turn failed AI coding-agent runs into reusable AGENTS.md rules, SKILL.md files, and eval evidence.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -22,8 +22,10 @@
|
|
|
22
22
|
"docs/AGENTS_LINT.md",
|
|
23
23
|
"docs/BENCHMARK.md",
|
|
24
24
|
"docs/CODEX_ISSUE_MAP.md",
|
|
25
|
+
"docs/DEMO.md",
|
|
25
26
|
"docs/DISCOVERY.md",
|
|
26
27
|
"docs/FAILURE_TAXONOMY.md",
|
|
28
|
+
"docs/OPENAI_OSS_BRIEF.md",
|
|
27
29
|
"docs/RELEASE.md",
|
|
28
30
|
"docs/SCORECARD.md",
|
|
29
31
|
"docs/USE_CASES.md",
|
|
@@ -39,7 +41,7 @@
|
|
|
39
41
|
"build": "tsc -p tsconfig.json",
|
|
40
42
|
"clean": "rm -rf dist coverage",
|
|
41
43
|
"test": "npm run build && node --test dist/tests/*.test.js",
|
|
42
|
-
"check": "npm run test && node dist/src/cli.js doctor . --format json > /tmp/trace-to-skill-doctor.json && node dist/src/cli.js lint-agents . --format json > /tmp/trace-to-skill-agents-lint.json && node dist/src/cli.js analyze fixtures --format json > /tmp/trace-to-skill-smoke.json && node dist/src/cli.js suggest fixtures --target agents-md > /tmp/trace-to-skill-suggest.md && node dist/src/cli.js benchmark --format json > /tmp/trace-to-skill-benchmark.json && node dist/src/cli.js scorecard . --format json > /tmp/trace-to-skill-scorecard.json",
|
|
44
|
+
"check": "npm run test && node dist/src/cli.js doctor . --format json > /tmp/trace-to-skill-doctor.json && node dist/src/cli.js lint-agents . --format json > /tmp/trace-to-skill-agents-lint.json && node dist/src/cli.js analyze fixtures --format json > /tmp/trace-to-skill-smoke.json && node dist/src/cli.js suggest fixtures --target agents-md > /tmp/trace-to-skill-suggest.md && node dist/src/cli.js demo --format json > /tmp/trace-to-skill-demo.json && node dist/src/cli.js benchmark --format json > /tmp/trace-to-skill-benchmark.json && node dist/src/cli.js scorecard . --format json > /tmp/trace-to-skill-scorecard.json && node dist/src/cli.js oss-brief . --format json > /tmp/trace-to-skill-oss-brief.json",
|
|
43
45
|
"prepack": "npm run build",
|
|
44
46
|
"prepare": "npm run build"
|
|
45
47
|
},
|
|
@@ -85,6 +87,9 @@
|
|
|
85
87
|
"codex-resume",
|
|
86
88
|
"codex-issue-report",
|
|
87
89
|
"openai-triage",
|
|
90
|
+
"openai-oss",
|
|
91
|
+
"oss-maintainers",
|
|
92
|
+
"codex-demo",
|
|
88
93
|
"codex-token-burn",
|
|
89
94
|
"codex-usage",
|
|
90
95
|
"codex-resource-leak",
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/grnbtqdbyx-create/trace-to-skill/main/schemas/oss-brief-result.schema.json",
|
|
4
|
+
"title": "trace-to-skill OssBriefResult",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"generatedAt",
|
|
9
|
+
"root",
|
|
10
|
+
"scorecard",
|
|
11
|
+
"qualification",
|
|
12
|
+
"apiCredits",
|
|
13
|
+
"evidence",
|
|
14
|
+
"nextSteps"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"generatedAt": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"format": "date-time"
|
|
20
|
+
},
|
|
21
|
+
"root": {
|
|
22
|
+
"type": "string"
|
|
23
|
+
},
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "string"
|
|
26
|
+
},
|
|
27
|
+
"packageName": {
|
|
28
|
+
"type": "string"
|
|
29
|
+
},
|
|
30
|
+
"packageVersion": {
|
|
31
|
+
"type": "string"
|
|
32
|
+
},
|
|
33
|
+
"license": {
|
|
34
|
+
"type": "string"
|
|
35
|
+
},
|
|
36
|
+
"scorecard": {
|
|
37
|
+
"$ref": "#/$defs/scorecard"
|
|
38
|
+
},
|
|
39
|
+
"qualification": {
|
|
40
|
+
"$ref": "#/$defs/briefText"
|
|
41
|
+
},
|
|
42
|
+
"apiCredits": {
|
|
43
|
+
"$ref": "#/$defs/briefText"
|
|
44
|
+
},
|
|
45
|
+
"evidence": {
|
|
46
|
+
"type": "array",
|
|
47
|
+
"items": {
|
|
48
|
+
"type": "string"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"nextSteps": {
|
|
52
|
+
"type": "array",
|
|
53
|
+
"items": {
|
|
54
|
+
"type": "string"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"$defs": {
|
|
59
|
+
"scorecard": {
|
|
60
|
+
"type": "object",
|
|
61
|
+
"additionalProperties": false,
|
|
62
|
+
"required": [
|
|
63
|
+
"passed",
|
|
64
|
+
"doctorScore",
|
|
65
|
+
"doctorStatus",
|
|
66
|
+
"benchmarkStatus",
|
|
67
|
+
"benchmarkCases"
|
|
68
|
+
],
|
|
69
|
+
"properties": {
|
|
70
|
+
"passed": {
|
|
71
|
+
"type": "boolean"
|
|
72
|
+
},
|
|
73
|
+
"doctorScore": {
|
|
74
|
+
"type": "integer",
|
|
75
|
+
"minimum": 0,
|
|
76
|
+
"maximum": 100
|
|
77
|
+
},
|
|
78
|
+
"doctorStatus": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"enum": [
|
|
81
|
+
"ready",
|
|
82
|
+
"needs-attention"
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"benchmarkStatus": {
|
|
86
|
+
"type": "string",
|
|
87
|
+
"enum": [
|
|
88
|
+
"pass",
|
|
89
|
+
"fail"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"benchmarkCases": {
|
|
93
|
+
"type": "integer",
|
|
94
|
+
"minimum": 0
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"briefText": {
|
|
99
|
+
"type": "object",
|
|
100
|
+
"additionalProperties": false,
|
|
101
|
+
"required": [
|
|
102
|
+
"long",
|
|
103
|
+
"max500"
|
|
104
|
+
],
|
|
105
|
+
"properties": {
|
|
106
|
+
"long": {
|
|
107
|
+
"type": "string"
|
|
108
|
+
},
|
|
109
|
+
"max500": {
|
|
110
|
+
"type": "string",
|
|
111
|
+
"maxLength": 500
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|